IMDCalculationSliceSumm.Data

Синтаксис

Data: IDatasetModel;

Описание

Свойство Data определяет источник данных, содержащий список элементов используемых при составлении формул с возможностью суммирования.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных с идентификатором «MDBD», а так же двух стандартных кубов «CUBE_INPUT» и «CUBE_OUTPUT». Данные кубы основаны на таблицах, хранящихся в данной базе данных. В каждом кубе имеется два измерения: 1) Календарное измерение - будет зафиксировано; 2) Измерение, основанное на табличном справочнике - по элементам данного измерения будет настроено суммирование.

Sub Main;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    MDCalc: IMDCalculation;
    Cube: ICubeModel;
    Source: IMDCalculationSource;
    Slices: IMDCalculationSlices;
    Slice: IMDCalculationSlice;
    FreeSlice: IMDCalculationSliceFree;
    FixedSlice: IMDCalculationSliceFixed;
    Sum: IMDCalculationSliceSumm;
    Destination: IMDCalculationDestination;
    FormulasTable: IMDCalculationFormulasTable;
    TableForFormulas: ITable;
Begin
    MB := MetabaseClass.Active;
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_MDCALCULATION;
    CrInfo.Id := 
"MDCALC_1";
    CrInfo.Name := 
"Многомерный расчет на сервере";
    CrInfo.Parent := 
Null;
    MObj := MB.CreateObject(CrInfo).Edit;
    MDCalc := MObj 
As IMDCalculation;
    
//Добавлем БД
    MDCalc.Database := MB.ItemById("MDBD").Bind As IDatabase;
    
//Указываю куб-источник
    Cube := MB.ItemById("CUBE_INPUT").Bind As ICubeModel;
    Source := MDCalc.Sources.AddCube(Cube);
    Slices := Source.Slices;
    
//Календарное измерение - фиксируется
    Slice := Slices.Item(0);
    Slice.FixType := MDCalculationSliceFixType.Fixed;
    FixedSlice := Slice.Fixed;
    
//Второе измерение, по элементам которого будет осуществляться суммирование
    Slice := Slices.Item(1);
    FreeSlice := Slice.Free;
    Sum := FreeSlice.Summ;
    Sum.Data := (FreeSlice.Dimension 
As IStandardDimension).Blocks.Item(0).Dataset;
    Sum.KeyFields := 
"ID";
    Sum.LookupFields := 
"PARENTID";
    Sum.Enabled := 
True;
    
//Указываем куб-назначение
    Destination := MDCalc.Destination;
    Destination.SetCube(MB.ItemById(
"CUBE_OUTPUT").Bind As ICubeModel);
    Slices := Destination.Slices;
    
//Календарное измерение - фиксируется
    Slice := Slices.Item(0);
    Slice.FixType := MDCalculationSliceFixType.Fixed;
    FixedSlice.Mapping := Slice;
    
//Создаем новую таблицу формул
    FormulasTable := MDCalc.FormulasTable;
    TableForFormulas := FormulasTable.Create;
    FormulasTable.Attach(TableForFormulas);
    MObj.Save;
End Sub Main;

После выполнения примера в корневом каталоге репозитория будет создан объект - Многомерный расчет на сервере БД. Будут установлены один куб-источник, куб-назначение и создана новая таблица формул. Календарные измерения кубов будут зафиксированы и сопоставлены друг другу. Для элементов второго измерения источника будет возможность настраивать в формулах суммирование по дочерним элементам.

См. также:

IMDCalculationSliceSumm