IMsInterindustryBalanceTransform.ThirdQuadrant

Синтаксис

ThirdQuadrant: IMsFormulaTerm;

Описание

Свойство ThirdQuadrant определяет терм, соответствующий переменной, в которую будет выгружаться III квадрант при расчете модели.

Пример

Sub Main;

Var

MB: IMetabase;

CrInf: IMetabaseObjectCreateInfo;

MObj: IMetabaseObject;

Model: IMsModel;

Trans: IMsFormulaTransform;

EndVar, ValVar, AVar, XVar, ThirdKvadrVar: 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;

//Второй квадрант

ThirdKvadrVar := MB.ItemByIdNamespace("ThirdKvadr", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(ThirdKvadrVar);

ThirdKvadrVar := MB.ItemByIdNamespace("var_11", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(ThirdKvadrVar);

ThirdKvadrVar := MB.ItemByIdNamespace("var_22", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;

Model.Input.Add(ThirdKvadrVar);

//Задаем переменную для III квадранта

TransVar := Model.Transform.Inputs.FindById("ThirdKvadr");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.ThirdQuadrant := Term;

//Задаем переменную на основе которой производится расчет

TransVar := Model.Transform.Inputs.FindById("var_11");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.GrossIssueMatrix := Term;

//Задаем переменную в которую будет выгружаться матрица

TransVar := Model.Transform.Inputs.FindById("var_22");

Tree := TransVar.SlicesTree(Null);

Slice := Tree.CreateSlice(1);

Term := Industry.Operands.Add(Slice);

Industry.NewGrossIssueMatrix := Term;

Industry.GenerateGrossIssue := True;

MObj.Save;

End Sub Main;

После выполнения примера в контейнере моделирования будет создана новая модель межотраслевого баланса. Данная модель решает задачу нахождения конечного использования. В модель будут добавлены переменные конечного использования, валового выпуска, переменные для расчета и выгрузки матрицы А. Также будет настроен расчет третьего квадранта. Структура конечного национального дохода будет рассчитываться на основе переменной с идентификатором "var_11".

См. также:

IMsInterindustryBalanceTransform | IMsInterindustryBalanceTransform.GrossIssueMatrix | IMsInterindustryBalanceTransform.NewGrossIssueMatrix