Argument: IMsFormulaTerm;
Свойство Argument определяет терм, соответствующий переменной валового выпуска (конечного использования), в зависимости от решаемой задачи межотраслевого баланса.
Sub Main;
Var
MB: IMetabase;
CrInf: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Model: IMsModel;
Trans: IMsFormulaTransform;
EndVar, ValVar, AVar, XVar: IMsVariable;
Dim, Dim1: IDimensionModel;
TransVar: IMsFormulaTransformVariable;
Tree: IMsFormulaTransformSlicesTree;
Slice: IMsFormulaTransformSlice;
Selector: IMsFormulaTransformSelector;
Formula: IMsFormula;
Industry: IMsInterindustryBalanceTransform;
Term: IMsFormulaTerm;
Begin
MB := MetabaseClass.Active;
CrInf := Mb.CreateCreateInfo;
CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL;
CrInf.Id := "New_MOB";
CrInf.Name := "New_MOB";
CrInf.Parent := Mb.ItemById("KONT_MODEL");
CrInf.Permanent := False;
MObj := Mb.CreateObject(CrInf).Edit;
Model := MObj As IMsModel;
Trans := Model.Transform;
Model.Kind := MsModelKind.InterindustryBalance;
//Добавляем переменную конечного использования в Outputs модели, и валового выпуска, матрицу А и матрицу Х в Inputs
EndVar := MB.ItemByIdNamespace("EndVar", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
Model.Output.Add(EndVar);
ValVar := MB.ItemByIdNamespace("Val_Prod", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
Model.Input.Add(ValVar);
AVar := MB.ItemByIdNamespace("MatrA", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
Model.Input.Add(AVar);
XVar := MB.ItemByIdNamespace("MatrX", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
Model.Input.Add(XVar);
//Для переменной конечного использования и валового выпуска устанавливаются сквозные измерения
Dim := EndVar.Dimensions.Item(0).Model;
Dim1 := ValVar.Dimensions.Item(0).Model;
Trans.DimensionTransparent(Trans.Outputs.Item(0), Dim) := True;
Trans.DimensionTransparent(Trans.Outputs.Item(0), Dim1) := True;
//Заполняем параметры модели
//Добавляем переменную конечного использования
TransVar := Model.Transform.Outputs.FindById("EndVar");
Tree := TransVar.SlicesTree(Null);
Slice := Tree.CreateSlice(1);
Selector := EndVar.Transform.CreateSelector;
Selector.Slice := Slice;
Formula := Model.Transform.Transform(Selector);
Formula.Kind := MsFormulaKind.InterindustryBalance;
Formula.Level := DimCalendarLevel.Year;
Industry := Formula.Method As IMsInterindustryBalanceTransform;
//Указываем измерение по строкам
Industry.BranchRowDimension := Dim;
//Задаем перменную валового выпуска
TransVar := Model.Transform.Inputs.FindById("Val_Prod");
Tree := TransVar.SlicesTree(Null);
Slice := Tree.CreateSlice(1);
Term := Industry.Operands.Add(Slice);
Industry.Argument := Term;
//Указываем измерение по столбцам
Industry.BranchColumnDimension := Dim1;
//Задаем перменную матрицы A
TransVar := Model.Transform.Inputs.FindById("MatrA");
Tree := TransVar.SlicesTree(Null);
Slice := Tree.CreateSlice(1);
Term := Industry.Operands.Add(Slice);
Industry.NewMatrixA := Term;
//Задаем перменную матрицы X
TransVar := Model.Transform.Inputs.FindById("MatrX");
Tree := TransVar.SlicesTree(Null);
Slice := Tree.CreateSlice(1);
Term := Industry.Operands.Add(Slice);
Industry.MatrixA := Term;
MObj.Save;
End Sub Main;
После выполнения примера в контейнере моделирования будет создана новая модель межотраслевого баланса. Данная модель решает задачу нахождения конечного использования. В модель будут добавлены переменные конечного использования, валового выпуска, переменные для расчета и выгрузки матрицы А. Расчет по II и III квадрантам производиться не будет.
См. также: