❓ Рубрика: Вопросы на собеседовании #вопросынасобесах — 25 июня 2026 г. в 13:30:03.672
❓ Рубрика: Вопросы на собеседовании #вопросынасобесах №119 На позицию: Программист 1С Вопрос: Вопрос был задан одному из подписчиков, кстати присылайте свои вопросы с реальных собесов, можно сюда @GSKBusiness. Будем пробовать все вместе отвечать. В модуле управляемой формы написан такой код: &НаКлиенте Процедура ЗаполнитьЦенуНаКлиенте(Команда) НоменклатураИзменено = Новый Структура; НоменклатураИзменено.Вставить("Цена", 0); ЗаполнитьЦенуНаСервере(Объект.Номенклатура, НоменклатураИзменено); Сообщить("Цена = " + НоменклатураИзменено.Цена); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьЦенуНаСервере(СсылкаНаНоменклатуру, Знач Структура) Структура.Цена = СсылкаНаНоменклатуру.Цена; КонецПроцедуры Предположим, что у выбранной номенклатуры цена равна 1000, и обращение СсылкаНаНоменклатуру.Цена на сервере выполняется корректно. Что увидит пользователь в окне сообщений после нажатия кнопки и почему? Ответ: Пользователь увидит: Цена = 0 Хотя на сервере выполняется строка: Структура.Цена = СсылкаНаНоменклатуру.Цена; и значение цены у номенклатуры равно 1000, клиентская структура НоменклатураИзменено не изменится. Причина в том, что параметр Структура в серверной процедуре объявлен с модификатором Знач: Процедура ЗаполнитьЦенуНаСервере(СсылкаНаНоменклатуру, Знач Структура) При клиент-серверном вызове параметр с Знач передаётся на сервер, но его изменённое значение не передаётся обратно на клиент. Поэтому изменение свойства Цена происходит только в серверной копии структуры, а на клиенте значение остаётся прежним 0. ❗️ Есть что добавить, пиши в комментариях. Всем ОЧЕНЬ интересно 😉. Подпишись на канал | Подпишись в max

