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

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

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

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
7. DoctorRoza 02.12.19 09:46 Сейчас в теме
Автору спасибо! Порадовал!
kuzyara; YPermitin; +2 Ответить
9. dhurricane 02.12.19 11:35 Сейчас в теме
Не ожидал, конечно, подвоха в 15-ом задании. :-) Вы специально написали в словах букву "е" латиницей и кириллицей?
10. YPermitin 8555 02.12.19 11:38 Сейчас в теме
(9) да. Вот только подсветка синтаксиса на ИС меня выдает :)))
11. dhurricane 02.12.19 11:40 Сейчас в теме
(10) Сколько не глядел, не увидел разницы. Только отладчик подсказал.
12. YPermitin 8555 02.12.19 11:42 Сейчас в теме
(11) тогда я рад, что не сделал вашу жизнь проще :)))))
Free1CforAll; acanta; +2 Ответить
13. Quantum81 02.12.19 13:10 Сейчас в теме
Супер!
Показывает как мы все любим отладчик. Такая инфа в голове вообще не держится :(
davdykin; YPermitin; +2 Ответить
14. YPermitin 8555 02.12.19 13:27 Сейчас в теме
15. sergvagner2018 02.12.19 14:07 Сейчас в теме
(0) Как-то я приуныл после задач :))
YPermitin; acanta; +2 Ответить
16. herfis 365 02.12.19 14:18 Сейчас в теме
Думаю, нет смысла давать ответы на задачи, которые легко проверить в конфигураторе.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

Не создавать же публикации в книжном стиле.
46. ids79 5506 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.Количество());

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

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

Мой ответ



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

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

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

Про потоки - изначально я хотел сделать другую задачу, но получилась эта :D
54. Quantum81 04.12.19 11:03 Сейчас в теме
Кстати, шутки шутками, а не давно едва не пришлось решать задачу с потоками.
Необходимо было передавать большие файлы(видео) с сервера на клиент. Когда одной командой получаешь из временного хранилища, то всё замирает и никак не реагирует. Уже собирался резать файл на кусочки двоичных данных с помощью потоков и раскладывать по временным хранилищам и на клиент отправлять массив адресов хранилищ.
Но обошлись предупреждающей табличкой :)
YPermitin; +1 Ответить
59. batsy66 56 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 174 05.12.19 22:24 Сейчас в теме
В задаче 2 конструктор Новый Массив(0) у меня выдает ошибку. Релиз 8.3.13. Надо так : Новый Массив или Новый Массив(1)
64. bulpi 174 05.12.19 22:57 Сейчас в теме
Задача 11 :
ХранилищеОбщихНастроек.Сохранить("МоеЗначение", "МойКлюч", Неопределено);

Плохой пример. В результате получается Неопределено . И неясно, это мы достали Неопределено из хранилища, или там просто ничего нет. Хороший пример :
ХранилищеОбщихНастроек.Сохранить("МоеЗначение", "МойКлюч", 1);
65. bulpi 174 05.12.19 23:24 Сейчас в теме
Задача 17:
Похоже, в этой строке должно быть что-то более интересное :
Запись.ЗначениеПоиска = "ЗначениеR39;поиска";
Иначе все очевидно.
66. bulpi 174 05.12.19 23:47 Сейчас в теме
Задача 26 очевидно некорректна. Результат зависит от многих условий.
67. YPermitin 8555 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 2175 07.12.19 10:45 Сейчас в теме
Блин, я думал тут задачи реальные типа найти циклические сцылки, а тут просто задачи на интерпретацию кода. Я только последнюю глянул - там ложь будет. Печаль...
YPermitin; +1 Ответить
70. YPermitin 8555 07.12.19 10:49 Сейчас в теме
(69) ждем более качественный материал от Вас теперь)))
72. logarifm 1076 09.12.19 12:34 Сейчас в теме
Надо было выложить обработку с этими задачами, а то если честно проверять результат лень :) надо открывать конфигуратор пилить обработку.
YPermitin; +1 Ответить
73. YPermitin 8555 09.12.19 12:46 Сейчас в теме
(72) для ленивых уже сделали отдельную публикацию))) Спасибо коллеге)

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

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

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

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

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