IMsUserTransform.Template

Синтаксис

Template: IMsUserMethodTemplate

Описание

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

Пример

Для выполнения примера предполагается наличие контейнера моделирования "KONT_MODEL". В контейнере создан шаблон пользовательского метода, содержащий два параметра. Также в контейнере имеются переменные моделирования "User_Var" и "User_Var_Factor", которые в дальнейшем будут использоваться как моделируемая и фактор соответственно.

Sub Main;

Var

MB: IMetabase;

MDesc: IMetabaseObjectDescriptor;

CrInf: IMetabaseObjectCreateInfo;

MObj: IMetabaseObject;

Model: IMsModel;

Trans: IMsFormulaTransform;

Varr: IVariableStub;

VarTrans: IMsFormulaTransformVariable;

Tree: IMsFormulaTransformSlicesTree;

Slice: IMsFormulaTransformSlice;

Selector: IMsFormulaTransformSelector;

Formula: IMsFormula;

UserTr: IMsUserTransform;

TransVar: IMsFormulaTransformVariable;

Params: IMsUserMethodParams;

Begin

MB := MetabaseClass.Active;

MDesc := Mb.ItemById("KONT_MODEL");

CrInf := Mb.CreateCreateInfo;

CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL;

CrInf.Id := "User_Model";

CrInf.Name := "User_Model";

CrInf.Parent := MDesc;

MObj := Mb.CreateObject(CrInf).Edit;

Model := MObj As IMsModel;

Trans := Model.Transform;

//Моделируемая переменная

Varr := MB.ItemByIdNamespace("User_Var", MDesc.Key).Bind As IVariableStub;

Trans.Outputs.Add(Varr);

VarTrans := Trans.Outputs.Item(0);

Tree := VarTrans.SlicesTree(VarTrans);

Slice := Tree.CreateSlice(1);

Selector := Trans.CreateSelector;

Selector.Slice := Slice;

Formula := Trans.Transform(Selector);

Formula.Kind := MsFormulaKind.User;

Formula.Level := DimCalendarLevel.Year;

UserTr := Formula.Method As IMsUserTransform;

UserTr.Template := (MDesc.Bind As IMsModelSpace).UserMethodTemplates.Item(0);

//Фактор

Varr := MB.ItemByIdNamespace("User_Var_Factor", MDesc.Key).Bind As IVariableStub;

Trans.Inputs.Add(Varr);

TransVar := Model.Transform.Inputs.Item(0);

UserTr.Explanatories.Add(TransVar.SlicesTree(Null).CreateSlice(1));

Params := UserTr.Params;

Params.Item(0).Value := 10;

Params.Item(1).Value := 100;

MObj.Save;

End Sub Main;

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

См. также:

IMsUserTransform