GetEventFactory
Объект для работы с лентами событий
Добавлено в версии 5.57.0.
Методы
- GetEventFactory.CreateMessageEventFilter()
Возвращает фильтр событий сообщений
- GetEventFactory.GetEventsChunk(Filter)
- Filter:
Произвольный тип, чтение — фильтр событий
Принимает фильтр событий и возвращает первый блок событий. На данный момент для MessageEventFilter возвращает MessageEventsChunk
Дополнительная информация
Пример кода
Перем КоличествоЧанков;
Перем КоличествоСобытий;
Перем КоличествоИзменений;
Процедура АнализЧанкаСобытий(dd_Chunk)
dd_Repflector = ПолучитьReflector(); // см. https://developer.kontur.ru/Docs/Diadoc/COM/HowTo/HowTo_reflect_object.html
КоличествоЧанков = КоличествоЧанков + 1;
Для Каждого dd_Event Из dd_Chunk.Events Цикл
КоличествоСобытий = КоличествоСобытий + 1;
dd_TypeDesc_Event = dd_Reflector.Describe(dd_Event);
Если "INewMessage" = dd_TypeDesc_Event.GetInterfaceName() Тогда
Сообщить("Новые документы!");
КоличествоИзменений = КоличествоИзменений + 1;
Иначе
Для Каждого dd_EventItem Из dd_Event.Items Цикл
dd_TypeDesc_EventDetails = dd_Reflector.Describe(dd_EventItem.Details);
Сообщить(dd_TypeDesc_EventDetails.GetInterfaceName());
КоличествоИзменений = КоличествоИзменений + 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЧитатьЛентуСобытий(dd_Box)
dd_EventFactory = dd_Box.GetEventFactory;
КоличествоЧанков = 0;
КоличествоСобытий = 0;
КоличествоИзменений = 0;
dd_Filter = dd_EventFactory.CreateMessageEventFilter();
dd_Filter.AfterIndexKey = ПолучитьЗапомненныйIndexKey(); // предполагается, что пользователь где-то хранит последний полученный IndexKey
dd_Filter.Directions.Inbound = True;
НачалоЧтения = ТекущаяДата();
dd_Chunk = dd_EventFactory.GetEventsChunk(dd_Filter);
АнализЧанкаСобытий(dd_Chunk);
Пока Не dd_Chunk.IsLast Цикл
LastIndexKey = dd_Chunk.IndexKey;
dd_Chunk = dd_Chunk.Next();
АнализЧанкаСобытий(dd_Chunk);
КонецЦикла;
КонецЧтения = ТекущаяДата();
Сообщить("Лента прочитана за: " + Строка(КонецЧтения - НачалоЧтения));
Сообщить("Прочитано чанков: " + КоличествоЧанков);
Сообщить("Прочитано событий: " + КоличествоСобытий);
Сообщить("Прочитано изменений: " + КоличествоИзменений);
КонецПроцедуры