Чтобы оценить правильность своих действий, можно проанализировать, что же было сделано. Ход рассуждений может быть примерно таким:
На самом деле обращения на сервер для пересчета данных формы могло бы и не быть. Как мы увидим ниже, более эффективно этот расчет будет работать на клиенте.
Поскольку все данные для пересчета доступны на клиенте (это поля основного реквизита формы Объект – ЦенаУслуги, Вознаграждение и Сумма), то нет смысла лишний раз обращаться на сервер. Код пересчета – небольшой, и он быстро выполнится из клиентской процедуры при изменении цены услуги.
Для этого изменим обработчик события ПриИзменении() поля ЦенаУслуги документа ОказаниеУслуги следующим образом (листинг 4.16).
Листинг 4.16. Процедура «ЦенаУслугиПриИзменении()»
&НаКлиенте
Процедура ЦенаУслугиПриИзменении(Элемент)
Если Объект.ЦенаУслуги > 1000 Тогда
Объект.Вознаграждение = 10;
Иначе
Объект.Вознаграждение = 5;
КонецЕсли;
Объект.Сумма = Объект.ЦенаУслуги + Объект.ЦенаУслуги * Объект.Вознаграждение / 100;
КонецПроцедуры
ПРИМЕЧАНИЕ
Этот пример можно посмотреть в демонстрационной конфигурации «03 (вар. 2) Использование клиентских процедур для небольших расчетов данных формы».
Запустим «1С:Предприятие», откроем документ об оказании услуг, выберем услугу и внесем цену услуги. После этого поля Вознаграждение и Сумма автоматически пересчитаются по заданному нами алгоритму.
Как мы видим, функциональность прикладного решения будет такой же, как и в первом случае, но производительность будет выше, так как мы выполнили перерасчет данных документа на клиенте, без обращения к серверу.