IVirtualCubeSourceMatrices.Matrix

Синтаксис

Matrix(Index: Integer): IMatrix;

Параметры

Index. Индекс источника, матрицу с данными которого необходимо получить.

Описание

Свойство Matrix возвращает матрицу источника данных виртуального куба.

Пример

Для выполнения примера в репозитории предполагается наличие виртуального куба с идентификатором VIRT_CUBE. Виртуальный куб имеет минимум один источник данных, в структуре которого два измерения. Измерения не фиксируются в виртуальном кубе.

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

Sub UserProc;
Var
    MB: IMetabase;
    Desc: IMetabaseObjectDescriptor;
    Cube: ICubeInstance;
    Dest: ICubeInstanceDestination;
    Sels: IDimSelectionSet;
    Sel: IDimSelection;
    Exec: ICubeInstanceDestinationExecutor;
    Matrs: IVirtualCubeSourceMatrices;
    Matr: IMatrix;
    Coord: IMatrixCoord;
Begin
    // Открытие куба
    MB := MetabaseClass.Active;
    Desc := MB.ItemById("VIRT_CUBE");
    Cube := Desc.Open(NullAs ICubeInstance;
    Dest := Cube.Destinations.DefaultDestination;
    // Установка отметки
    Sels := Dest.CreateDimSelectionSet;
    For Each Sel In Sels Do
        Sel.SelectAll;
    End For;
    // Расчёт виртуального куба с доступом к матрицам источников
    Exec := Dest.CreateExecutorO(CubeInstanceDestinationExecutorOptions.KeepSourceMatrices);
    Exec.PrepareExecute(Sels);
    Exec.PerformExecute;
    // Доступ к матрицам источников
    Matrs := Exec.Matrix As IVirtualCubeSourceMatrices;
    Debug.WriteLine("Количество матриц источников: " + Matrs.Count.ToString);
    // Заменяем данные в одном из источников, после чего изменяются также данные в матрице-результате
    Matr := Matrs.Matrix(0);
    Coord := Matr.CreateCoord;
    Coord.Item(0) := 0;
    Coord.Item(1) := 0;
    Matr.Item(Coord) := 100;
    // Заменяем данные в матрице-результате, после чего изменяются данные в соответствующем источнике
    Matr := Exec.Matrix;
    Coord := Matr.CreateCoord;
    Coord.Item(0) := 0;
    Coord.Item(1) := 0;
    Coord.Item(2) := 0;
    Matr.Item(Coord) := 200;
End Sub UserProc;

При выполнении примера будет произведён расчёт результирующей матрицы виртуального куба в режиме доступа к матрицам источников. Количество доступных матриц выводится в консоль среды разработки. В коде в общем виде приведён пример изменения данных в матрице источника и в результирующей матрице самого виртуального куба без фактического сохранения изменённых данных.

См. также:

IVirtualCubeSourceMatrices