Новые события ТКЭД, типов справочников, заданий и уведомлений в DIRECTUM 4.7/4.8

6 6

Функционал системы DIRECTUM постоянно развивается и совершенствуется. Изменения произошли в событиях ТКЭД, типов справочников, блоков заданий и уведомлений.

Итак, новые события в ТКЭД и типах справочников:

"Отмена До" и "Отмена После" (Запись)


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

Например, пользователь добавил запись в справочник "Совещания и заседания" и отменяет ее: в событии "Отмена До" на клиенте запись есть, на сервере нет. Таким образом, цепляемся за эту запись пока она не отменена, и удаляем резервирование, связанное с этим  совещанием.

  if Object.Inserted
    // Удалить резервирования, если отменено создание совещания.
    // Функция удаляет резервирование
    MMDeleteReservations(Object; false)  
    Окружение('RESERVATION_CHANGED'; false)
  endif

"Показ" и "Скрытие" (Форма-карточка)


События отрабатывают при визуальном показе форм-карточек справочников и документов, а также при смене текущей отображаемой записи (с помощью кнопок навигации, при вызове действий Добавить, Удалить, Отмена, Выход). В событиях доступны предопределенные переменные Sender типа IForm и Object типа IReference (для справочника) или IEDocument (для ТКЭД). Не рекомендуется в данных событиях выводить диалоговые окна.

В событии "Показ" удобно управлять доступностью элементов формы, например:

  // Если реквизит Дополнение означен, запретить его изменение
  DealReq = Object.Requisites('Дополнение')    
  DealControl = Sender.Controls.FindControlByRequisite(DealReq)                          
  if Assigned(DealReq.Value)
    DealControl.Enabled = false
  else
    DealControl.Enabled = true  
  endif

Новые события в блоках задание и уведомление:

"Создание заданий" и "Создание уведомлений"


В блоки ТМ добавлены новые события: "Создание заданий" в блок задание и "Создание уведомлений" в блок уведомление. Данные события срабатывают на компьютере со службой Workflow в момент создания заданий/уведомлений по данному блоку. В событиях доступны предопределенные переменные "CreatedJobs" и "CreatedNotices" типа IWorkflowParam с типом данных wdtJobCollection (в более поздних билдах изменился тип предопределенных переменных CreatedJobs и CreatedNotices: был IWorkflowParam (коллекция) стал IList (имена элементов списка не определены, значения - IJobInfo и INoticeInfo соответственно)). В этих переменных находятся ссылки на созданные в рамках текущей итерации задания/уведомления.

Добавим в текст исходной задачи список ссылок на все созданные задания по блоку(событие "Создание заданий"):

if not VarIsClear(CreatedJobs)
Counter = 0
 while Counter < CreatedJobs.Count 
   Work.ActiveText =  Format("%s%sПользователю %s отправлено задание %s"; 
     ArrayOf(Work.ActiveText; CR; CreatedJobs.Values(I).Performer.Name;
     CreatedJobs.Values(I).Job.Hyperlink))
   Counter = Counter + 1
 endwhile
endif 
Андрей Манаков
Данные события срабатывают на компьютере со службой Workflow в момент создания заданий/уведомлений по данному блоку.
Насколько я понимаю, к ним не относятся подзадачи созданные самим пользователем хоть и в рамках этого же блока (т.к. событие уже прошло)? А то было бы неплохо иметь возможность добавить обработку событии для пользовательских подзадач по блоку.
Это частично бы решило задачу развязывания рук разработчикам :)
Николай Перфильев

Ура! Теперь тоже самое для событий типовых маршрутов сделайте!!!

Событие Отмена после - это просто моя мечта, когда пользователь решает прекратить задачу. 

Андрей Девятьяров
Насколько я понимаю, к ним не относятся подзадачи созданные самим пользователем хоть и в рамках этого же блока
Не относятся. Новые переменные добавлены только для заданий/уведомлений.

Авторизуйтесь, чтобы написать комментарий