Где выполняется код, что можно передать между клиентом и сервером и почему вызовов должно быть мало.
Ниже — 2 вопроса с разбором. Всего по этой теме
6 вопросов, и в тренажёре они задаются вперемешку
и без подсказок: там проверяется, что тема уложилась, а не что её
приятно читать.
Что означает директива &НаКлиентеНаСервереБезКонтекста?
Процедура компилируется и на клиенте, и на сервере, но не видит ни данных формы, ни её реквизитов — верно
Процедура выполняется на клиенте, а при его недоступности платформа переносит её на сервер сама
Процедура доступна только в общих модулях и в модуле формы использоваться не может вовсе
Процедура выполняется дважды — сначала на сервере, затем на клиенте — для сверки результатов
Такую процедуру зовут из любого места формы, и в этом её удобство: одна реализация вместо двух. Плата — полное отсутствие контекста: ни ЭтотОбъект, ни Элементы, ни реквизитов формы там нет.
Почему в процедуру с директивой &НаСервереБезКонтекста нельзя передать элемент формы?
Такая процедура выполняется без формы вообще, поэтому её объектов на сервере не существует — верно
Элементы формы слишком велики, и платформа отказывается передавать их по сети целиком
Передать можно, но элемент придёт копией, и изменения в нём не вернутся обратно на клиент
Запрет сняли в версии 8.3, и такие параметры теперь передаются как обычные значения
Без контекста — значит без формы: на сервере нет объекта, на который ссылается элемент. Передавать надо значения — строки, числа, ссылки, структуры, — а не элементы и не сам объект формы.
О чём ещё спрашивают по этой теме
Из серверной процедуры вызвали клиентскую и получили «Процедура не найдена». Почему?
Что можно передать с клиента на сервер параметром? (несколько ответов)
Почему число серверных вызовов из формы стараются свести к минимуму?