GetDimInstance(DimModel: IMetabaseObjectDescriptor, Stub: IVariableStub): IDimInstance;
DimModel. Справочник, используемый в абстрактном источнике данных;
Stub. Абстрактный источник данных.
Метод GetDimInstance возвращает данные справочника из абстрактного источника данных.
Метод актуален для получения данных справочника, которые используются при расчёте задачи моделирования с учётом управляющих измерений в кубе.
Абстрактным источником данных может выступать:
стандартный куб;
виртуальный куб;
представление-куб;
база данных временных рядов;
переменная моделирования, являющаяся отдельным объектом в репозитории.
Для получения абстрактного источника данных приведите требуемый объект к интерфейсу IVariableStub.
Для выполнения примера предполагается наличие в репозитории контейнера моделирования с идентификатором CONT_MODEL, в котором содержится задача моделирования с идентификатором PROBLEM и метамодель. Для метамодели должна быть задана цепочка расчёта, в которой используется стандартный куб с идентификатором CUBE с управляющим измерением, и параметр типа «Отметка». В качестве управляющего измерения и параметра для метамодели используется параметрический табличный справочник НСИ с идентификатором DIMENSION_PARAM.
Добавьте ссылки на системные сборки: Metabase, Ms, Cubes, Dimensions.
Sub UserProc;
Var
Mb: IMetabase;
MsKey, i: Integer;
Problem: IMsProblem;
MetaModel: IMsMetaModel;
Stub: IVariableStub;
ParamDim: IMetabaseObjectDescriptor;
DimInst: IDimInstance;
Elements: IDimElements;
DimSelect: IDimSelection;
Name: String;
Settings: IMsProblemCalculationSettings;
Calc: IMsProblemCalculation;
ParamValues: IMsModelParamValues;
Begin
// Получим текущий репозиторий
Mb := MetabaseClass.Active;
// Получим ключ контейнера моделирования
MsKey := Mb.GetObjectKeyById("CONT_MODEL");
// Получим задачу моделирования
Problem := Mb.ItemByIdNamespace("PROBLEM", MsKey).Edit As IMsProblem;
// Получим метамодель
MetaModel := Problem.MetaModel;
// Получим абстрактный источник данных (куб) и данные справочника
Stub := Mb.ItemById("CUBE").Bind As IVariableStub;
ParamDim := Mb.ItemById("DIMENSION_PARAM");
DimInst := MetaModel.GetDimInstance(ParamDim, Stub);
// Выведем в консоль наименования полученных элементов справочника
Elements := DimInst.Elements;
For i := 0 To Elements.Count - 1 Do
Name := Elements.Name(i);
Debug.WriteLine(Name);
End For;
// Зададим настройки расчёта задачи моделирования
Settings := Problem.CreateCalculationSettings;
// Получим параметр метамодели
и зададим отметку из полученных элементов справочника
ParamValues := Settings.ParamValues;
DimSelect := DimInst.CreateSelection;
DimSelect.SelectElement(1, False);
DimSelect.SelectElement(3, False);
ParamValues.Item(0).Value := DimSelect;
Calc := Problem.Calculate(Settings);
// Рассчитаем задачу моделирования
Calc.Run;
End Sub UserProc;
После выполнения примера будут получены данные справочника из абстрактного источника данных и рассчитана задача моделирования с заданной отметкой в параметре метамодели из полученных элементов справочника с индексом «1» и «3». В консоль будут выведены наименования всех элементов справочника.
См. также: