SetMatrix(StubKey: Integer; Value: IMatrix);
StudKey. Ключ источника данных, для которого устанавливается матрица.
Value. Матрица с данными, которая будет использоваться при расчёте задачи моделирования.
Метод SetMatrix устанавливает для расчёта задачи моделирования матрицу с данными.
Метод SetMatrix позволяет установить для источника данных, участвующего в задаче, матрицу с данными, которая будет использована при расчёте задачи моделирования вместо реальных данных куба/СУБД/кеша. Данная матрица может быть полностью создана и заполнена вручную с помощью языка Fore, загружена из другого куба с теми же измерениями или исходного куба, но с измененной отметкой данных. Для отметки изменившихся значений используемой матрицы установите флаг, задав свойство IMatrix.ValueFlag.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором MS, содержащим задачу моделирования с идентификатором PROBLEM, а также двух стандартных кубов с одинаковыми измерениями:
куб с идентификатором CUBE является источником данных задачи моделирования;
куб с идентификатором CUBE_2 используется для загрузки матрицы данных в источник.
Добавьте ссылки на системные сборки: 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(Null) As 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;
При выполнении примера для задачи моделирования будет определена матрица данных, которая будет использоваться при её расчёте, затем задача будет рассчитана.
См. также: