ICubeExecuteSetup.UseDataTypes

Синтаксис

UseDataTypes: Boolean;

UseDataTypes: Boolean;

Описание

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

Комментарии

Допустимые значения:

Примечание. Получение информации о способах формирования данных в ячейках не поддерживается при работе с автоматическими и вычисляемыми кубами.

Пример

Для выполнения примера предполагается наличие стандартного куба с идентификатором «STD_CUBE». В кубе настроена агрегация по какому-либо измерению.

Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase. В Fore.NET также добавьте ссылку на сборку ForeSystem.

Sub UserProc;
Var
    MB: IMetabase;
    CubeInst: ICubeInstance;
    Dest: ICubeInstanceDestination;
    Sels: IDimSelectionSet;
    Sel: IDimSelection;
    Exec: ICubeInstanceDestinationExecutor;
    Matr: IMatrix;
Begin
    
// Открываем куб
    MB := MetabaseClass.Active;
    CubeInst := MB.ItemById(
"STD_CUBE").Open(NullAs ICubeInstance;
    Dest := CubeInst.Destinations.DefaultDestination;
    
// Устанавливаем отметку
    Sels := Dest.CreateDimSelectionSet;
    
For Each Sel In Sels Do
        Sel.SelectAll;
    
End For;
    
// Устанавливаем поддержку работы с информацией о том, как формируются данные в ячейках
    (Sels As ICubeExecuteSetup).UseDataTypes := True;
    Exec := Dest.CreateExecutor;
    
// Вычисляем куб
    Exec.PrepareExecute(Sels);
    Exec.PerformExecuteO(CubeInstanceDestinationExecutorOptions.None);
    Matr := Exec.Matrix;
    ShowMatrix(
"Матрица куба", Matr);
End Sub UserProc;

Sub ShowMatrix(Title: String; Matr: IMatrix);
Var
    Iter: IMatrixIterator;
    CubeExecRes: ICubeExecuteResult;
    CubeDataTyp: ICubeExecuteDataTypes;
    S: String;
    Coord: IMatrixCoord;
Begin
    CubeExecRes := Matr As ICubeExecuteResult;
    CubeDataTyp := CubeExecRes.DataTypes;
    Iter := Matr.CreateIterator;
    Iter.Move(IteratorDirection.First);
    Debug.WriteLine(Title);
    Coord := Matr.CreateCoord;
    
While Iter.Valid Do
        S := (Iter.Value 
As String) + "   (" + Iter.CoordsAsString + ")";
        Iter.PutCurrentPos(Coord);
        
If CubeDataTyp.DataType(Coord) <> CubeDataType.Default_ Then
            S := S + 
"*";
        
End If;
        Debug.WriteLine(s);
        Iter.Move(IteratorDirection.Next);
    
End While;
End Sub ShowMatrix;

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CubeInst: ICubeInstance;
    Dest: ICubeInstanceDestination;
    Sels: IDimSelectionSet;
    Sel: IDimSelection;
    Exec: ICubeInstanceDestinationExecutor;
    Matr: IMatrix;
Begin
    
// Открываем куб
    MB := Params.Metabase;
    CubeInst := MB.ItemById[
"STD_CUBE"].Open(NullAs ICubeInstance;
    Dest := CubeInst.Destinations.DefaultDestination;
    
// Устанавливаем отметку
    Sels := Dest.CreateDimSelectionSet();
    
For Each Sel In Sels Do
        Sel.SelectAll();
    
End For;
    
// Устанавливаем поддержку работы с информацией о том, как формируются данные в ячейках
    (Sels As ICubeExecuteSetup).UseDataTypes := True;
    Exec := Dest.CreateExecutor();
    
// Вычисляем куб
    Exec.PrepareExecute(Sels);
    Exec.PerformExecuteO(CubeInstanceDestinationExecutorOptions.cideoNone 
As Integer);
    Matr := Exec.Matrix;
    ShowMatrix(
"Матрица куба", Matr);
End Sub;

Shared Sub ShowMatrix(Title: String; Matr: IMatrix);
Var
    Iter: IMatrixIterator;
    CubeExecRes: ICubeExecuteResult;
    CubeDataTyp: ICubeExecuteDataTypes;
    S: String;
    Coord: IMatrixCoord;
Begin
    CubeExecRes := Matr As ICubeExecuteResult;
    CubeDataTyp := CubeExecRes.DataTypes;
    Iter := Matr.CreateIterator();
    Iter.Move(IteratorDirection.itdFirst);
    System.Diagnostics.Debug.WriteLine(Title);
    Coord := Matr.CreateCoord();
    
While Iter.Valid Do
        S := (Iter.Value 
As String) + "   (" + Iter.CoordsAsString + ")";
        Iter.PutCurrentPos(Coord);
        
If CubeDataTyp.DataType[Coord] <> CubeDataType.cubdtDefault Then
            S := S + 
"*";
        
End If;
        System.Diagnostics.Debug.WriteLine(s);
        Iter.Move(IteratorDirection.itdNext);
    
End While;
End Sub;

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

См. также:

ICubeExecuteSetup