Шаблон регламента документа и системные алгортмы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Шаблон регламента документа и системные алгортмы

Сообщение Zver »

Уважаемые коллеги,
В шаблонах регламента документа при изменении статусов можно настраивать выполнение системных алгоритмов.

Как можно запретить переход на следующих статус по результатам работы системного алгоритма?
Программист-самоучка
mwoland

Re: Шаблон регламента документа и системные алгортмы

Сообщение mwoland »

Если я правильно понял вопрос, то по правой кнопке в редактировании шаблона регламента на строке с парой состояний -> пункт "Условие перехода".
Из хэлпа:
Для каждой пары состояний, выбранной в средней панели, с помощью локальной функции можно задать "Условие перехода" – алгоритм, который должен завершить работу без ошибки перед тем, как документ будет переведен в новое состояние (т.е. выполнение алгоритма с ошибкой делает такой переход невозможным).
Большие возможности здесь предоставляет использование сценариев на языке JavaScript, исполняемых с помощью системного алгоритма №52.
Например, JavaScript может использоваться для контроля превышения какой-либо суммой из документа лимитированного значения, содержащегося в некотором поле. В окне настройке алгоритма JavaScript на вкладке "Библиотеки" подключается библиотека Планирование Запуск алгоритмов Работа с переменными окружения. Эта библиотека содержит функцию EnvironmentSetStr(nameVariable, ValueVariable), позволяющую установить значение переменной окружения nameVariable в ValueVariable. При настройке системного алгоритма №52 по кнопке [Поля алгоритма] открывается окно =Настройка дополнительных параметров= - в этом окне следует установить флаг Error. Введенное справа от данного флага имя строковой Переменной окружения должно использоваться в качестве nameVariable в указанной выше функции для передачи кода ошибки. "Ошибкой" при этом считается любое значение переменной, отличное от '0' ('0' – значение по умолчанию).

Таким образом, если в =Настройке дополнительных параметров= введено:
Error – MyErrorCode,
то для возврата кода ошибки в скрипте следует использовать фрагмент вида:
if (<Сумма> > <Лимитированное значение>) EnvironmentSetStr('MyErrorCode', '1');
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Шаблон регламента документа и системные алгортмы

Сообщение Zver »

Это очень интересно.
Мне нужно остановить перевод статуса с помощью системного алгоритма.
Обычно для возврата результата выполнения алгоритма используется передаваемая по ссылке переменная типа TRecAcc.

Можно и узнать, какие значения и каким параметра этой структуры надо присваивать, чтобы происходило прерывание перехода статуса.
Попытки присвоения различным полям этой структуры (Error и Binding) оказались неудачными.
Программист-самоучка
Ответить