BeginUpdate;
Метод BeginUpdate инициализирует обновление измерения.
Метод рекомендуется использовать при изменении отметки управляющего измерения для блокировки обновления зависимых измерений. После выставления отметки по управляющему измерению снимите блокировку обновления зависимых измерений.
Метод используется для регламентного отчёта, где источником данных является куб с управляющими измерениями.
Метод BeginUpdate применятся совместно с методом EndUpdate:
при вызове метода BeginUpdate блокируется обновление зависимых измерений;
после вызова метода EndUpdate обновляются зависимые измерения.
Для выполнения примера:
Создайте регламентный отчёт.
Добавьте в качестве источника данных стандартный куб с управляющими измерениями. Одно из измерений с идентификатором «Customers», от которого зависят другие измерения.
Добавьте в область данных срез.
Перенесите добавленный срез на лист отчёта, используя механизм Drag&Drop.
Создайте обработчик событий.
В модуле подключите системные сборки: Report, Dimensions.
Задайте для события OnBeforeExecuteReport обновление измерений при изменении отметки:
Public Sub OnBeforeExecuteReport(Report: IPrxReport; Var Cancel: Boolean);
Var
DtSources: IPrxDataSources;
Slices: IPrxSlices;
SliceDim: IPrxSliceDimension;
Begin
Report := PrxReport.ActiveReport;
// Зададим источник данных отчета
DtSources := Report.DataSources;
// Зададим срез и измерение среза по идентификатору
Slices := DtSources.Item(0).Slices;
SliceDim := Slices.Item(0).LeftHeader.FindById("Customers");
// Инициализируем обновление измерения по заданным отметкам
SliceDim.BeginUpdate;
SliceDim.Selection.DeselectAll;
SliceDim.Selection.selectelement(1, True);
SliceDim.Selection.selectelement(2, True);
SliceDim.EndUpdate;
End Sub OnBeforeExecuteReport;
В регламентном отчёте после нажатия на кнопку «Обновить» на вкладке «Главная» ленты инструментов произойдет событие, при котором изменится отметка заданного измерения, а зависимые измерения перестроятся под данную отметку.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Dimensions;
Public Override Sub OnBeforeExecuteReport(Report: IPrxReport; Var Cancel: Boolean);
Var
DtSources: IPrxDataSources;
Slices: IPrxSlices;
SliceDim: IPrxSliceDimension;
DI: IPrxDataIsland;
Begin
// Зададим источник данных отчёта
DtSources := Report.DataSources;
// Зададим срез и измерение среза по идентификатору
Slices := DtSources.Item[0].Slices;
SliceDim := Slices.Item[0].LeftHeader.FindById("Customers");
// Инициализируем обновление измерения по заданным отметкам
SliceDim.BeginUpdate();
SliceDim.Selection.DeselectAll();
SliceDim.Selection.selectelement(1, True);
SliceDim.Selection.selectelement(2, True);
SliceDim.EndUpdate();
End Sub OnBeforeExecuteReport;
См. также: