LevelParam: String;
LevelParam: string;
Свойство LevelParam определяет параметр, задающий динамику расчета группы.
Для задания динамики расчета напрямую используйте свойство IMsCalculationChainGroup.Level.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.
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;
См. также: