logo

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

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

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

NHibernate

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

1
2
3
4
5
6
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;

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[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();    
              }
           }
      }
  }

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

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

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