IMsProblemCalculation.SetMatrix

Синтаксис

SetMatrix(StubKey: Integer; Value: IMatrix);

Параметры

StudKey. Ключ источника данных, для которого устанавливается матрица.

Value. Матрица с данными, которая будет использоваться при расчёте задачи моделирования.

Описание

Метод SetMatrix устанавливает для расчёта задачи моделирования матрицу с данными.

Комментарии

Метод SetMatrix позволяет установить для источника данных, участвующего в задаче, матрицу с данными, которая будет использована при расчёте задачи моделирования вместо реальных данных куба/СУБД/кеша. Данная матрица может быть полностью создана и заполнена вручную с помощью языка Fore, загружена из другого куба с теми же измерениями или исходного куба, но с измененной отметкой данных. Для отметки изменившихся значений используемой матрицы установите флаг, задав свойство IMatrix.ValueFlag.

Пример

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором MS, содержащим задачу моделирования с идентификатором PROBLEM, а также двух стандартных кубов с одинаковыми измерениями:

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

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Problem: IMsProblem;
    CalcSett: IMsProblemCalculationSettings;
    Calculation: IMsProblemCalculation;
    Cube: ICubeInstance;
    DefDes: ICubeInstanceDestination;
    Matr: IMatrix;
    DimSS: IDimSelectionSet;
    SSFact: IDimSelectionSetFactory;
    DimS: IDimSelection;
    i: Integer;
Begin
    // Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    // Открываем куб, матрица данных которого будет использоваться при расчёте
    Cube := Mb.ItemById("CUBE_2").Open(NullAs ICubeInstance;
    // Задаем отметку измерений куба
    DefDes := Cube.Destinations.DefaultDestination;
    DimSS := DefDes.CreateDimSelectionSet;
    For Each DimS In DimSS Do
        DimS.SelectAll;
    End For;
    // Получаем матрицу
    Matr := DefDes.Execute(DimSS);
    // Получаем задачу в контейнере моделирования
    MObj := MB.ItemByIdNamespace("PROBLEM", MB.ItemById("MS").Key).Edit;
    Problem := MObj As IMsProblem;
    // Задаем параметры расчёта задачи
    CalcSett := Problem.CreateCalculationSettings;
    Calculation := Problem.Calculate(CalcSett);
    // Устанавливаем матрицу для расчета задачи
    Calculation.SetMatrix(Mb.ItemById("CUBE").Key, Matr);
    // Запускаем расчёт
    Calculation.Run;
    MObj.Save;
End Sub UserProc;

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

См. также:

IMsProblemCalculation