logo

[ELMA3] Сценарии, выполняемые по событию

В этом примере рассмотрен сценарий обработки события создания нового документа. Сценарий запускается после того, как пользователь нажмет кнопку Сохранить при создании документа. Сценарий сохранит в атрибуте Описание значение атрибута Отправитель. Нам понадобится документ типа Факс с атрибутом Отправитель, тип, системный объект Контрагент. Сценарий лучше разместить в отдельном объекте, для этого создайте объект без свойств, можете назвать его ServiceScenarios.

Для работы сценария нужно подключить глобальную сборку

NHibernate

и следующие пространства имен:

using    EleWise.ELMA.Documents.Models;
using    EleWise.ELMA.Runtime.Managers;
using    EleWise.ELMA.Runtime.NH.Listeners;
using    EleWise.ELMA.ConfigurationModel;
using    EleWise.ELMA.ComponentModel;
using    NHibernate.Event;

Текст сценария:

[Component] 
 public class ReSaveNameDoc : PostFlushEventListener
 {   
    // событие создание объекта/документа
     public override void OnPostInsert(PostInsertEvent @event) 
     {    
          //    Определяем тип документа
          //----------------------------------------------------------
          if(@event.Entity  is  IDocFax)    //   интерфейс  документа  типа  Факс
          {
              var TMPDoc    = (IDocFax)@event.Entity;    //  приведение к типу
              if(TMPDoc.Otpravitel!=null)
              {       // заполняем атрибут Описание документа
                      TMPDoc.Description = "Отправитель   "  +  TMPDoc.Otpravitel.Name.Trim();     
              }
           } 
      }
  }

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

Текст сценария:

     // событие редактирования объекта/документа
     public override void  OnPostUpdate(PostUpdateEvent @event) 
     {    
          //    Определяем  тип документа
          //----------------------------------------------------------
          if(@event.Entity  is  IDocFax)    //   интерфейс  документа  типа  Факс
          {
              //  приведение к типу  
              var TMPDoc    = (IDocFax)@event.Entity;       
              //  заполняем атрибут Описание документа           
              TMPDoc.Description  =  "Документ отредактирован  "  + DateTime.Now.ToString();    
          } 
      }