Для экспресс отчётов можно настроить обработку событий, возникающих при работе с отчётом:
OnBeforeExecuteAnalyzer - реализует событие, наступающее перед вычислением таблицы;
OnAfterExecuteAnalyzer - реализует событие, наступающее после вычисления таблицы;
OnBeforeExportAnalyzer - реализует событие, наступающее перед экспортом отчета;
OnAfterExportAnalyzer - реализует событие, наступающее после экспорта отчета;
OnBeforePrintAnalyzer - реализует событие, наступающее перед печатью отчета;
OnAfterPrintAnalyzer - реализует событие, наступающее после печати отчета.
Обработчик событий передает параметры отчёта, с которыми производилось вычисление, и позволяет выполнять заданное с помощью кода действие при каждом возникновении события.
Задание параметров обработчика событий для экспресс-отчётов осуществляется на вкладке «Обработка событий» диалога «Параметры».
Для открытия
диалога «Параметры»

Для настройки обработки событий экспресс-отчёта:
Установите флажки «Глобальный обработчик вычисления отчётов» и «Экспресс-отчёты».
Выберите сборку, модуль или форму, в которой описан класс, реализующий события экспресс-отчёта.
Выберите класс, содержащий обработчики событий. В раскрывающемся списке «Класс» будут отображены все классы выбранной сборки, модуля или формы.
Примечание. Включить обработку событий можно только в настольном приложении.
Для выполнения примера создадим модуль и подключим его как обработчик событий для экспресс-отчётов. Подключим системные сборки: 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 нельзя.
См. также: