Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Резюме
Дальше: Первый вариант решения

Использование внеконтекстных серверных процедур в модуле формы

Серверные процедуры и функции могут исполняться с передачей контекста формы на сервер (директива компиляции &НаСервере) и без (директива компиляции &НаСервереБезКонтекста).

При контекстных серверных вызовах процедур в модуле формы форма передает свои данные (реквизиты) и элементы на сервер и обратно. Данные формы становятся доступны на сервере, но нужно понимать, что передача контекста формы на сервер – это целый непростой процесс.

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

Однако использование контекстных серверных процедур необходимо, когда нужно, например, поменять данные во всей табличной части или когда нужно при этом поработать с тем объектом, который отображается в форме, выполнить его экспортируемый метод и т. п.

Во внеконтекстных серверных процедурах недоступен контекст формы. Это значит, что при вызове этих процедур не происходит передача данных формы на сервер и обратно. Соответственно, производительность прикладного решения при использовании внеконтекстных серверных процедур будет выше.

Так что же использовать в том или ином случае: внеконтекстные или контекстные серверные процедуры? Решение зависит от конкретной задачи. Рассмотрим пример.

Предположим, в периодическом регистре сведений Цены содержатся розничные цены товаров из справочника Товары. Для расходования товаров существует документ РасходнаяНакладная, в табличную часть которого подбираются товары.

Хочется, чтобы пользователь, выбрав товар, видел в документе не только ссылку, но сразу же и цену выбранного товара из регистра сведений, актуальную на дату документа (рис. 4.21).

Рис. 4.21. Подстановка актуальной цены товара в расходную накладную

Таким образом, в тот момент, когда пользователь выбирает товар в колонке Товар, ссылающейся на справочник Товары, колонку Цена табличной части документа РасходнаяНакладная нужно заполнить актуальной ценой товара из регистра сведений.

Рассмотрим возможные варианты решения этой задачи.

Назад: Резюме
Дальше: Первый вариант решения