Разработка в Облик Saas>Програмирование в Oblik-SaaS>События документа>OnChangeDocStatus - Событие на изменение статуса документа
Начать работу

OnChangeDocStatus - Событие на изменение статуса документа

Событие на изменение статуса документа.

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

Событие вызывается для документа, у которого изменен статус. Предназначено, для возможности формирования бизнес-логики на изменение статуса документа. При этом новый установленный статус передается в событие. Нужно заметить, что Статус документа может быть изменен только программным способом. Для этого используется функция src/om/chdocsta.p. При этом, один и тот же статус документу может быть установлен несколько раз. Система фиксирует все изменения статуса по времени, дате и пользователя изменившего статус документа.

Событие имеет код возврата. Если событие возвращает код ERROR, то установка нового статуса документа отменяется и выполненные в событии действия системой автоматически отменяются (откат).

Если событие возвращает флаг ОК, то действия выполненные событием принимаются и документ принимает новый статус.

Замечание. Система в состоянии откатить только действия связанные с изменением Базы данных системы. Если событие на изменение статуса формирует некий внешний файл, то в случае возврата флага ERROR, он удален не будет.

Синтаксис события:

PROCEDURE OnChangeDocStatus :
  define input parameter rid-doc    as integer.
  define input parameter new-status as character.

Где rid-doc – внутренний номер документа, у которого изменен статус
            new-status – новый статус документа – это любая символьная строка. Например «В работе», или «Отгружен».

Пример использования:

PROCEDURE OnChangeDocStatus :                   
 define input parameter rid-doc as integer.     
 define input parameter new-status as character.
 
 run src/kernel/set_ffv.p ( "1:29", rid-doc, new-status ).
 
 if new-status = "Unload done"
 then do:
  run src/kernel/sendevnt.p ( rid-doc, 8 ).
 end.
 
 if new-status = "Done"
 then do:
  run src/kernel/set_ffv.p ( "1:30", rid-doc, "yes" ).
  run CreateAkt ( rid-doc ).
 end.
 
 return "OK".
END.