Спешим ответить на вопрос из рубрики:
❓Вопросы с реальных собеседований и тех. интервью
Вопрос:
Чем отличаются директивы
&НаСервере
&НаСервереБезКонтекста
и &НаКлиентеНаСервереБезКонтекста?
Ответ:
❤️ — если было полезно
#вопросы_с_собеседований@learn_prosto
❓Вопросы с реальных собеседований и тех. интервью
Вопрос:
Чем отличаются директивы
&НаСервере
&НаСервереБезКонтекста
и &НаКлиентеНаСервереБезКонтекста?
Ответ:
При использовании директивы &НаСервере, весь контекст формы (элементы формы и ее реквизиты) передается на сервер. После выполнения процедуры (или функции) на сервере, весь контекст формы возвращается обратно на клиент. Т.е. мы гоняем туда-сюда всю форму, со всеми ее элементами и данными.
Но далеко не каждой процедуре на сервере требуются данные формы. Чтобы минимизировать трафик между клиентом и сервером, такие процедуры описывают с директивой &НаСервереБезКонтекста
При использовании этой директивы, контекст формы на сервере будет недоступен. А если все же нужно передать данные с клиента на сервер, не передавая весь контекст, это можно сделать в параметрах такой процедуры.
А вот директива &НаКлиентеНаСервереБезКонтекста используется при описании процедур, которые с одинаковым успехом могут быть выполнены как на клиенте, так и на сервере, и да, контекст формы для их выполнения также не нужен.
➡️ Что же это за процедуры такие?
Если процедура может выполняться и на клиенте, и на сервере, значит, она не должна обращаться ни к данным формы, ни к базе данных. Т.е. такая процедура может оперировать ТОЛЬКО переданными в нее параметрами.
Например, функция возведения числа в степень может быть описана как раз с директивой &НаКлиентеНаСервереБезКонтекста. Потому что она может быть выполнена и на клиенте и на сервере, и для ее работы не требуется ничего, кроме переданных параметров.
❤️ — если было полезно
#вопросы_с_собеседований@learn_prosto