Для работы с обработчиками событий перейдите на вкладку «Обработка событий» диалогового окна «Модули отчета и обработка событий»:
В раскрывающемся списке «Модуль» выберите объект, который содержит в себе реализацию класса для обработки событий регламентного отчета. Список содержит все объекты, добавленные на вкладке «Модули». В выбранном объекте должен быть описан класс, унаследованный от класса ReportEvents и содержащий реализацию методов для обработки событий регламентного отчета. Если в качестве обработчика используется .NET-сборка, то класс должен быть унаследован от класса PrxForeNetReportUserEventsClass. Имя данного класса укажите в поле «Класс».
Описание класса-обработчика событий может быть создано автоматически. Для создания нового модуля/.NET-сборки нажмите кнопку «Создать» и выберите нужный тип обработчика. В указанной папке репозитория будет создан класс, содержащий шаблоны обработчиков всех событий отчета.
Класс для обработки событий может иметь конструктор, который будет вызываться при каждой инициализации класса. Конструктор должен быть без параметров. Если в классе несколько конструкторов без параметров, то будет вызываться самый первый (расположенный в коде выше других). При использовании для обработки событий .NET-сборки конструктор должен быть объявлен с модификатором доступа Public.
Примечание. Инициализация класса-обработчика происходит каждый раз, когда в отчете выполняется какое-либо действие. При этом может генерироваться как одно событие, так и целая цепочка событий.
Для вывода информационного сообщения, содержащего определенную информацию, после каждого вычисления области данных регламентного отчета создайте модуль в окне «Навигатор объектов». Добавьте ссылку на системные сборки Report и Ui:
Class EventsClass: ReportEvents
//Конструктор, вызываемый при инициализации класса EventsClass
Constructor Create;
Begin
//Инициализация каких-либо объектов
End Constructor Create;
//Событие, происходящее после вычисления области данных регламентного отчета
Public Sub OnAfterExecuteDataIsland(DataIsland: IPrxDataIsland);
Begin
WinApplication.InformationBox("Была вычислена область данных: " + DataIsland.Id);
End Sub OnAfterExecuteDataIsland;
End Class EventsClass;
Аналогичный Fore.NET обработчик выглядит следующим образом:
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Ui;
Public Class EventsClass: PrxForeNetReportUserEventsClass
//Конструктор, вызываемый при инициализации класса EventsClass
Public Constructor Create();
Begin
//Инициализация каких-либо объектов
End Constructor Create;
//Событие, происходящее после вычисления области данных регламентного отчета
Public Override Sub OnAfterExecuteDataIsland(DataIsland: IPrxDataIsland);
Var
WinAppCls: WinApplicationClass = New WinApplicationClassClass();
Begin
WinAppCls.InformationBox("Была вычислена область данных: " + DataIsland.Id, Null);
End Sub OnAfterExecuteDataIsland;
End Class EventsClass;
При наступлении события будет выдано информационное сообщение, содержащее идентификатор вычисленной области данных.
См. также: