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

Первый вариант решения

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

Для этого создадим форму документа ОказаниеУслуги и обработчик события ПриИзменении() для поля формы ЦенаУслуги (листинг 4.14).

Листинг 4.14. Процедура «ЦенаУслугиПриИзменении()»

&НаКлиенте

Процедура ЦенаУслугиПриИзменении(Элемент)

 

РасчетСуммыУслуги();

 

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

В этом обработчике мы вызываем процедуру РасчетСуммыУслуги(), исполняющуюся на сервере (листинг 4.15).

Листинг 4.15. Процедура «РасчетСуммыУслуги()»

&НаСервере

Процедура РасчетСуммыУслуги()

 

Если Объект.ЦенаУслуги > 1000 Тогда

Объект.Вознаграждение = 10;

 

Иначе

Объект.Вознаграждение = 5;

 

КонецЕсли;

 

Объект.Сумма = Объект.ЦенаУслуги + Объект.ЦенаУслуги * Объект.Вознаграждение / 100;

 

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

В процедуру расчета передается контекст формы, так как в ней изменяются реквизиты объекта Вознаграждение и Сумма. Отключим для соответствующих полей формы свойство Доступность, так как они рассчитываются при изменении поля ЦенаУслуги.

ПРИМЕЧАНИЕ

Этот пример можно посмотреть в демонстрационной конфигурации «03 (вар. 1) Использование клиентских процедур для небольших расчетов данных формы».

Запустим «1С:Предприятие», откроем документ об оказании услуг, выберем услугу и внесем цену услуги. После этого поля Вознаграждение и Сумма автоматически пересчитаются по заданному нами алгоритму (рис. 4.28).

Рис. 4.28. Пересчет данных в документе при изменении цены услуги

В результате будет сделано одно обращение на сервер, кроме того, этот вызов будет контекстным (рис. 4.29).

Рис. 4.29. Показатели производительности

Назад: Использование клиентских процедур для небольших расчетов данных формы
Дальше: Второй вариант решения