IMsProblem.EditMetaModel

Синтаксис Fore

EditMetaModel: IMsMetaModel;

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

EditMetaModel: Prognoz.Platform.Interop.Ms.IMsMetaModel;

Описание

Свойство EditMetaModel возвращает внутреннюю метамодель.

Комментарии

Для создания внутренней метамодели используйте метод IMsProblem.CreateMetaModel.

Пример Fore

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

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

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    CreateInfo: IMetabaseObjectCreateInfo;
    Problem: IMsProblem;
    Model: IMsModel;
    MetaModel: IMsMetaModel;
    CalcChain: IMsCalculationChainEntries;
Begin
    // Получаем репозиторий
    Mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем задачу моделирования
    Problem := Mb.ItemByIdNamespace("PROBLEM_META", MsKey).Edit As IMsProblem;
    // Получаем внутреннюю метамодель
    MetaModel := Problem.EditMetaModel;
    // Получаем цепочку расчета метамодели
    CalcChain := MetaModel.CalculationChain;
    // Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_LINEARREGR", MsKey).Edit As IMsModel;
    If CalcChain.FindById("MODEL_LINEARREGR") = Null Then
        // Добавляем полученную модель в цепочку расчета
        CalcChain.AddModel(Model);
    End If;
    // Сохраняем изменения
    (Problem As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера в цепочку расчета задачи будет добавлена указанная модель.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsKey: uinteger;
    CreateInfo: IMetabaseObjectCreateInfo;
    Problem: IMsProblem;
    Model: IMsModel;
    MetaModel: IMsMetaModel;
    CalcChain: IMsCalculationChainEntries;
Begin
    // Получаем репозиторий
    Mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем задачу моделирования
    Problem := Mb.ItemByIdNamespace["PROBLEM_META", MsKey].Edit() As IMsProblem;
    // Получаем внутреннюю метамодель
    MetaModel := Problem.EditMetaModel;
    // Получаем цепочку расчета метамодели
    CalcChain := MetaModel.CalculationChain;
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_LINEARREGR", MsKey].Edit() As IMsModel;
    If CalcChain.FindById("MODEL_LINEARREGR") = Null Then
        // Добавляем полученную модель в цепочку расчета
        CalcChain.AddModel(Model);
    End If;
    // Сохраняем изменения
    (Problem As IMetabaseObject).Save();
End Sub;

См. также:

IMsProblem