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