IMsCalculationChainIterator.DimOpenParams

Синтаксис Fore

DimOpenParams: IMsDimOpenParamValue;

Синтаксис Fore.NET

DimOpenParams: Prognoz.Platform.Interop.Ms.IMsDimOpenParamValue;

Описание

Свойство DimOpenParams определяет значение параметра, с которым открывается измерение, по которому задана отметка для расчёта цикла.

Комментарии

Для установки отметки, используемой для расчёта цикла, используйте свойство IMsCalculationChainIterator.Selection.

Пример Fore

Для выполнения примера в репозитории предполагается наличие:

Добавьте ссылки на системные сборки: «Ms», «Metabase», «Dimensions», «Cubes», «Dal».

Sub UserProc;
Var
    mb: IMetabase;
    msKey, cubeKey: Integer;
    metaModel: IMsMetaModel;
    stubParamValue: IMsDimOpenStubParamValue;
    dimOpenParamValue: IMsDimOpenParamValue;
    openParams: IMetabaseObjectParamValues;
    dimInstance: IDimInstance;
    iteratorSelection: IDimSelection;
    iterator: IMsCalculationChainIterator;
    param: IMsModelParam;
    dDescr: IMetabaseObjectDescriptor;
Begin
    mb := MetabaseClass.Active;
    // Получаем метамодель
    msKey := mb.ItemById("MS_PARAM").Key;
    metaModel := mb.ItemByIdNamespace("META_MODEL", msKey).Edit As IMsMetaModel;
    // Очищаем цепочку расчёта метамодели
    metaModel.CalculationChain.Clear;
    // Очищаем значения параметров измерений, используемых для расчёта метамодели
    metaModel.DimOpenStubParamValues.Clear;
    // Очищаем параметры метамодели
    metaModel.Params.Clear;
    // Создаём новый параметр, ссылающийся на справочник DICT_PARAM
    param := metaModel.Params.Add;
    param.DataType := DbDataType.Integer;
    param.LinkedObject := mb.ItemById("DICT_PARAM");
    param.DefaultValue := Null;
    param.Hidden := True;
    { Создаем новое значение параметра для изменения источника данных,
    используемого для расчёта метамодели}

    cubeKey := mb.ItemById("CUBE_PARAM").Key;
    stubParamValue := metaModel.DimOpenStubParamValues.Add(cubeKey);
    stubParamValue.StubValues := mb.Item(cubeKey).Bind.ParamValues;
    // Добавляем значение параметра измерния, используемого для расчёта метамодели
    dDescr := mb.ItemById("DICT_PARAM");
    dimOpenParamValue := stubParamValue.Values.add(dDescr.Bind As IDimensionModel);
    // Задаем значение для параметра справочника DICT_PARAM
    dimOpenParamValue.Values.FindById("COUNTRY_PARAM").Value := 17724;
    // Задаем значение для параметра источника данных
    stubParamValue.StubValues.FindById("COUNTRY").Value := 17724;
    // Получаем отметку измерения с учетом значения параметра
    openParams := dDescr.Bind.ParamValues;
    openParams.FindById("COUNTRY_PARAM").Value := 17724;
    dimInstance := dDescr.Open(openParams) As IDimInstance;
    iteratorSelection := dimInstance.CreateSelection;
    iteratorSelection.SelectAll;
    // Создаем цикл метамодели
    iterator := metaModel.CalculationChain.AddIterator("Цикл 'Справочник с параметром'");
    // Задаем отметку
    iterator.Selection := iteratorSelection;
    // Устанавливаем параметр
    iterator.Parameter := param;
    // Передаем параметр для открытия измерения, по которому сделана отметка, в цикл
    iterator.DimOpenParams := dimOpenParamValue;
    // Сохраняем метамодель
    (metaModel As IMetabaseObject).Save;
End Sub UserProc;

Результат выполнения примера: в метамодели «META_MODEL» создан цикл и задано значение параметра, с которым открывается измерение, по которому задана отметка для расчёта цикла.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с необходимыми требованиями и результатом выполнения примера Fore.

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    msKey, cubeKey: uinteger;
    metaModel: IMsMetaModel;
    stubParamValue: IMsDimOpenStubParamValue;
    dimOpenParamValue: IMsDimOpenParamValue;
    openParams: IMetabaseObjectParamValues;
    dimInstance: IDimInstance;
    iteratorSelection: IDimSelection;
    iterator: IMsCalculationChainIterator;
    param: IMsModelParam;
    dDescr: IMetabaseObjectDescriptor;
Begin
    mb := Params.Metabase;
    // Получаем метамодель
    msKey := mb.ItemById["MS_PARAM"].Key;
    metaModel := mb.ItemByIdNamespace["META_MODEL", msKey].Edit() As IMsMetaModel;
    // Очищаем цепочку расчёта метамодели
    metaModel.CalculationChain.Clear();
    // Очищаем значения параметров измерений, используемых для расчёта метамодели
    metaModel.DimOpenStubParamValues.Clear();
    // Очищаем параметры метамодели
    metaModel.Params.Clear();
    // Создаём новый параметр, ссылающийся на справочник DICT_PARAM
    param := metaModel.Params.Add();
    param.DataType := DbDataType.ddtInteger;
    param.LinkedObject := mb.ItemById["DICT_PARAM"];
    param.DefaultValue := Null;
    param.Hidden := True;
    { Создаем новое значение параметра для изменения источника данных,
    используемого для расчёта метамодели}

    cubeKey := mb.ItemById["CUBE_PARAM"].Key;
    stubParamValue := metaModel.DimOpenStubParamValues.Add(cubeKey);
    stubParamValue.StubValues := mb.Item[cubeKey].Bind().ParamValues;
    // Добавляем значение параметра измерния, используемого для расчёта метамодели
    dDescr := mb.ItemById["DICT_PARAM"];
    dimOpenParamValue := stubParamValue.Values.add(dDescr.Bind() As IDimensionModel);
    // Задаем значение для параметра справочника DICT_PARAM
    dimOpenParamValue.Values.FindById("COUNTRY_PARAM").Value := 17724;
    // Задаем значение для параметра источника данных
    stubParamValue.StubValues.FindById("COUNTRY").Value := 17724;
    // Получаем отметку измерения с учетом значения параметра
    openParams := dDescr.Bind().ParamValues;
    openParams.FindById("COUNTRY_PARAM").Value := 17724;
    dimInstance := dDescr.Open(openParams) As IDimInstance;
    iteratorSelection := dimInstance.CreateSelection();
    iteratorSelection.SelectAll();
    // Создаем цикл метамодели
    iterator := metaModel.CalculationChain.AddIterator("Цикл 'Справочник с параметром'");
    // Задаем отметку
    iterator.Selection := iteratorSelection;
    // Устанавливаем параметр
    iterator.Parameter := param;
    // Передаем параметр для открытия измерения, по которому сделана отметка, в цикл
    iterator.DimOpenParams := dimOpenParamValue;
    // Сохраняем метамодель
    (metaModel As IMetabaseObject).Save();
End Sub;

См. также:

IMsCalculationChainIterator