IMsModelParam.ObjectParam

Синтаксис

ObjectParam: IMetabaseObjectParam;

ObjectParam: Prognoz.Platform.Interop.Metabase.MetabaseObjectParam;

Описание

Свойство ObjectParam определяет параметр, с которым будет связан текущий параметр метамодели.

Комментарии

В качестве значения свойства указывается параметр объекта, описываемый интерфейсом IMetabaseObjectParam. Параметр должен быть создан в метаданных метамодели в коллекции IMetabaseObjectDescriptor.Params. Между параметрами метамодели и задачи может быть настроено управление параметрами через стандартный механизм IMetabaseObjectParams.ControlInfo.

Пример открытия задачи с параметрами приведён в подразделе «Открытие задачи с параметрами».

Пример

Для выполнения примера предполагается наличие в репозитория контейнера моделирования с идентификатором «CONT_MODEL». В контейнере создана задача с идентификатором «PROBLEM» и метамодель с идентификатором «METAMODEL».

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

Sub UserProc;
Var
    Mb: IMetabase;
    ProblemDesc, MetaModelDesc: IMetabaseObjectDescriptor;
    pParam, mParam: IMetabaseObjectParam;
    MetaModel: IMsMetaModel;
    Control: IMetabaseObjectControl;
    ParamControl: IMetabaseObjectParamControl;
    ModelParam: IMsModelParam;
Begin
    Mb := MetabaseClass.Active;
    
// Создание параметра у метамодели
    MetaModelDesc := Mb.ItemByIdNamespace("METAMODEL", Mb.GetObjectKeyById("CONT_MODEL")).EditDescriptor;
    MetaModelDesc.Params.Clear;
    mParam := MetaModelDesc.Params.Add;
    mParam.Id := 
"ADDITIONAL";
    mParam.Name := 
"Дополнительное значение";
    MetaModelDesc.SaveDescriptor;
    
// Создание параметра у задачи
    ProblemDesc := Mb.ItemByIdNamespace("PROBLEM", Mb.GetObjectKeyById("CONT_MODEL")).EditDescriptor;
    ProblemDesc.Params.Clear;
    pParam := ProblemDesc.Params.Add;
    pParam.Id := 
"ADDITIONAL";
    pParam.Name := 
"Дополнительное значение";
    
// Настройка управления параметром метамодели через параметр задачи
    Control := ProblemDesc.Params.ControlInfo.FindByKey(MetaModelDesc.Key);
    ParamControl := Control.FindByKey(pParam.Key);
    ParamControl.Expression.AsString := 
":" + ParamControl.ControlledParam.Id;
    ProblemDesc.SaveDescriptor;
    
// Задание параметра для передачи значения в метамодель
    MetaModel := MetaModelDesc.Edit As IMsMetaModel;
    MetaModel.Params.Clear;
    ModelParam := MetaModel.Params.Add;
    ModelParam.Id := 
"ADDITIONAL";
    ModelParam.Name := 
"Дополнительное значение";
    ModelParam.ObjectParam := mParam;
    (MetaModel 
As IMetabaseObject).Save;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    ProblemDesc, MetaModelDesc: IMetabaseObjectDescriptor;
    pParam, mParam: IMetabaseObjectParam;
    MetaModel: IMsMetaModel;
    Control: IMetabaseObjectControl;
    ParamControl: IMetabaseObjectParamControl;
    ModelParam: IMsModelParam;
Begin
    Mb := Params.Metabase;
    
// Создание параметра у метамодели
    MetaModelDesc := Mb.ItemByIdNamespace["METAMODEL", Mb.GetObjectKeyById("CONT_MODEL")].EditDescriptor();
    MetaModelDesc.Params.Clear();
    mParam := MetaModelDesc.Params.Add();
    mParam.Id := 
"ADDITIONAL";
    mParam.Name := 
"Дополнительное значение";
    MetaModelDesc.SaveDescriptor();
    
// Создание параметра у задачи
    ProblemDesc := Mb.ItemByIdNamespace["PROBLEM", Mb.GetObjectKeyById("CONT_MODEL")].EditDescriptor();
    ProblemDesc.Params.Clear();
    pParam := ProblemDesc.Params.Add();
    pParam.Id := 
"ADDITIONAL";
    pParam.Name := 
"Дополнительное значение";
    
// Настройка управления параметром метамодели через параметр задачи
    Control := ProblemDesc.Params.ControlInfo.FindByKey(MetaModelDesc.Key);
    ParamControl := Control.FindByKey(pParam.Key);
    ParamControl.Expression.AsString := 
":" + ParamControl.ControlledParam.Id;
    ProblemDesc.SaveDescriptor();
    
// Задание параметра для передачи значения в метамодель
    MetaModel := MetaModelDesc.Edit() As IMsMetaModel;
    MetaModel.Params.Clear();
    ModelParam := MetaModel.Params.Add();
    ModelParam.Id := 
"ADDITIONAL";
    ModelParam.Name := 
"Дополнительное значение";
    ModelParam.ObjectParam := mParam;
    (MetaModel 
As IMetabaseObject).Save();
End Sub;

При выполнении примера для задачи и метамодели будет создан параметр. Параметр метамодели будет управляться параметром задачи. Значение параметра, которое будет указываться при открытии задачи, будет передаваться в метамодель и в дальнейшем может использоваться при расчёте.

См. также:

IMsModelParam