IPrxSliceDimension.BeginUpdate

Синтаксис

BeginUpdate: Object;

Описание

Метод BeginUpdate инициализирует обновление измерения.

Комментарии

Метод рекомендуется использовать при изменении отметки управляющего измерения для блокировки обновления зависимых измерений. После выставления отметки по управляющему измерению снимите блокировку обновления зависимых измерений.

В разных версиях Prognoz Platform метод BeginUpdate имеет особенности использования:

Метод используется для регламентного отчёта, где источником данных является куб с управляющими измерениями.

Пример Fore

Для выполнения примера:

  1. Создайте регламентный отчёт.

  2. Добавьте в качестве источника данных стандартный куб с управляющими измерениями. Одно из измерений с идентификатором «Customers», от которого зависят другие измерения.

  3. Добавьте в область данных срез.

  4. Перенесите добавленный срез на лист отчёта, используя механизм Drag&Drop.

  5. Создайте обработчик событий.

  6. В модуле подключите системные сборки: Report, Dimensions.

  7. Задайте для события OnBeforeExecuteReport обновление измерений при изменении отметки.

Пример использования метода BeginUpdate для версии Prognoz Platform ниже 8.2.200:

Public Sub OnBeforeExecuteReport(Report: IPrxReport; Var Cancel: Boolean);
Var
    Selset: IDimSelectionSet;
    Dims: IPRxSliceDimensions;
    SliceDim: IDimSelection;
    DtSources: IPrxDataSources;
    Obj: Object;
Begin
    Report := PrxReport.ActiveReport;
    // Зададим область и источник данных отчета
    DI := Report.DataIslands.Item(0);
    DtSources := Report.DataSources;
    // Определим отметку среза и объект, содержащий все измерения среза
    Selset := DtSources.Item(0).Slices.Item(0).Selection;
    Dims := DtSources.Item(0).Slices.Item(0).Dimensions;
    // Зададим измерение среза по идентификатору
    SliceDim := Selset.FindById("Customers");
    // Инициализируем обновление измерения по заданным отметкам
    Obj := Dims.FindById("Customers").BeginUpdate;
    SliceDim.SelectElement(1
True);
    SliceDim.SelectElement(2
True);
    Dispose Obj;
End Sub OnBeforeExecuteReport;

Пример использования метода BeginUpdate совместно с методом EndUpdate для версии Prognoz Platform 8.2.200 и выше:

Public Sub OnBeforeExecuteReport(Report: IPrxReport; Var Cancel: Boolean);
Var
    Selset: IDimSelectionSet;
    Dims: IPRxSliceDimensions;
    SliceDim: IDimSelection;
    DtSources: IPrxDataSources;
    Obj: Object;
Begin
    Report := PrxReport.ActiveReport;
    // Зададим область и источник данных отчета
    DtSources := Report.DataSources;
    // Определим отметку среза и объект, содержащий все измерения среза
    Selset := DtSources.Item(0).Slices.Item(0).Selection;
    Dims := DtSources.Item(0).Slices.Item(0).Dimensions;
    // Зададим измерение среза по идентификатору
    SliceDim := Selset.FindById("Customers");
    // Инициализируем обновление измерения по заданным отметкам
    Obj := Dims.FindById("Customers").BeginUpdate;
    SliceDim.SelectElement(1True);
    SliceDim.SelectElement(2True);
    Dims.FindById("Customers").EndUpdate;
End Sub OnBeforeExecuteReport;

В регламентном отчёте после нажатия на кнопку «Обновить» на вкладке «Главная» ленты инструментов произойдет событие, при котором изменится отметка заданного измерения, а зависимые измерения перестроятся под данную отметку.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Пример использования метода BeginUpdate для версии Prognoz Platform ниже 8.2.200:

Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Dimensions;

Public  Sub  OnBeforeExecuteReport(Report: IPrxReport;  Var  Cancel: Boolean);
Var
    Selset: IDimSelectionSet;
    Dims: IPRxSliceDimensions;
    SliceDim: IDimSelection;
    DtSources: IPrxDataSources;
    Obj: Object;
Begin
    // Зададим источник данных отчета
    DtSources := Report.DataSources;
    // Определим отметку среза и объект, содержащий все измерения среза
    Selset := DtSources.Item[0].Slices.Item[0].Selection;
    Dims := DtSources.Item[0].Slices.Item[0].Dimensions;
    // Зададим измерение среза по идентификатору
    SliceDim := Selset.FindById("Customers");
    // Инициализируем обновление измерения по заданным отметкам
    Obj := Dims.FindById("Customers").BeginUpdate();
    SliceDim.SelectElement(1True);
    SliceDim.SelectElement(2True);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(Obj);
End Sub OnBeforeExecuteReport;

Пример использования метода BeginUpdate совместно с методом EndUpdate для версии Prognoz Platform 8.2.200 и выше:

Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Dimensions;

Public  Sub  OnBeforeExecuteReport(Report: IPrxReport;  Var  Cancel: Boolean);
Var
    Selset: IDimSelectionSet;
    Dims: IPRxSliceDimensions;
    SliceDim: IDimSelection;
    DtSources: IPrxDataSources;
    Obj: Object;
Begin
    // Зададим источник данных отчёта
    DtSources := Report.DataSources;
    // Определим отметку среза и объект, содержащий все измерения среза
    Selset := DtSources.Item[0].Slices.Item[0].Selection;
    Dims := DtSources.Item[0].Slices.Item[0].Dimensions;
    // Зададим измерение среза по идентификатору
    SliceDim := Selset.FindById("Customers");
    // Инициализируем обновление измерения по заданным отметкам
    Obj := Dims.FindById("Customers").BeginUpdate();
    SliceDim.SelectElement(1True);
    SliceDim.SelectElement(2True);
    Dims.FindById("Customers").EndUpdate();
End Sub OnBeforeExecuteReport;

См. также:

IPrxSliceDimension