Contents: IMsCalculationChainEntries;
Contents: Prognoz.Platform.Interop.Ms.IMsCalculationChainEntries;
Свойство Contents возвращает коллекцию дочерних элементов.
В папке могут располагаться любые элементы цепочки расчета.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего метамодель с идентификатором «META» и модель с идентификатором «MODEL_LINEARREGR».
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
mb: Imetabase;
MsKey: Integer;
MetaModel: IMsMetaModel;
CalcChain: IMsCalculationChainEntries;
Folder: IMsCalculationChainFolder;
Model: IMsModel;
Begin
// Получаем репозиторий
mb := MetabaseClass.Active;
// Получаем ключ контейнера моделирования
MsKey := mb.GetObjectKeyById("MS");
// Получаем метамодель
MetaModel := mb.ItemByIdNamespace("META", MsKey).Edit As IMsMetaModel;
// Получаем цепочку расчета метамодели
CalcChain := MetaModel.CalculationChain;
// Проверяем, есть ли в цепочке расчета модель «MODEL_LINEARREGR»
If CalcChain.FindById("MODEL_LINEARREGR") = Null Then
// Если метамодели нет, то в цепочке расчета создаем папку
Folder := CalcChain.AddFolder("Папка с моделью");
CalcChain := Folder.Contents;
// В созданную папку добавляем модель
«MODEL_LINEARREGR»
Model := mb.ItemByIdNamespace("MODEL_LINEARREGR", MsKey).Bind As IMsModel;
CalcChain.AddModel(Model);
End If;
// Сохраняем изменения
(MetaModel As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера в цепочке расчета будет создана папка, содержащая модель.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: Imetabase;
MsKey: uinteger;
MetaModel: IMsMetaModel;
CalcChain: IMsCalculationChainEntries;
Folder: IMsCalculationChainFolder;
Model: IMsModel;
Begin
// Получаем репозиторий
mb := Params.Metabase;
// Получаем ключ контейнера моделирования
MsKey := mb.GetObjectKeyById("MS");
// Получаем метамодель
MetaModel := mb.ItemByIdNamespace["META", MsKey].Edit() As IMsMetaModel;
// Получаем цепочку расчета метамодели
CalcChain := MetaModel.CalculationChain;
// Проверяем, есть ли в цепочке расчета модель «MODEL_LINEARREGR»
If CalcChain.FindById("MODEL_LINEARREGR") = Null Then
// Если метамодели нет, то в цепочке расчета создаем папку
Folder := CalcChain.AddFolder("Папка с моделью");
CalcChain := Folder.Contents;
// В созданную папку добавляем модель «MODEL_LINEARREGR»
Model := mb.ItemByIdNamespace["MODEL_LINEARREGR", MsKey].Bind() As IMsModel;
CalcChain.AddModel(Model);
End If;
// Сохраняем изменения
(MetaModel As IMetabaseObject).Save();
End Sub;
См. также: