Events: IMetabaseCustomForeEvents;
Свойство Events возвращает коллекцию пользовательских событий.
Пользовательские события хранятся в метаданных репозитория. Отслеживанием наступления событий занимается планировщик задач. Для этого в контейнере задач, который указан в его настройках, должны быть задачи, запускаемые при наступлении настраиваемого события.
Событие может наступить в результате выполнения какой-либо другой задачи, если для неё задана соответствующая настройка. Также событие может быть сгенерировано из прикладного кода с помощью метода Invoke.
Добавьте ссылки на системную сборку Metabase.
Пример создания пользовательского события:
Sub UserProc;
Var
MB: IMetabase;
CustomClassExtender: IMetabaseCustomExtender;
Events: IMetabaseCustomForeEvents;
ForeEvent: IMetabaseCustomForeEvent;
Begin
MB := MetabaseClass.Active;
//Получение контейнера пользовательских классов
CustomClassExtender := Mb.SpecialObject(MetabaseSpecialObject.CustomExtender).Edit As IMetabaseCustomExtender;
//Получение списка событий
Events := CustomClassExtender.Events;
ForeEvent := Events.Add("BEGIN_LOAD");
ForeEvent.Name := "Вход в приложение";
(CustomClassExtender As IMetabaseObject).Save;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
CustomClassExtender: IMetabaseCustomExtender;
Events: IMetabaseCustomForeEvents;
ForeEvent: IMetabaseCustomForeEvent;
Begin
MB := Params.Metabase;
//Получение контейнера пользовательских классов
CustomClassExtender := Mb.SpecialObject[MetabaseSpecialObject.msoCustomExtender].Edit() As IMetabaseCustomExtender;
//Получение списка событий
Events := CustomClassExtender.Events;
ForeEvent := Events.Add("BEGIN_LOAD");
ForeEvent.Name := "Начало загрузки";
(CustomClassExtender As IMetabaseObject).Save();
End Sub;
Пример генерации пользовательского события из прикладного кода:
Sub UserProc;
Var
MB: IMetabase;
CustomExtender: IMetabaseCustomExtender;
Events: IMetabaseCustomForeEvents;
ForeEvent: IMetabaseCustomForeEvent;
Begin
MB := MetabaseClass.Active;
//Получение контейнера пользовательских классов
CustomExtender := MB.SpecialObject(MetabaseSpecialObject.CustomExtender).Edit As IMetabaseCustomExtender;
//Получение списка событий
Events := CustomExtender.Events;
ForeEvent := Events.FindByName("Начало загрузки");
//Генерация события
ForeEvent.Invoke;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main1(Params: StartParams);
Var
MB: IMetabase;
CustomExtender: IMetabaseCustomExtender;
Events: IMetabaseCustomForeEvents;
ForeEvent: IMetabaseCustomForeEvent;
Begin
MB := Params.Metabase;
//Получение контейнера пользовательских классов
CustomExtender := MB.SpecialObject[MetabaseSpecialObject.msoCustomExtender].Edit() As IMetabaseCustomExtender;
//Получение списка событий
Events := CustomExtender.Events;
ForeEvent := Events.FindByName("Начало загрузки");
//Генерация события
ForeEvent.Invoke(Null);
End Sub;
См. также: