IEaxDataAreaSources.ControlledObjects

Синтаксис

ControlledObjects: IMetabaseObjectDescriptors;

ControlledObjects: Prognoz.Platform.Interop.Metabase.IMetabaseObjectDescriptors;

Описание

Свойство ControlledObjects возвращает коллекцию описаний объектов репозитория, которые используются в качестве источников данных аналитической области.

Пример

Для выполнения примера в репозитории предполагается наличие стандартного куба с идентификатором CUBE и экспресс-отчёта с идентификатором EXPRESS_REPORT. Экспресс-отчёт содержит два листа, для которых выбраны источники данных, отображаемые в аналитической области.

Добавьте ссылки на системные сборки: Express, Metabase, Cube.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Exp: IEaxAnalyzer;
    ExpDs: IEaxDataSources;
    Area: IEaxDataArea;
    Sources: IEaxDataAreaSources;
    ControlledObjects: IMetabaseObjectDescriptors;
    Sheet: IEaxSheet;
    Cube: IMetabaseObjectDescriptor;
    CubeInstance: ICubeInstance;
    i, Count: Integer;
Begin
    
// Получим репозиторий
    MB := MetabaseClass.Active;
    
// Получим экспресс-отчёт
    MObj := MB.ItemById("EXPRESS_REPORT").Edit;
    Exp := MObj 
As IEaxAnalyzer;
    
// Получим источники данных аналитической области
    ExpDs := Exp.DataSources;
    Area := Exp.DataArea;
    Sources := Area.DataSources;
    ControlledObjects := Sources.ControlledObjects;
    
// Создадим новый лист
    Sheet := Exp.Sheets.Add(Exp);
    
// Получим новый источник данных
    Cube := MB.ItemById("CUBE");
    ControlledObjects.Add(Cube);
    
// Добавим полученный источник на новый лист
    CubeInstance := Cube.Open(NullAs ICubeInstance;
    Sheet.Analyzer.OpenCube(CubeInstance);
    
// Сохраним экспресс-отчёт
    MObj.Save;
    
// Выведем в консоль наименования всех используемых источников на листах отчёта
    Count := ControlledObjects.Count;
    
For i := 0 To Count-1 Do
        Debug.WriteLine(ControlledObjects.Item(i).Name);
    
End For;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Cube;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Exp: EaxAnalyzer;
    ExpDs: IEaxDataSources;
    Area: IEaxDataArea;
    Sources: IEaxDataAreaSources;
    ControlledObjects: IMetabaseObjectDescriptors;
    Sheet: IEaxSheet;
    Cube: IMetabaseObjectDescriptor;
    CubeInstance: ICubeInstance;
    i, Count: Integer;
Begin
    
// Получим репозиторий
    MB := Params.Metabase;
    
// Получим экспресс-отчёт
    MObj := MB.ItemById["EXPRESS_REPORT"].Edit();
    Exp := MObj 
As EaxAnalyzer;
    
// Получим источники данных аналитической области
    ExpDs := Exp.DataSources;
    Area := Exp.DataArea;
    Sources := Area.DataSources;
    ControlledObjects := Sources.ControlledObjects;
    
// Создадим новый лист
    Sheet := Exp.Sheets.Add(Exp);
    
// Получим новый источник данных
    Cube := MB.ItemById["CUBE"];
    ControlledObjects.Add(Cube);
    
// Добавим полученный источник на новый лист
    CubeInstance := Cube.Open(NullAs ICubeInstance;
    Sheet.Analyzer.OpenCube(CubeInstance);
    
// Сохраним экспресс-отчёт
    MObj.Save();
    
// Выведем в консоль наименования всех используемых источников на листах отчёта
    Count := ControlledObjects.Count;
    
For i := 0 To Count-1 Do
        System.Diagnostics.Debug.WriteLine(ControlledObjects.Item[i].Name);
    
End For;
End Sub;

После выполнения примера в экспресс-отчёте будет добавлен новый лист с заданным источником данных. В консоль будут выведены наименования всех источников данных, которые используются на листах отчёта, например:

Куб социально-экономических показателей

Куб финансовых показателей

Куб платежного баланса

См. также:

IEaxDataAreaSources