IMsCalculationChainGroup.LevelParam

Синтаксис Fore

LevelParam: String;

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

LevelParam: string;

Описание

Свойство LevelParam определяет параметр, задающий динамику расчета группы.

Комментарии

Для задания динамики расчета напрямую используйте свойство IMsCalculationChainGroup.Level.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего метамодель с идентификатором «META_LEVELPARAM». Данная метамодель должна содержать папку.

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

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    Metamodel: IMsMetaModel;
    Params: IMsModelParams;
    Param: IMsModelParam;
    Chain: IMsCalculationChainEntries;
    i: Integer;
    ChainEntry: IMsCalculationChainEntry;
    Group: IMsCalculationChainGroup;
    OutputPeriod: IMsDatePeriod;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем метамодель
    Metamodel := mb.ItemByIdNamespace("META_LEVELPARAM", MsKey).Edit As IMsMetaModel;
    // Получаем коллекцию параметров метамодели
    Params := Metamodel.Params;
    // Очищаем коллекцию параметров метамодели
    Params.Clear;
    // Добавляем новый параметр
    Param := Params.Add;
    // Указываем тип параметра - динамика
    Param.ParamType := TsParamType.Frequency;
    // Указываем значение по умолчанию - годовая динамика
    Param.DefaultValue := DimCalendarLevelSet.Year;
    // Задаем наименование и идентификатор параметра
    Param.Name := "Динамика расчета";
    Param.Id := "Formula_Level";
    // Получаем цепочку расчета
    Chain := Metamodel.CalculationChain;
    // Перебираем элементы цепочки до тех пор, пока не найдём папку
    For i := 0 To Chain.Count - 1 Do
        ChainEntry := Chain.Item(i);
        If ChainEntry.Type = MsCalculationChainEntryType.Folder Then
            Group := ChainEntry As IMsCalculationChainGroup;
            Break;
        End If;
    End For;
    // Указываем, что динамика расчета элементов в папке определяется параметром
    Group.LevelParam := "Formula_Level";
    // Задаем период выгрузки данных для элементов в папке
    OutputPeriod := Group.OutputPeriod As IMsDatePeriod;
    OutputPeriod.Start := DateTime.Parse("01.01.2016");
    OutputPeriod.End_ := DateTime.Parse("01.01.2020");
    // Сохраняем изменения в метамодели
    (Metamodel As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера для папки в цепочке расчета будет задан параметр, определяющий динамику расчета. Также для папки будет задан период выгрузки данных.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Transform;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsKey: uinteger;
    Metamodel: IMsMetaModel;
    mParams: IMsModelParams;
    Param: IMsModelParam;
    Chain: IMsCalculationChainEntries;
    i: Integer;
    ChainEntry: IMsCalculationChainEntry;
    Group: IMsCalculationChainGroup;
    OutputPeriod: IMsDatePeriod;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем метамодель
    Metamodel := mb.ItemByIdNamespace["META_LEVELPARAM", MsKey].Edit() As IMsMetaModel;
    // Получаем коллекцию параметров метамодели
    mParams := Metamodel.Params;
    // Очищаем коллекцию параметров метамодели
    mParams.Clear();
    // Добавляем новый параметр
    Param := mParams.Add();
    // Указываем тип параметра - динамика
    Param.ParamType := TsParamType.tsptFrequency;
    // Указываем значение по умолчанию - годовая динамика
    Param.DefaultValue := DimCalendarLevelSet.dclsYear;
    // Задаем наименование и идентификатор параметра
    Param.Name := "Динамика расчета";
    Param.Id := "Formula_Level";
    // Получаем цепочку расчета
    Chain := Metamodel.CalculationChain;
    // Перебираем элементы цепочки до тех пор, пока не найдём папку
    For i := 0 To Chain.Count - 1 Do
        ChainEntry := Chain.Item[i];
        If ChainEntry.Type = MsCalculationChainEntryType.mccetFolder Then
            Group := ChainEntry As IMsCalculationChainGroup;
            Break;
        End If;
    End For;
    // Указываем, что динамика расчета элементов в папке определяется параметром
    Group.LevelParam := "Formula_Level";
    // Задаем период выгрузки данных для элементов в папке
    OutputPeriod := Group.OutputPeriod As IMsDatePeriod;
    OutputPeriod.Start := DateTime.Parse("01.01.2016");
    OutputPeriod.@End := DateTime.Parse("01.01.2020");
    // Сохраняем изменения в метамодели
    (Metamodel As IMetabaseObject).Save();
End Sub;

См. также:

IMsCalculationChainGroup