Создание представления-куба

Рассмотрим пример создания представления-куба с использованием языка Fore/Fore.NET. Для создания представления-куба необходимо наличие в репозитории другого куба с идентификатором «Cube_1». Данный куб в своей структуре должен иметь календарное измерение с идентификатором «CALENDAR».

Указанный ниже пример создает в корневой папке репозитория новый объект - Представление-куб и производит настройку его параметров:

Для выполнения примеров добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase. Для Fore.NET пример также пропишите соответствующие строки Imports.

Пример Fore

Sub CreateViewCube;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    ViewCube: ICubeView;
    SourceCube: ICubeModel;
    FixInfo: ICubeDimensionFixInfo;
    DimFix: ICubeDimensionFix;
Begin
    MB := MetabaseClass.Active;
    //Информация для создания нового объекта репозитория
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_CUBEVIEW;
    CrInfo.Id := "New_View_Cube";
    CrInfo.Name := "Новый представление-куб";
    CrInfo.Parent := MB.Root;
    //Настройка параметров куба
    MObj := MB.CreateObject(CrInfo).Edit;
    ViewCube := MObj As ICubeView;
    //Указание куба источника
    SourceCube := MB.ItemById("CUBE_1").Bind As ICubeModel;
    ViewCube.Cube := SourceCube.Destinations.DefaultDestination;
    //Фиксация измерения
    FixInfo := ViewCube.FixInfo;
    DimFix := FixInfo.ItemByDim(ViewCube.Cube.Dimensions.FindById("CALENDAR"));
    DimFix.Fixed := True;
    //Указываем метод агрегации значений по фиксированным элементам
    DimFix.Operation := BasicAggregatorOperation.Sum;
    //Отмечаем весь уровень, на котором расположен первый элемент
    DimFix.Selection.SelectSiblings(0);
    //Сохранение куба
    MObj.Save;
End Sub CreateViewCube;

Пример Fore.NET

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Metabase;

Sub CreateViewCube(MB: IMetabase);
Var
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    ViewCube: ICubeView;
    SourceCube: ICubeModel;
    FixInfo: ICubeDimensionFixInfo;
    DimFix: ICubeDimensionFix;
Begin
    //Информация для создания нового объекта репозитория
    CrInfo := MB.CreateCreateInfo();
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_CUBEVIEW As Integer;
    CrInfo.Id := "New_View_Cube";
    CrInfo.Name := "Новый представление-куб";
    CrInfo.Parent := MB.Root;
    //Настройка параметров куба
    MObj := MB.CreateObject(CrInfo).Edit();
    ViewCube := MObj As ICubeView;
    //Указание куба источника
    SourceCube := MB.ItemById["CUBE_1"].Bind() As ICubeModel;
    ViewCube.Cube := SourceCube.Destinations.DefaultDestination;
    //Фиксация измерения
    FixInfo := ViewCube.FixInfo;
    DimFix := FixInfo.ItemByDim[ViewCube.Cube.Dimensions.FindById("CALENDAR")];
    DimFix.Fixed := True;
    //Указываем метод агрегации значений по фиксированным элементам
    DimFix.Operation := BasicAggregatorOperation.baoSum;
    //Отмечаем весь уровень, на котором расположен первый элемент
    DimFix.Selection.SelectSiblings(0);
    //Сохранение куба
    MObj.Save();
End Sub;

См. также:

Примеры