Руководство по настройке altAwin:Обработчики событий

Материал из AltecDocs
Перейти к:навигация, поиск

Справочник «Обработчики событий»

В подразделе Обработчики событий пользователю предоставляется возможность настройки выполнения определённых действий в ответ на ситуации, возникающие при работе с программой. Действия реализуются посредством пользовательских скриптов, вызываемых в ответ на то или иное зарегистрированное событие в системе altAwin. Активный обработчик автоматически вызывается при наступлении определенного события (например, при открытии документа). Список зарегистрированных событий берётся из программы; в altAwin предусмотрено несколько типов событий, как общих, так специфичных для отдельных документов, на каждое их которых может быть назначен собственный обработчик.

В левой части представлениия Обработчики событий располагается дерево, группирующее существующие обработчики событий по их типам. При создании нового обработчика выбирается узел дерева, соответствующий отслеживаемому событию. Существует возможность установки обработчиков как на глобальные события, так и на события, связанные с работой с отдельными документами. Далее приводится перечень событий, обработку которых можно вести в программе.

  • Глобальные события:
    • Любое событие
    • Старт приложения
    • Завершение приложения
    • Нажатие комбинации клавиш
    • Импорт заказов
    • Изменение состояния заказа
    • Сообщение из Oktell о начале коммутации
    • Сообщение из Oktell о завершении коммутации
    • Входящий звонок Asterisk
    • Исходящий звонок Asterisk
    • Ответ на входящий звонок Asterisk
    • Ответ на исходящий звонок Asterisk
  • Общие события для документов.
    • Открытие
    • Перед сохранением
    • Перед удалением
    • После сохранения
    • Создание
  • Для документов нового типа предлагаются более широкие возможности для регистрации обработчиков событий. В частности, помимо вышеперечисленных обрабатываться также могут следующие события:
    • Перед виртуальным удалением
    • Перед восстановлением
    • Перед добавлением
    • Перед закрытием формы без сохранения
    • Перед показом формы
    • Перед сохранением
    • Перед обновлением
    • Перед удалением
    • После блокировки
    • После виртуального удаления
    • После восстановления
    • После добавления
    • После обновления
    • После подтверждения
    • После создания
    • После сохранения
    • После удаления
  • также для документов могут быть доступны частные события, непосредственно связанные с сущностью документа. Например, может быть назначен обработчик на такие события, как создание проводки прихода изделий или оптимизация заказа ламинации. Полный список событий, на которые возможно назначение обработчиков, доступен в дереве.

Следует обратить внимание, что на события, связанные документами, может назначаться как универсальный обработчик, отслеживающий события для всех типов документов, так и с указанием конкретного вида документа из числа определённых в программе.

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

Из соображений совместимости "старые" обработчики вызываются до "новых". Таким образом, события будут обрабатываться в следующем порядке:

  • Перед сохранением -> Перед добавлением, Перед обновлением;
  • Перед удалением -> Перед виртуальным удалением;
  • После сохранения -> После подтверждения;
  • Создание -> После создания.
IconInfo.png Узел дерева Все позволяет просматривать все определённые обработчики.
IconInfo.png В дилерских версиях и удалённом офисе порядок следования можно изменять только у тех обработчиков, которые были созданы на месте. При импорте обработчиков событий из основного офиса, они, имея высший приоритет, всегда располагаются раньше созданных на месте и не доступны для перемещения.

При создании нового обработчика в окне Обработчик событияОбработчики событий требуется указать Имя обработчика, а также собственно код скрипта, который будет выполняться при наступлении ожидаемого события. Флаговый переключатель Активен определяет, будет ли отрабатывать данный обработчик. Флаговый переключатель Экспорт дилеру управляет поведением при экспорте настроек приложения для дилера. Когда флаг активен, обработчик будет передаваться в файл обмена настройками при экспорте дилеру. В скрипте доступны переменные события.

Рис. 4.173. Обработчик событий


В обработчик события "Любое событие" передаются переменные:

  • EventName: string — имя события
  • Args: Variant — массив аргументов

В обработчики частных событий передаются переменные в зависимости от типа события. Их перечень и описание можно посмотреть в дереве редактора скрипта документа обработчика, ветка "Переменные" -> "Обработчик события". В общем случае для событий, связанных с документами, в обработчике события будет доступен текущий экземпляр документа в переменной Instance — для документов нового типа и в переменной Document — для документов старого типа.

IconInfo.png Обратите внимание, что в обработчиках "После добавления", "После обновления", "После удаления", "После виртуального удаления", "После восстановления" и "После подтверждения" документ находится в режиме "только для чтения".

Пример работы обработчика событий

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

if Document.Rate <> Document.Currency.Rate then
begin
  choice := DlgBox('Предупреждение', 'Курс заказа не равен текущему курсу валюты', ['Пропустить', 'Восстановить курс', 'Отмена']); 
  case Choice of
    1: begin // Пропускаем
       end;
    2: Document.Rate := Document.Currency.Rate; // Корректируем курс
    3: RaiseException('Сохранение отменено');   // Отменяем сохранение с помощью исключения
  end;
end;

Экспорт и импорт обработчиков событий

Для экспорта заведённых обработчиков событий во внешний файл выберите требуемые записи в таблице и воспользуйтесь кнопкой панели инструментов представления Eventshndlrexp.png. Для импорта обработчиков событий из файла в программу воспользуйтесь кнопкой Eventshndlrimp.png панели инструментов представления; в открывшемся диалоговом окне выберите ранее созданный файл импорта с расширением .aeh.