Каталог решений - Все возможные способы вызова функций по имени на клиенте 1С

Все возможные способы вызова функций по имени на клиенте 1С

Все возможные способы вызова функций по имени на клиенте 1С

В наличии

В стать описаны все доступные способы вызова в платформах 1с 8.2 и 8.3 функций из переменной в строке на стороне клиента.

Категория:

Описание

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

 

Обзор способов:

Существующие способы: 

  1. Оператор Выполнить.
  2. Оператор Вычислить.
  3. Через механизм Описания Оповещений.
  4. Через механизм Обработчик Ожидания. 

Указанные выше способы имеют достоинства и недостатки, которые можно привести в виде следующей таблицы:

 

Способ  Достоинства    Недостатки
Оператор
Выполнить
Универсальный способ — годится для вызова процедур и функций как с экспортом, так и без него.

Недоступен для версий веб-клиента 8.2.12 и новее, т.ж. метод не безопасен — требуется дополнительный контроль параметров. Не работает на IOS.

 

Оператор
Вычислить
Простой и универсальный способ для большинства режимов по вызову функций как с экспортом, так и без него.Не работает на IOS (выпадает в исключение), и требует чтобы вместо процедур везде были только функции, и т.ж. метод не безопасен — требуется дополнительный контроль параметров.
Через механизм 
Описание Оповещений
Этот способ позволяет вызывать как экспортные функции, так и процедуры.Из недостатков пожалуй только то, что доступен на 8.3.3 и выше, и то что функция или процедура должна быть с экспортом, и ограниченное число параметров, и этот метод доступен только на клиенте.
Через механизм 
Обработчик Ожидания
Способ является рекордсменом по совместимости и режимам работы — работает начиная в версии 8.01. Сложная передача параметров. Для этого можно использовать только глобальные переменные.
2. Способ доступен только для вызова клиентских процедур, расположенных внутри этого модуля.

 

После рассмотрения достоинств и недостатков, будет приведено краткое описание всех рассмотренных способов. 

Код выполнить и вычислить выглядит таким образом: 

Выполнить:

выполнить("сообщить(12)");

Вычислить:

Тест=вычислить("5+2");

Про последние 2 способа — они специфические. И основаны на особенностях использования специальных механизмов: описания оповещений для первого, а для второго — глобальных переменных на клиенте.

ВыполнитьОбработкуОписанияОповещения — код выглядит таким образом:

Описание=новый ОписаниеОповещения("ФункцияЗначение",ЭтаФорма,СписокПараметров.Параметры);
ВыполнитьОбработкуОповещения(Описание,Результат);

Последний способ — вызов не стандартный, и его код выглядит таким образом: 

&НаКлиенте
перем Аргумент1,Аргумент2;

//Вызов функции
 Аргумент1=ВыбранныйЭлемент;
 Аргумент2=СписокПараметров2.Параметры;
 ПодключитьОбработчикОжидания("ФункцияЗначение",0.1,Истина);

Процедура ФункцияЗначение() экспорт

Значение1=Аргумент1;
Значение2=Аргумент2;

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

Поэтому, из способов наилучшим образом подходят выполнить, и ВыполнитьОбработкуОписанияОповещения. Причем последний не имеет проблемы с режимами работы на всех режимах для версий выше 8.3.3. Если же нужна работа в 8.2 и 8.3 и мобильное приложение — то остается только последний метод со всеми вытекающими проблемами.

has been added to your cart:
Оформление заказа