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

Пример 3

Третий пример, который мы рассмотрим, будет заключаться в вызове экспортируемой процедуры объекта. Наш документ как раз имеет одну такую процедуру, которая позволяет пересчитать все цены, содержащиеся в табличной части документа, и применить к ним скидку в 10 %.

Примечание

Пример можно посмотреть в демонстрационной базе «Работа с данными объекта в форме», форма документа Накладная, группа команд Примеры, команда Метод объекта. Это локальная команда формы документа Накладная.

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

Выполним контекстный серверный вызов. На сервере преобразуем основной реквизит формы в прикладной объект, выполним экспортируемую функцию этого объекта и преобразуем объект обратно в основной реквизит формы.

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

Локальная команда формы, вызывающая серверную процедуру, будет выглядеть следующим образом (листинг 3.24).

Листинг 3.24. Обработчик локальной команды формы

&НаКлиенте

Процедура МетодОбъекта(Команда)

 

ПересчитатьЦеныНаСервере();

 

КонецПроцедуры

Контекстная серверная функция ПересчитатьЦеныНаСервере() будет выглядеть следующим образом (листинг 3.25).

Листинг 3.25. Серверная функция для вызова экспортируемой функции объекта

&НаСервере

Процедура ПересчитатьЦеныНаСервере()

 

ОбъектДокумента = РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.Накладная"));

ОбъектДокумента.НачислитьСкидку(10);

ЗначениеВРеквизитФормы(ОбъектДокумента, "Объект");

 

КонецПроцедуры

В этой функции сначала мы преобразуем данные реквизита формы Объект в прикладной объект типа ДокументОбъект.Накладная.

После этого мы вызываем экспортируемую процедуру этого прикладного объекта – НачислитьСкидку(). В результате ее работы все цены, содержащиеся в табличной части объекта, будут уменьшены на 10 %.

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

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

Назад: Пример 2
Дальше: Глава 3.8. Последовательность событий при открытии формы объекта