IMDCalculationSliceFree.Summ

Синтаксис

Summ: IMDCalculationSliceSumm;

Описание

Свойство Summ возвращает параметры суммирования по элементам измерения.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных с идентификатором 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;

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

См. также:

IMDCalculationSliceFree