IAlgorithmCalculationExecutor.SetMatrix

Синтаксис

SetMatrix(StubKey: Integer; Value: IMatrix);

Параметры

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

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

Описание

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

Комментарии

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

Пример

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

Добавьте ссылки на системные сборки: Algo, Cubes, Dimensions, Metabase, Matrix. Также добавьте ссылки на сборки, которые необходимы для работы с алгоритмами расчёта.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
    Cube: ICubeInstance;
    DefDes: ICubeInstanceDestination;
    Matr, Matr1: IMatrix;
    DimSS, DimSS1: IDimSelectionSet;
    SSFact: IDimSelectionSetFactory;
    DimS: IDimSelection;
    Algo: ICalcObject;
    CalcAlgo: ICalcAlgorithm;
    CalcAlgoExecuter: IAlgorithmCalculationExecutor;
    CalcResult: IAlgorithmCalculationResult;
    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.ItemById("ALGORITHM");
    Algo := CalcObjectFactory.CreateCalcObject(MObj, True);
    CalcAlgo := Algo As ICalcAlgorithm;
    CalcAlgoExecuter := CalcObjectFactory.CreateCalculationExecutor(MObj);
    // Устанавливаем матрицу для расчета алгоритма
    CalcAlgoExecuter.SetMatrix(Mb.ItemById("CUBE").Key, Matr);
    // Запускаем расчёт
    CalcResult := CalcAlgoExecuter.Run;
    Debug.WriteLine("  Расчёт завершён за " + CalcResult.TotalElapsedMilliseconds.ToString + " мс.");
End Sub UseProc;

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

См. также:

IAlgorithmCalculationExecutor