IEaxDataAreaSlices.Add

Синтаксис Fore

Add(Type: EaxDataAreaSliceType): IEaxDataAreaSlice;

Синтаксис Fore.NET

Add(Type: Prognoz.Platform.Interop.Express.EaxDataAreaSliceType):
Prognoz.Platform.Interop.Express.IEaxDataAreaSlice;

Параметры

Type. Тип среза данных.

Описание

Метод Add создает срез аналитической области данных.

Комментарии

Для очистки коллекции срезов аналитической области данных используйте IEaxDataAreaSlices.Clear.

Для получения типа среза аналитической области данных используйте IEaxDataAreaSlice.Type.

Пример Fore

Для выполнения примера предполагается наличие в репозитории регламентного отчета с идентификатором «REPORT». В отчете добавлен источник данных, имеющий в своей структуре измерения с идентификаторами «CALENDAR» и «COUNTRY». Подключите системные сборки Dimensions, Drawing, Express, System, Metabase, Pivot, Report.

Sub UserProc;
Var
    MB: IMetabase;
    Report: IPrxReport;
    DA: IEaxDataArea;
    Slice: IEaxDataAreaSlice;
    Pivot: IPivot;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    DimInst: IDimInstance;
    View: IEaxGrid;
    Rect: IGxRect;
    ViewSets: IEaxGridViewSettings;
    T_Header, L_Header: IDataAreaHeaderSettingsBase;
Begin
    //Доступ к репозиторию
    MB := MetabaseClass.Active;
    //Регламентный отчет
    Report := MB.ItemById("REPORT").Edit As IPrxReport;
    // Получим область данных
    DA := Report.DataArea;
    // Добавим срез данных
    Slice := DA.Slices.Add(EaxDataAreaSliceType.Pivot);
    Slice.CreateSource;
    Slice.Execute;
    // Получаем таблицу данных
    Pivot := (Slice As IEaxDataAreaPivotSlice).Pivot;
    // Размещаем источник в таблице
    Pivot.DataSource := Report.DataSources.Item(0).DataSource;
    //Размещение измерений и установка отметки
    Pivot.BeginSelectionUpdate;
    DimSS := Pivot.Selection;
    For Each DimS In DimSS Do
        DimInst := DimS.Dimension;
        If DimInst.Ident = "COUNTRY" Then
            Pivot.LeftHeader.AddDim(DimInst);
            //Отметить два первых элемента
            DimS.SelectElement(0False);
            DimS.SelectElement(1False);
        Elseif DimInst.Ident = "CALENDAR" Then
            Pivot.TopHeader.AddDim(DimInst);
            //Отметить элементы уровня, на котором расположен первый элемент
            DimS.SelectSiblings(0);
        Else
            Pivot.FixedHeader.AddDim(DimInst);
            //Отметить первый элемент
            DimS.SelectElement(0False);
        End If;
    End For;
    Pivot.EndSelectionUpdate;
    //Табличное представление данных
    View := Slice.Views.AddByType(EaxObjectType.Grid) As IEaxGrid;
    View.Pivot := Pivot;
    View.TabSheet := (Report.ActiveSheet As IPrxTable).TabSheet;
    Rect := New GxRect.Create(0000);
    View.OutputRect := Rect;
    //Установим методы вставки
    ViewSets := View.ViewSettings;
    T_Header := Pivot.TopHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings(T_Header) As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.Insert;
    L_Header := Pivot.LeftHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings(L_Header) As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.Insert;
    //Сохраним изменения
    Report.MetabaseObject.Save;
End Sub UserProc;

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

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Pivot;
Imports Prognoz.Platform.Interop.Report;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Report: IPrxReport;
    DA: IEaxDataArea;
    Slice: IEaxDataAreaSlice;
    Pivot: PivotFactory;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    DimInst: IDimInstance;
    View: IEaxGrid;
    Rect: GxRect = New GxRectClass();
    ViewSets: IEaxGridViewSettings;
    T_Header, L_Header: IDataAreaHeaderSettingsBase;
Begin
    //Доступ к репозиторию
    MB := Params.Metabase;
    //Регламентный отчет
    Report := MB.ItemById["REPORT"].Edit() As IPrxReport;
    // Получим область данных
    DA := Report.DataArea;
    // Добавим срез данных
    Slice := DA.Slices.Add(EaxDataAreaSliceType.edastPivot);
    Slice.CreateSource();
    Slice.Execute();
    // Получаем таблицу данных
    Pivot := (Slice As IEaxDataAreaPivotSlice).Pivot;
    // Размещаем источник в таблице
    Pivot.DataSource := Report.DataSources.Item[0].DataSource;
    //Размещение измерений и установка отметки
    Pivot.BeginSelectionUpdate();
    DimSS := Pivot.Selection;
    For Each DimS In DimSS Do
        DimInst := DimS.Dimension;
        If DimInst.Ident = "COUNTRY" Then
            Pivot.LeftHeader.AddDim(DimInst);
            //Отметить два первых элемента
            DimS.SelectElement(0False);
            DimS.SelectElement(1False);
        Elseif DimInst.Ident = "CALENDAR" Then
            Pivot.TopHeader.AddDim(DimInst);
            //Отметить элементы уровня, на котором расположен первый элемент
            DimS.SelectSiblings(0);
        Else
            Pivot.FixedHeader.AddDim(DimInst);
            //Отметить первый элемент
            DimS.SelectElement(0False);
        End If;
    End For;
    Pivot.EndSelectionUpdate();
    //Табличное представление данных
    View := Slice.Views.AddByType(EaxObjectType.eotGrid) As IEaxGrid;
    View.Pivot := Pivot;
    View.TabSheet := (Report.ActiveSheet As IPrxTable).TabSheet;
    Rect.Create(0000);
    View.OutputRect := Rect;
    //Установим методы вставки
    ViewSets := View.ViewSettings;
    T_Header := Pivot.TopHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings[T_Header] As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.eghbInsert;
    L_Header := Pivot.LeftHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings[L_Header] As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.eghbInsert;
    //Сохраним изменения
    Report.MetabaseObject.Save();
End Sub;

См. также:

IEaxDataAreaSlices