Работа с кубами и справочниками ADOMD

Кубы и справочники ADOMD являются дочерними объектами каталога ADOMD, поэтому обращение к ним из прикладного кода осуществляется по ключу, либо с использованием свойства ItemByIdNamespace. Для получения открытых экземпляров объектов, также как и при работе с объектами репозитория, предназначены методы Open или OpenWithParam.

Кубы ADOMD

Структура куба ADOMD поддерживает интерфейс ICubeModel. Для совместимости с различными инструментами в «Форсайт. Аналитическая платформа» также реализована поддержка интерфейса ICubeInstance. Для этого у открытого экземпляра куба ADOMD можно использовать свойство CubeInstance. После получения экземпляра, описываемого интерфейсом ICubeInstance, можно получить матрицу с фактическими данными куба или произвести какие-либо другие действия.

Рассмотрим пример создания экспресс-отчета на базе куба ADOMD:

Sub CreateExpress;
Var
    MB: IMetabase;
    CreateInfo: IMetabaseObjectCreateInfo;
    Express: IEaxAnalyzer;
    CubeAdoMd: IAdoMdCubeInstance;
Begin
    MB := MetabaseClass.Active;
    //Информация для создания каталога ADOMD
    CreateInfo := MB.CreateCreateInfo;
    CreateInfo.Id := MB.GenerateId("ADOMDExpressReport");
    CreateInfo.ClassId := MetabaseObjectClass.KE_CLASS_EXPRESSREPORT;
    CreateInfo.Parent := MB.ItemById("F_ADOMD");
    //Создание экспресс-отчета
    Express := MB.CreateObject(CreateInfo).Edit As IEaxAnalyzer;
    //Получение открытого экземпляра куба ADOMD
    CubeAdoMd := MB.ItemByIdNamespace("TEST", MB.GetObjectKeyById("MAS_TEST")).Open(NullAs IAdoMdCubeInstance;
    //Установка куба в качестве источника данных для экспресс-отчета
    Express.OpenCube(CubeAdoMd.CubeInstance);
    (Express As IMetabaseObject).Save;
End Sub CreateExpress;

При выполнении примера будет создан новый экспресс-отчет на базе указанного куба ADOMD. При открытии отчета куб выполнит все необходимые действия для извлечения данных, а экспресс-отчет отобразит их.

Справочники ADOMD

Структура справочника ADOMD поддерживает интерфейс IDimensionModel. Для совместимости с различными инструментами продукта «Форсайт. Аналитическая платформа» также реализована поддержка интерфейса IDimInstance. Для этого у открытого экземпляра справочника ADOMD можно использовать свойство DimensionInstance. После получения экземпляра, описываемого интерфейсом IDimInstance, можно работать с элементами измерения или произвести какие-либо другие действия.

Рассмотрим пример использования справочника ADOMD на форме и отображения его элементов в компоненте DimensionTree:

Для выполнения примера предполагается наличие формы и расположенных на ней компонентов UiDimension и DimensionTree с наименованиями «UiDimension1» и «DimensionTree1» соответственно. Для формы установим обработчик события OnCreate со следующим кодом:

Class TESTForm: Form
    UiDimension1: UiDimension;
    DimensionTree1: DimensionTree;

    Sub TESTFormOnCreate(Sender: Object; Args: IEventArgs);
    Var
        MB: IMetabase;
        ADOMDDim: IAdoMdDimensionInstance;
        DimInst: IDimInstance;
    Begin
        MB := MetabaseClass.Active;
        ADOMDDim := MB.ItemByIdNamespace("TESTDIM", MB.GetObjectKeyById("MAS_TEST")).Open(NullAs IAdoMdDimensionInstance;
        UiDimension1.Active := False;
        UiDimension1.Instance := ADOMDDim.DimensionInstance;
        DimensionTree1.Dimension := UiDimension1;
    End Sub TESTFormOnCreate;

End Class TESTForm;

При запуске формы будет получен открытый экземпляр справочника ADOMD. Данный экземпляр будет загружен в компонент «UiDimension1», который будет установлен в качестве источника данных для «DimensionTree1».

Справочники ADOMD используются не только кубами ADOMD. Они также могут использоваться и другими объектами репозитория: например, на базе справочников ADOMD может быть построен стандартный куб или справочник ADOMD может выступать в качестве элемента управления в регламентных отчетах.

См. также:

Введение в сборку AdoMd