При роботі в режимі керованого застосування, іноді на клієнтській стороні доводиться отримувати результат "елементарного виразу", обчислити яке можна тільки на сервері. В "класичної" реалізації це може призводити до великої кількості здвоєних процедур / функцій (одна на клієнті - викликає іншу на сервері). У статті розглянуті 4 варіанти вирішення цього завдання.
Припустимо на формі потрібно в залежності від інтерактивного зміни прапорця встановлювати значення будь-якого реквізиту, це можна сделаеть так:
Варіант 1:
НаКліенте
Процедура ФлажокПріІзмененіі (Елемент)
ФлажокПріІзмененііНаСервере ();
КонецПроцедури
Варіант 2:
НаКліенте
Процедура ФлажокПріІзмененіі (Елемент)
Об'єкт. Статус = ВернутьСтатусНаСервере ();
КонецПроцедури
Строго кажучи, обидва ці варіанти "неправильні", тобто Працюватимуть вони звичайно ж будуть, але нееффентівно, так само неефективний наступний варіант (є в УТ11):
Варіант 3:
НаКліенте
Процедура ФлажокПріІзмененіі (Елемент)
Об'єкт. Статус = РаботаСФомуламі. ВичіслітьФормулу ( "Перечісленія.СтатусиЗаказовКліентов.КОбеспеченію");
КонецПроцедури
Тут виробляється вивов стандартної серверної функції, реалізованої в загальному модулі УТ11 РаботаСФомуламі. ВичіслітьФормулу. Її реалізація:
Функція ВичіслітьФормулу (ТекстРасчета) Експорт
Повернення Обчислити (ТекстРасчета);
КонецФункціі
Функція платформи, яка дозволяє зробити те ж саме, але з одного боку без прив'язки до конфігурації, з іншого кешіруя отримане значення:
Варіант 4:
НаКліенте
Процедура ФлажокПріІзмененіі (Елемент)
Об'єкт. Статус = ПредопределенноеЗначеніе ( "Перечісленіе.СтатусиЗаказовКліентов.КОбеспеченію");
КонецПроцедури
Останній варіант з одного боку дозволяє не вдаватися до збільшення коду, за рахунок виклику на клієнті, з іншого кешируєт отримане значення на рівні платформи. Є у нього і незначний недолік, який, втім, виникає при "негарному стилі" програмування, наприклад таке:
НаКліенте
Процедура ФлажокПріІзмененіі (Елемент)
Об'єкт. Група = РаботаСФомуламі. ВичіслітьФормулу ( "Справочнікі.Партнери.НайтіПоКоду (" "00002" ")");
КонецПроцедури
Таке значення не можна обчислити використовуючи Варіант 4. але правильніше в цьому випадку використовувати зумовлений елемент довідника, тоді Варіант 4 цілком можна застосувати, наприклад так:
НаКліенте
Процедура ФлажокПріІзмененіі (Елемент)
Об'єкт. Група = ПредопределенноеЗначеніе ( "Справочнік.Партнери.Наше Підприємство");
КонецПроцедури
Коротко переваги (+) / недоліки (-) кожного варіанта