Настройка обработки событий отчета

Для экспресс отчётов можно настроить обработку событий, возникающих при работе с отчётом:

Обработчик событий передает параметры отчёта, с которыми производилось вычисление, и позволяет выполнять заданное с помощью кода действие при каждом возникновении события.

Задание параметров обработчика событий для экспресс-отчётов осуществляется на вкладке «Обработка событий» диалога «Параметры».

Для открытия диалога «Параметры»

Для настройки обработки событий экспресс-отчёта:

  1. Установите флажки «Глобальный обработчик вычисления отчётов» и «Экспресс-отчёты».

  2. Выберите сборку, модуль или форму, в которой описан класс, реализующий события экспресс-отчёта.

  3. Выберите класс, содержащий обработчики событий. В раскрывающемся списке «Класс» будут отображены все классы выбранной сборки, модуля или формы.

Примечание. Включить обработку событий можно только в настольном приложении.

Пример Fore

Для выполнения примера создадим модуль и подключим его как обработчик событий для экспресс-отчётов. Подключим системные сборки: Dimensions, Export, Express, Forms, Metabase. Добавим несколько обработчиков событий:

Public Class EventsClass: ExpressEvents
param_comment: string;

Public Sub OnAfterExecuteAnalyzer(Args: IEaxAfterExecuteEventArgs);
Var DSSet: IDimSelectionSet;
Begin
    DSSet := args.AnalyzerData.SheetData.Selection;
    // получение строки-списка отмеченных элементов в измерениях экспресс-отчета
    param_comment := GetEaXReportParams(DSSet);
    // добавление записи в протокол доступа с требуемым комментарием
    args.AnalyzerData.Descriptor.CheckAndAudit(2"Выполнение отчета." + param_comment);
End Sub OnAfterExecuteAnalyzer;

Public Sub OnAfterPrintAnalyzer(Args: IEaxAfterPrintEventArgs);
Var DSSet: IDimSelectionSet;
Begin
    DSSet := args.AnalyzerData.SheetData.Selection;
    param_comment := GetEaXReportParams(DSSet);
    debug.WriteLine(param_comment);
End Sub OnAfterPrintAnalyzer;

Public Sub OnAfterExportAnalyzer(Args: IEaxAfterExportEventArgs);
Var DSSet: IDimSelectionSet;
Begin
    DSSet := args.AnalyzerData.SheetData.Selection;
    param_comment := GetEaXReportParams(DSSet);
    debug.WriteLine(param_comment);
End Sub OnAfterExportAnalyzer;

End Class EventsClass;

// получение строки-списка отмеченных элементов в измерениях экспресс-отчета
Public Function GetEaXReportParams(ExArDsset: IDimSelectionSet): string;
Var ControlStr: string;
    i, DimCnt: integer;
    DimName: string;
    selection: idimselection;
Begin
    dimCnt := ExArDsset.Count;
    ControlStr := "Параметры отчета: ";
    For i := 0 To dimCnt - 1 Do

        DimName := ExArDsset.Item(i).Dimension.Name;
        ControlStr := ControlStr + DimName + ": ";
        selection := ExArDsset.Item(i);
        If selection.SelectedCount = 0 Then
            ControlStr := ControlStr + ": <не выбрано>. ";
            Else
            ControlStr := ControlStr + ": " + Selection.ToString;
        End If;
    End For;
    Return ControlStr;
End Function GetEaXReportParams;

После выполнения примера при наступлении события обновления таблицы в протокол доступа будет занесена информация о выделенных измерениях. При печати и экспорте информация будет выведена в консоль разработчика. Пример строки:

Примечание: Выполнение отчета. Параметры отчета: Факты: : ФактСтраны: : Албания,Бельгия,Босния и Герцеговина,Хорватия,Кипр,Чешская Республика,Гренландия,Венгрия,Италия,Латвия Показатели: : Прирост ВВП (% в год)Календарь: : 2005,2006,2007,2008,2009,2010

Примечание. В качестве обработчика событий использовать модули Fore.NET нельзя.

См. также:

Работа с экспресс-отчетом