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

02.12.19

Разработка - Математика и алгоритмы

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

Цель статьи

Вы когда-нибудь проходили собеседование, на котором дают разного рода задачи с проверкой результата? Простой код, результат которого нужно объяснить. Мое мнение таково, что подобные задачи вряд ли могут дать полную картину о компетенциях разработчика, поэтому собеседование лучше проводить другими путями.

Но, подобные задачки могут быть интересными головоломками и в какой-то мере показать ту боль, что прошел разработчик за годы работы с платформой. А там, где может быть что-то интересное, почему бы не поразбираться.

В одной из предыдущих статей "Баг или фича? Неожиданное поведение платформы" мы коснулись нескольких особенностей в поведении платформы 1С. Баги это или фичи, трудно сказать. Решать это Вам. Сегодня мы рассмотрим 30 простых фрагментов кода, а Вам нужно будет сказать какой результат выполнения будет для каждой из них.

Нет, это не проверка Ваших знаний, компетенций, навыков и целеустремленности. Цель публикации - сбор интересных и не очень задач, над которыми было бы интересно посидеть, проверить на сколько предсказуемо работает платформа 1С с Вашей точки зрения. Можно, конечно, эти задачи показывать и на собеседовании, но лучше обсудите с кандидатом предыдущий опыт работы. Так будет намного содержательней.

А все что ниже - это больше для веселья!

Среда выполнения

Весь продемонстрированный далее код выполнялся на платформе 1С версии 8.3.13.1690 в клиент-серверном варианте работы, управляемые формы. Никаких особых настроек не выполнялось. Обычно код задачи делится на клиентский и серверный. Можете вставить фрагмент в управляемую форму и разбить процедуры и функции по контексту выполнения с помощью директив "&НаКлиенте" и "&НаСервере".

Думаю, что поведение кода в задачах будет одинаковым как для файловой, так и для клиент-серверной базы, поэтому если сервера у Вас под рукой нет, то это не повод не попробовать эти задачи решить. Плюс ко всему, сама версия платформы не должна стать причиной разного поведения, даже если у Вас старая добрая версия 8.3.5! В последнем случае только некоторые из задач не могут быть решены (там где работа с потоками, например).

В общем, ничего особенного. Просто берете и делаете :)

Задачи

Хватит болтать, пора действовать!

Сложность задач не зависит от раздела и номера, все перемешано. Сделано это специально, чтобы у Вас не было ожиданий сложности. Так ведь интересней!

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

 
 Задачи с 1 по 10
 
 Задачи с 11 по 20
 
 Задачи с 21 по 30

Так много кода! Так много задач! И так мало ответов!

Вам слово

Прошли весь путь и не нашли ответов? Все так. Думаю, нет смысла давать ответы на задачи, которые легко проверить в конфигураторе. Надеюсь, я смог хоть немного Вас запутать и улыбнуться.

 
 Небольшой комментарий от автора

Если в Ваших "чертогах разума" также есть интересные задачки или комментарии по задачам из статьи, то добро пожаловать в комментарии!

P.S. Лайк, репост, подписка!

Другие ссылки

Похожих тем не нашел, но если подскажите, то добавлю сюда.

Авторские разработки

Вступайте в нашу телеграмм-группу Инфостарт

программирование задачи проверка тестирование знания практика загадки головоломки баг фича

См. также

Механизмы платформы 1С Программист 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    14280    dsdred    73    

120

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    17179    bayselonarrend    21    

167

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    27749    SeiOkami    48    

139

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    19878    YA_418728146    8    

174

Механизмы платформы 1С Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    37971    SeiOkami    33    

122

Механизмы платформы 1С Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.

27.03.2023    10532    SeiOkami    10    

147

Механизмы платформы 1С Программист 1С v8.3 Бесплатно (free)

Давайте разберемся в механизме «История данных» и поэкспериментируем для наглядности. Сравним «Версионирование объектов» и «Историю данных».

06.03.2023    47980    dsdred    97    

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

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

Да просто это будут нудные ответы. Такле за стартмани стыдно отдавать.
19. PLAstic 296 02.12.19 16:35 Сейчас в теме
(17) Вот-вот, уже прямым текстом говорят, что чтобы оставить позитивное впечатление, даже за баксы готовы узнать правильные ответы.
20. пользователь 02.12.19 16:38
(19) да смысл полностью теряется. Возьмите мои деньги, только не просите ответов))))
Aleksandr_Kotelnikov_mmc; acanta; +2 Ответить
79. AnryMc 849 16.11.21 15:54 Сейчас в теме
(17) Кейнс перефразировал этот закон: «предложение порождает спрос» и перевернул закон Сэя с ног на голову, заявляя в 1930-х годах, что спрос рождает предложение.



Джон Мейнард Кейнс: Спрос рождает предложение
22. SantiouS 02.12.19 16:40 Сейчас в теме
Мои ответы (СПОЙЛЕР!)
25. SantiouS 02.12.19 17:22 Сейчас в теме
(22)
Продолжение (СПОЙЛЕР!)
maksa2005; +1 Ответить
34. пользователь 02.12.19 19:08
(25) Круто! По некоторым задачам дал комментарий.
А так все супер)


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://infostart.ru/public/1163257/
74. gelotus 30.11.20 12:20 Сейчас в теме
Вот интересный код. Как вы думаете что этот код выведет?


ТЗ  = Новый ТаблицаЗначений;
                ТЗ .Колонки.Добавить("Колонка1");
                
                Стр = ТЗ.Добавить();
                Стр.Колонка1 = "100";
                Стр = ТЗ.Добавить();
                Стр.Колонка1 = "200";
                
                Для каждого стр из ТЗ  Цикл
                               
                               Сообщить(Стр.Колонка1);
                               
                               ТЗ  = Новый ТаблицаЗначений;
                               ТЗ.Колонки.Добавить("Колонка2");
                               
                               Стр = ТЗ.Добавить();
                               Стр.Колонка2 = "ААА";
                               Стр = ТЗ.Добавить();
                               Стр.Колонка2 = "БББ";
                               
                               
                КонецЦикла;
Показать
Bukaska; TimkoNzt; user1464234; +3 Ответить
75. aleksey2 89 04.02.21 10:09 Сейчас в теме
(74)
ТЗ = Новый ТаблицаЗначений;
ТЗ .Колонки.Добавить("Колонка1");

100
200
76. PanKir 71 09.02.21 15:14 Сейчас в теме
(74)

100
Ошибка - в таблице нет колонки «Колнка1»
77. djvu 145 27.04.21 20:12 Сейчас в теме
(74)
Сначала, подумал:
"Ошибку, низзя строке присвоить значение: Стр = ТЗ.Добавить(); "

Потом, понял, без прямой проверки, однозначного ответа - нет. Если стр интерпретировать по разному, то вообще возможно бесконечное количество вариантов:

Какая область видимости "стр"?
Осуществляет ли "подъем" перменных компилятор/интерпретатор (или ХЕЗ, как его теперь называть)
и т.п. ...

Т.е. - проще, проверить "на практике", и это, кстати, не гарантирует, что от версии платформы к платформе поведение не будет меняться, такие ситуации проще исключать из практики
78. AnryMc 849 27.07.21 16:12 Сейчас в теме
А где список правильных ответов?

З.Ы. Не все ведь зубры... Стоит себя проверить...
З.Ы.Ы. (73) не считается - платный...
80. kuzyara 2165 01.12.23 15:17 Сейчас в теме
Кто автор публикации?
81. user2005458 14.03.24 07:56 Сейчас в теме
Нужны пояснения к ответам.
82. sapravka 1 23.07.24 01:51 Сейчас в теме
Для интереса первую задачу попробовал решить с помощью Chat GPT 4, вот какой он мне ответ дал:

Этот код не выполнится, потому что есть ошибка в сравнении структур. В языке 1С оператор сравнения = используется для сравнения значений, но в данном случае вы сравниваете два новых объекта типа Структура, что всегда будет возвращать Ложь, поскольку это разные экземпляры объектов, даже если они пустые.

Правильный способ сравнить две структуры в 1С — использовать метод Сравнить. Однако, для вашего примера, если целью является возвращение логического значения, которое показывает, что две пустые структуры равны, можно просто вернуть Истина.

Вот исправленный вариант вашего кода:

&НаКлиенте
Процедура Задача1(Команда)
	
	РезультатАлгоритма = Задача1НаСервере();
	
	Сообщить(РезультатАлгоритма);
	
КонецПроцедуры

&НаСервере
Функция Задача1НаСервере()
	
	Возврат (Сравнить(Новый Структура, Новый Структура));
	
КонецФункции
Показать


Этот код выполнится и выведет Истина, так как два пустых объекта Структура действительно равны.

Проверил в конфигураторе - Ложь, а в пользовательском режиме выходит нет, зато то, что навыдумывал ИИ Chat GPT 4 уже в конфигураторе дал ошибку:

{Обработка.Обработка1.Форма.Форма.Форма(50,11)}: Процедура или функция с указанным именем не определена (Сравнить)
Возврат (<<?>>Сравнить(Новый Структура, Новый Структура)); (Проверка: Сервер)
83. YA_412474661 27.11.24 23:30 Сейчас в теме
Подскажите, пожалуйста. Почему не работает 3? Как я понял, проблема именно в директиве &НаКлиенте и НаСервере. В 1С функция или процедура, определённая в блоке &НаСервере, не доступна на клиенте напрямую, поэтому дополняя словом "Экспорт" чтобы указать, что процедура или функция доступна за пределами текущего модуля и может быть вызвана из других модулей или контекстов. Но все равно НЕ работает, однако, как только &НаСервере меняем на &НаКлиенте все работает. Вот так уже работает

&НаКлиенте
Процедура Задача3(Команда)
	
	РезультатАлгоритма = Задача3НаСервере();
	
	Сообщить(РезультатАлгоритма);
	
КонецПроцедуры

&НаКлиенте
Функция Задача3НаСервере()

	Возврат (Null = Неопределено);
	
КонецФункции
Показать


Подскажите, как сделать, чтобы работало с сервером?
84. SlavaKron 28.11.24 04:41 Сейчас в теме
(83)
Почему не работает 3?
Что именно не работает?
85. YA_412474661 28.11.24 22:35 Сейчас в теме
(84)
Программа не работает изначально. Я выше поясняю, что если директиву меняю с &НаСервере на &НаКлиенте, то все работает. Программа компилируется. Что нужно сделать, чтобы с директивой &НаСервере работало? Вы прочли мой комментарий полностью ?
86. SlavaKron 29.11.24 09:19 Сейчас в теме
(85) Да, прочитал. Я не понимаю что вы вкладываете в слова "не работает"? В задаче 3 код отрабатывает корректно: выводит сообщение "нет" - логично, что в рамках встроенного языка 1С Null <> Неопределено.
Оставьте свое сообщение