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

Второй вариант решения

Чтобы оценить правильность своих действий, можно проанализировать, что же было сделано. Ход рассуждений может быть примерно таким:

На самом деле обращения на сервер для пересчета данных формы могло бы и не быть. Как мы увидим ниже, более эффективно этот расчет будет работать на клиенте.

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

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

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

&НаКлиенте

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

 

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

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

 

Иначе

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

 

КонецЕсли;

 

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

 

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

ПРИМЕЧАНИЕ

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

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

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

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