Просмотр значений переменной

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

В рассматриваемом нами примере моделирования, после расчета задачи результаты были выгружены в переменную «Сальдо торгового баланса, млрд.долл.США» по сценарию «Факт». Для их просмотра предназначен описанный ниже модуль.

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

Sub UserProc;
Var
    MB: IMetabase;
    KMDesc: IMetabaseObjectDescriptor;
    Problem: IMsProblem;
    VarList: IVariableStubList;
    VarStub: IVariableStub;
    VarObj: IMetabaseObject;
    CubeInst: ICubeInstance;
    Des: ICubeInstanceDestination;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    Elem: IDimElementArray;
    Mat: IMatrix;
    Coord: IMatrixCoord;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    KMDesc := MB.ItemById("MODEL_SPACE");
    Problem := mb.ItemByIdNamespace("PROBLEM_BALANCE", KMDesc.Key).Bind As IMsProblem;
    // Получаем выходную переменную
    VarList := Problem.VariableStubs(MsVariableKind.Output);
    VarStub := VarList.FindById("BALANCE");
    // Получаем представление переменной в экспресс-анализе
    VarObj := (VarStub As IMsVariable).Cube As IMetabaseObject;
    CubeInst := VarObj.Open(NullAs ICubeInstance;
    Des := CubeInst.Destinations.DefaultDestination;
    DimSS := Des.CreateDimSelectionSet;
    // Отмечаем динамику, для которой будут выводиться данные: Годы
    DimS := DimSS.Item(0);
    Elem := DimS.Dimension.Levels.Item(0).Elements;
    For Each i In Elem Do
        DimS.SelectElement(i, False);
    End For;
    // Отмечаем сценарный справочник «Факт»
    DimSS.Item(1).SelectAll;
    // Получаем матрицу данных переменной
    Mat := Des.Execute(DimSS);
    Coord := Mat.CreateCoord;
    Coord.Item(1) := 0;
    // Выводим матрицу с данными в окно консоли
    Debug.WriteLine("Данные переменной '" + VarStub.Name + "':");
    For Each i In Elem Do
        Coord.Item(0) := i;
        Mat.Item(Coord) := Math.RandBetween(50100);
        Debug.WriteLine(Mat.Item(Coord));
    End For;
End Sub UserProc;

После выполнения примера данные расчета задачи, выгруженные в переменную «Сальдо торгового баланса, млрд.долл.США», будут выведены в окно консоли.

См. также:

Общие принципы программирования с использованием сборки Ms