0. YPermitin 6798 02.12.19 07:55 Сейчас в теме

30 задач. Странных и не очень

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. VmvLer 02.12.19 09:31 Сейчас в теме
если бы на инфостаре было "поле чудес", то тс стоял бы с микрофоном и принимал банки с огурцами.

чес-слово, представленные задачи что-то а ля кроссворда для пенсионера 1С-ка, которому не хрен заняться и он сушит себе развивает себе мозг.

Как правило, в реальной задаче, отладчик покажет где косяк если лень было включать мозг при написании кода.
Просто так решать эти кроссворды имеет смысл на пенсии.
wolfsoft; Aili; asved.ru; CodeNull; narutouzumaki_13; user764477; +6 Ответить
2. YPermitin 6798 02.12.19 09:33 Сейчас в теме
(1) позитив детектед!
Чародей; +1 Ответить
55. GreenDragon 04.12.19 11:08 Сейчас в теме
(2) детектив позитивед.

Юрий, мне показалось, что в заголовке отсылка к Елене Рассохиной?
56. YPermitin 6798 04.12.19 11:12 Сейчас в теме
57. GreenDragon 04.12.19 11:14 Сейчас в теме
(56) значит показалось. g "Неновости". В самом начале каждого выпуска фраза про "странные и не очень".
58. YPermitin 6798 04.12.19 11:20 Сейчас в теме
(57) что-то знакомое, но не могу вспомнить. Вечером гляну)

Плагиат сделал случайно)))
60. YPermitin 6798 04.12.19 18:03 Сейчас в теме
(57) посмотрел.

- Совпадение?
- Не думаю :)

Видимо где-то услышал и "под корку" записалось.
71. wolfsoft 2420 09.12.19 09:40 Сейчас в теме
Женский вариант: "Корову бы ей, а лучше две" (с)
Мужской вариант: "Когда коту нечего делать, он ..." (с)
3. Hans 1 02.12.19 09:36 Сейчас в теме
сделай обработку в которой будет весь этот код. Либо под спойлером ответы с комментариями.
4. YPermitin 6798 02.12.19 09:38 Сейчас в теме
(3) а зачем?

Тогда весь смысл скатиться к "скачать и потыкать" кнопки.
work.sable; +1 Ответить
5. Hans 1 02.12.19 09:41 Сейчас в теме
(4)весь смысл будет - сначала на бумажке ответить, а потом скачать и проверить. А по твоей схеме каждый на бумажке ответит, потом будет все это пилить в обработке, потом проверять.
narutouzumaki_13; +1 Ответить
6. YPermitin 6798 02.12.19 09:44 Сейчас в теме
(5) лучше самому. Ответов смысла нет добавлять, там же все проще некуда.
work.sable; +1 Ответить
18. PLAstic 223 02.12.19 16:33 Сейчас в теме
(6) Да всем будет лень вбивать это всё в обработку. Я порешал 1-10, хотел глянуть ответы и плюнул, т.к. прочитал, что их не будет. Жаль потраченное время, хотя идея неплохая была.
Hans; narutouzumaki_13; +2 Ответить
21. YPermitin 6798 02.12.19 16:40 Сейчас в теме
7. DoctorRoza 02.12.19 09:46 Сейчас в теме
Автору спасибо! Порадовал!
kuzyara; YPermitin; +2 Ответить
9. dhurricane 02.12.19 11:35 Сейчас в теме
Не ожидал, конечно, подвоха в 15-ом задании. :-) Вы специально написали в словах букву "е" латиницей и кириллицей?
10. YPermitin 6798 02.12.19 11:38 Сейчас в теме
(9) да. Вот только подсветка синтаксиса на ИС меня выдает :)))
11. dhurricane 02.12.19 11:40 Сейчас в теме
(10) Сколько не глядел, не увидел разницы. Только отладчик подсказал.
12. YPermitin 6798 02.12.19 11:42 Сейчас в теме
(11) тогда я рад, что не сделал вашу жизнь проще :)))))
Free1CforAll; acanta; +2 Ответить
13. Quantum81 02.12.19 13:10 Сейчас в теме
Супер!
Показывает как мы все любим отладчик. Такая инфа в голове вообще не держится :(
davdykin; YPermitin; +2 Ответить
14. YPermitin 6798 02.12.19 13:27 Сейчас в теме
15. sergvagner2018 02.12.19 14:07 Сейчас в теме
(0) Как-то я приуныл после задач :))
YPermitin; acanta; +2 Ответить
16. herfis 290 02.12.19 14:18 Сейчас в теме
Думаю, нет смысла давать ответы на задачи, которые легко проверить в конфигураторе.

Как это нету? Я готов заплатить старманю, просто чтобы не тратить время на проверку своих ожиданий.
Самому проверять лениво :)
TreeDogNight; davdykin; YPermitin; PLAstic; +4 Ответить
17. YPermitin 6798 02.12.19 14:21 Сейчас в теме
(16) возьмите себя в руки :)

Да просто это будут нудные ответы. Такле за стартмани стыдно отдавать.
19. PLAstic 223 02.12.19 16:35 Сейчас в теме
(17) Вот-вот, уже прямым текстом говорят, что чтобы оставить позитивное впечатление, даже за баксы готовы узнать правильные ответы.
20. YPermitin 6798 02.12.19 16:38 Сейчас в теме
(19) да смысл полностью теряется. Возьмите мои деньги, только не просите ответов))))
22. SantiouS 02.12.19 16:40 Сейчас в теме
Мои ответы (СПОЙЛЕР!)
25. SantiouS 02.12.19 17:22 Сейчас в теме
(22)
Продолжение (СПОЙЛЕР!)
34. YPermitin 6798 02.12.19 19:08 Сейчас в теме
(25) Круто! По некоторым задачам дал комментарий.
А так все супер)


Небольшой комментарий
SantiouS; +1 Ответить
23. SantiouS 02.12.19 16:59 Сейчас в теме
Подскажите почему в 22 задаче ошибка:
"При выборе данных из объекта в запросе не могут присутствовать соединения и объединения".
Не могу осознать как это работает :)
27. vadim1011985 73 02.12.19 17:27 Сейчас в теме
(23) При выборе из внешних источников (из ТЗ например ) нельзя объединять или соединять запросы - только помещение во временную таблицу. В запросе же происходит скрытое объединение , так как данные тянутся из двух источников
SantiouS; +1 Ответить
30. YPermitin 6798 02.12.19 18:51 Сейчас в теме
(27) все так.

Это можно объяснить техническими особенностями платформы.
Запрос к таблице значений - это такие действия платформы:
1. Создание временной таблицы
2. Загрузка данных в эту таблицу множеством запросов INSERT (в новых версиях платформы вроде бы поведение изменилось).
3. Пользуемся.

Но делать на этом этапе соединения с другими таблицами было бы неправильно или создало бы другие сложности.
Думаю, поэтому разработчики 1С и ввели эти ограничения.
24. Painted 29 02.12.19 17:19 Сейчас в теме
Первую задачу можно упростить до
Сообщить((Новый Структура) = (Новый Структура));
И вторую с третьей также.

Не?
26. SantiouS 02.12.19 17:24 Сейчас в теме
(24) Верно (на всякий случай даже в конфигураторе проверил).
Как я понимаю, то проверяются ссылки на структуру в памяти и они разные?
31. YPermitin 6798 02.12.19 18:53 Сейчас в теме
(24) можно, но какой смысл?

В том плане что запись кода в одну строку смысла не меняет, а иногда может и усложнить его чтение.

Особого смысла в этом тут нет.
41. Painted 29 03.12.19 09:32 Сейчас в теме
(31)
можно, но какой смысл?
Код можно запустить в консоли кода. В вашем варианте придется городить целую обработку.
28. herfis 290 02.12.19 17:30 Сейчас в теме
Тю. Мне сначала показалось, что все задачи с подковыркой. Типа как puzzlers в других ЯП.
32. YPermitin 6798 02.12.19 18:54 Сейчас в теме
(28) рад, что Вы со всеми задачами сразу справились без отладки.
29. Rustig 1284 02.12.19 18:37 Сейчас в теме
Возврат ((Новый Структура) = (Новый Структура));

Выскажу свое мнение по задаче №1.
НЕ проверял на платформе.

Только свое мнение. Обсуждение приветствуется.

Команда Новый Структура - по идее создает новый объект с типом "Структура", при этом в памяти резервируется ячейка памяти (адрес) под этот объект...
Поэтому в итоге мы сравниваем два объекта с разной адресацией в памяти. Значит на выходе сравнение должно дать или ошибку или Ложь - так как объекты разные. Ошибку может дать в связи с тем, что мы не знаем что заложено в платформу при сравнении подобных объектов.
Возможно при сравнении подобных объектов вызывается исключение, и в результате появляется ошибка.
YPermitin; +1 Ответить
33. YPermitin 6798 02.12.19 18:55 Сейчас в теме
(29) да, все так.

Мы тут сравниваем абсолютно разные объекты и платформа нам говорит, что они не равны.

Чем-то похоже на сравнение объектов в каком-нибудь C#.
35. PLAstic 223 02.12.19 21:59 Сейчас в теме
36. YPermitin 6798 03.12.19 02:18 Сейчас в теме
37. MikhailDr 03.12.19 08:02 Сейчас в теме
Не хватает комментариев к задачкам. По многим я так и не понял, почему платформа ведет себя именно так, а не иначе. Но в целом очень занимательно.
YPermitin; +1 Ответить
38. YPermitin 6798 03.12.19 08:45 Сейчас в теме
(37) спасибо.

Можете написать вопросы здесь.
39. ids79 4670 03.12.19 08:54 Сейчас в теме
Большинство задач - ожидаемо. Но некоторые интересные, спасибо.
Задача 21 - забыл, что результат временной таблицы одну строку возвращает )).
Ну и задача 15 - классика!
YPermitin; +1 Ответить
40. Lenten 24 03.12.19 09:21 Сейчас в теме
а почему в 24 значение не поменялось
YPermitin; +1 Ответить
43. YPermitin 6798 03.12.19 10:29 Сейчас в теме
(40) потому что в вызываемой функции присутствует Знач. То есть передача параметра осуществляется по значению, копированием в память на время вызова.
45. Rabot 75 03.12.19 11:10 Сейчас в теме
(40) "Задача24НаСервере(Знач ПереданноеЗначение)" - ключевое слово "Знач" перед параметром означает, что изменение его в процедуре/функции не влияет на переменную в источнике, получается такой параметр это не ссылка не переменную, а её копия.
Не знаю как это "по-научному" объяснить)
PLAstic; Lenten; +2 Ответить
42. akimych 187 03.12.19 10:20 Сейчас в теме
P.S. Лайк, репост, подписка!
Вот эта фраза к чему?
Инфостарт теперь в инстастарт превращается...
44. YPermitin 6798 03.12.19 10:30 Сейчас в теме
(42) это называется - юмор.

Не создавать же публикации в книжном стиле.
46. ids79 4670 03.12.19 14:10 Сейчас в теме
В продолжении задачки 24 вариант с объектом.
Там не все так просто:

&НаКлиенте
Процедура ПередачаПоСсылкеКлиент(Параметр)
Список= Новый СписокЗначений;
Список.Добавить("привет");
Список.Добавить("привет");
Параметр = Список;
КонецПроцедуры

&НаКлиенте
Процедура ПередачаПоЗначениюКлиент1(Знач Параметр)
Список= Новый СписокЗначений;
Список.Добавить("привет");
Список.Добавить("привет");
Параметр = Список;
КонецПроцедуры

&НаКлиенте
Процедура ПередачаПоЗначениюКлиент2(Знач Параметр)
Параметр.Добавить("привет");
КонецПроцедуры

&НаСервере
Процедура ПередачаПоСсылкеСервер(Параметр)
Параметр.Добавить("привет");
КонецПроцедуры

&НаСервере
Процедура ПередачаПоЗначениюСервер(Знач Параметр)
Параметр.Добавить("привет");
КонецПроцедуры

&НаКлиенте
Процедура ПередачаПараметровКлиентСервер()

Список1= Новый СписокЗначений;
Список1.Добавить("привет");
Список2 = Список1.Скопировать();
Список3 = Список1.Скопировать();
Список4 = Список1.Скопировать();
Список5 = Список1.Скопировать();

ПередачаПоСсылкеКлиент(Список1);
ПередачаПоЗначениюКлиент1(Список2);
ПередачаПоЗначениюКлиент2(Список3);
ПередачаПоСсылкеСервер(Список4);
ПередачаПоЗначениюСервер(Список5);

Сообщить(Список1.Количество());
Сообщить(Список2.Количество());
Сообщить(Список3.Количество());
Сообщить(Список4.Количество());
Сообщить(Список5.Количество());

КонецПроцедуры

У кого какие варианты?
YPermitin; +1 Ответить
49. YPermitin 6798 03.12.19 19:40 Сейчас в теме
(46) я честно постарался в уме прокрутить, а потом проверил в отладчике.
Все таки промахнулся)))

Мой ответ



Ошибся в методе "ПередачаПоСсылкеСервер", почему-то решил что в итоге список не изменится :) Явная ошибка)))

Правильный ответ
50. dhurricane 03.12.19 19:50 Сейчас в теме
(46) Вроде так:
Список1 - 2 (инициализировали переданный в процедуру список новым с двумя значениями)
Список2 - 1 (инициализировали параметр, оригинал остался с одним значением)
Список3 - 2 (добавили в список элемент по переданной ссылке)
Список4 - 2 (список скопировался на сервер, там ему добавили элемент, затем список вернулся обратно)
Список5 - 1 (аналогично предыдущему пункту, только сам список не возвращается на клиент)

За ликбез по последнему пункту спасибо Андрею Овсянкину.
ids79; YPermitin; +2 Ответить
51. YPermitin 6798 03.12.19 19:53 Сейчас в теме
53. ids79 4670 04.12.19 08:36 Сейчас в теме
(50)Все верно. Да, спасибо Андрею.
Небольшое дополнение:
Список1 - передаем ссылку на объект. В процедуре присваиваем ссылке ссылку на новый объект. В точке вызова имеем новую ссылку и новый объект.
Список2 - передаем копию ссылки, объект остается один. Присваиваем копии ссылки ссылку на новый объект. Ссылка в точке вызова и изначальный объект остаются без изменения.
Список3 - передаем копию ссылки, объект остается один. Меняем по копии ссылки сам объект. В точке вызова ссылка та же, объект изменен.
47. Quantum81 03.12.19 19:13 Сейчас в теме
у меня 11 ошибок. Если можно 15ую за ошибку считать. С толку в таком контексте может здорово сбить.
В 12 попался, а не должен был! :)
Про потоки это вообще что было ... :))))
YPermitin; +1 Ответить
48. YPermitin 6798 03.12.19 19:36 Сейчас в теме
(47) всего 11, это прям круче некуда)

Про потоки - изначально я хотел сделать другую задачу, но получилась эта :D
54. Quantum81 04.12.19 11:03 Сейчас в теме
Кстати, шутки шутками, а не давно едва не пришлось решать задачу с потоками.
Необходимо было передавать большие файлы(видео) с сервера на клиент. Когда одной командой получаешь из временного хранилища, то всё замирает и никак не реагирует. Уже собирался резать файл на кусочки двоичных данных с помощью потоков и раскладывать по временным хранилищам и на клиент отправлять массив адресов хранилищ.
Но обошлись предупреждающей табличкой :)
YPermitin; +1 Ответить
59. batsy66 55 04.12.19 16:34 Сейчас в теме
Закинул всё в обработку: infostart.ru/public/1163257/ Публикуется с разрешения автора
Hans; YPermitin; +2 Ответить
61. SlavaKron 04.12.19 22:58 Сейчас в теме
Как вам такое:
ТипЗнч(Метаданные.ПодпискиНаСобытия.ПодпискаНаСобытие1.Событие) = Тип("Строка")
Олсо, попробуйте такое на клиент передать. Фантомные боли 1С.
YPermitin; +1 Ответить
62. Hans 1 05.12.19 12:54 Сейчас в теме
16 правильных ответов.
YPermitin; +1 Ответить
63. bulpi 163 05.12.19 22:24 Сейчас в теме
В задаче 2 конструктор Новый Массив(0) у меня выдает ошибку. Релиз 8.3.13. Надо так : Новый Массив или Новый Массив(1)
64. bulpi 163 05.12.19 22:57 Сейчас в теме
Задача 11 :
ХранилищеОбщихНастроек.Сохранить("МоеЗначение", "МойКлюч", Неопределено);

Плохой пример. В результате получается Неопределено . И неясно, это мы достали Неопределено из хранилища, или там просто ничего нет. Хороший пример :
ХранилищеОбщихНастроек.Сохранить("МоеЗначение", "МойКлюч", 1);
65. bulpi 163 05.12.19 23:24 Сейчас в теме
Задача 17:
Похоже, в этой строке должно быть что-то более интересное :
Запись.ЗначениеПоиска = "ЗначениеR39;поиска";
Иначе все очевидно.
66. bulpi 163 05.12.19 23:47 Сейчас в теме
Задача 26 очевидно некорректна. Результат зависит от многих условий.
67. YPermitin 6798 06.12.19 06:16 Сейчас в теме
(66) по задачам все так и было задумано.

Вы молодец!
68. CSiER 29 06.12.19 08:24 Сейчас в теме
К 24 можно добавить:
&НаКлиенте
Процедура Команда1(Команда)
	стр = "Завтрак";
	Задача31НаСервере(стр, стр, стр);
	Сообщить(стр);
КонецПроцедуры

&НаСервере
Процедура Задача31НаСервере(Парам1, Парам2, Парам3)	
	Парам1 = "Обед";
	Парам2 = "Ужин";	
КонецПроцедуры
Показать

Объяснение
YPermitin; +1 Ответить
69. starik-2005 1998 07.12.19 10:45 Сейчас в теме
Блин, я думал тут задачи реальные типа найти циклические сцылки, а тут просто задачи на интерпретацию кода. Я только последнюю глянул - там ложь будет. Печаль...
YPermitin; +1 Ответить
70. YPermitin 6798 07.12.19 10:49 Сейчас в теме
(69) ждем более качественный материал от Вас теперь)))
72. logarifm 1063 09.12.19 12:34 Сейчас в теме
Надо было выложить обработку с этими задачами, а то если честно проверять результат лень :) надо открывать конфигуратор пилить обработку.
YPermitin; +1 Ответить
73. YPermitin 6798 09.12.19 12:46 Сейчас в теме
(72) для ленивых уже сделали отдельную публикацию))) Спасибо коллеге)

https://infostart.ru/public/1163257/
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Краснодар
зарплата от 70 000 руб.
Полный день

Старший консультант-аналитик 1С БИТ.Финанс
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 170 000 руб. до 200 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день