← Назад ко всем вопросам

Почему процедура, помеченная &НаСервереБезКонтекста, не может обращаться к данным формы

1️⃣ Как кратко ответить

Процедура, помеченная &НаСервереБезКонтекста, выполняется на сервере без доступа к контексту клиентской формы, что исключает возможность обращения к данным формы, так как они существуют только на клиенте.

2️⃣ Подробное объяснение темы

В платформе 1С:Предприятие существует механизм разделения кода на клиентскую и серверную части. Это необходимо для оптимизации работы приложения и обеспечения безопасности данных. Атрибут &НаСервереБезКонтекста используется для указания, что процедура или функция должна выполняться на сервере, но при этом не имеет доступа к контексту вызова на клиенте.

Зачем это нужно

  1. Оптимизация производительности: Выполнение тяжелых вычислений на сервере снижает нагрузку на клиентские машины.
  2. Безопасность: Данные, которые не должны покидать сервер, остаются защищенными.
  3. Снижение сетевого трафика: Передача только необходимых данных между клиентом и сервером.

Как это работает

Когда процедура помечена как &НаСервереБезКонтекста, она выполняется в серверной среде, где отсутствует доступ к данным и объектам, существующим на клиенте. Это означает, что такие процедуры не могут взаимодействовать с элементами интерфейса, переменными и другими данными, которые определены в контексте клиентской формы.

Пример

Рассмотрим пример кода, где процедура выполняется на сервере без контекста:

&НаСервереБезКонтекста
Процедура ОбработатьДанныеНаСервере(Параметр)
    // Здесь мы можем работать только с данными, переданными в параметрах
    // или с данными, доступными на сервере, например, из базы данных.
​
    Результат = Параметр * 2; // Пример обработки данных
​
    // Нельзя обращаться к данным формы, например:
    // Это вызовет ошибку: Сообщить(ЭлементыФормы.ПолеВвода.Значение);
КонецПроцедуры
  • &НаСервереБезКонтекста: Указывает, что процедура выполняется на сервере без доступа к клиентскому контексту.
  • Параметр: Данные, которые передаются в процедуру. Это единственный способ передать информацию из клиентской части.
  • Результат = Параметр * 2: Пример обработки данных, доступных на сервере.
  • Сообщить(ЭлементыФормы.ПолеВвода.Значение): Попытка доступа к данным формы вызовет ошибку, так как форма существует только на клиенте.

Где применяется

Процедуры с атрибутом &НаСервереБезКонтекста часто используются для выполнения операций, которые не требуют взаимодействия с пользовательским интерфейсом, например, для обработки данных, выполнения сложных вычислений или работы с базой данных. Это позволяет разгрузить клиентскую часть и обеспечить более эффективное использование ресурсов сервера.

Тема: Формы и клиент-сервер
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки