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(Null) As 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(Null) As 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;
После выполнения примера в экспресс-отчёте будет добавлен новый лист с заданным источником данных. В консоль будут выведены наименования всех источников данных, которые используются на листах отчёта, например:
Куб социально-экономических показателей
Куб финансовых показателей
Куб платежного баланса
См. также: