AddFunction(FunctionName: String; Value: IDimSelection; CombineElement: Boolean; Args: Variant);
FunctionName. Наименованию функции для вычисления итогов («Total», «SubTotal»);
Value. Отметка элементов, по которым необходимо получить итоговые данные;
CombineElement. Признак совмещения с исходными элементами;
Args. Метод вычисления итоговых данных.
Метод AddFunction добавляет формулу преобразования данных, которая вычисляет итог/промежуточный итог.
Описание различных видов итогов и параметров их расчета представлено в подразделе «Расчет итоговых значений».
Обязательным требованием для работы формулы преобразования является включение расчета необходимых итогов для строк/столбцов таблицы. Если итоги не рассчитываются, то формула преобразования вернет пустые значения.
Если параметру CombineElement установлено значение, True то создаваемый элемент будет совмещен с элементом, по которому считаются итоги: создаваемый элемент будет являться родительским по отношению к исходному элементу. При значении False элемент создается ниже исходного элемента и располагается на одном с ним уровне.
В качестве значения параметра Args необходимо указать наименование одного из видов итогов, которые рассчитываются для таблицы. Наименования совпадают с наименованиями элементов перечисления PivotEvaluatorElementType.
Для выполнения примера в репозитории предполагается наличие экспресс-отчета с идентификатором EXPRESS. Источник данных отчета в своей структуре имеет измерение с идентификатором Regions, в отчете данное измерение расположено по строкам.
Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Pivot.
Sub UserProc;
Var
MB: IMetabase;
Express: IEaxAnalyzer;
DArea: IEaxDataArea;
Slice: IEaxDataAreaSlice;
DimSel: IDimSelection;
CalcTrs: IEaxDataAreaTransformations;
Totals: IPivotEvaluatorTotals;
Element: Integer;
Begin
//Получим репозиторий
MB := MetabaseClass.Active;
//Получим экспресс-отчет
Express := MB.ItemById("Express").Edit As IEaxAnalyzer;
//Срез источника данных
DArea := Express.DataArea;
Slice := DArea.Slices.Item(0);
//Итоги по столбцам
Totals := Express.Pivot.Evaluator.Totals;
Totals.ColumnTypes := PivotEvaluatorElementType.Sum;
Totals.LevelTotals := True;
Totals.HierarchyTotals := True;
//Формулы преобразования данных в аналитической области
CalcTrs := Slice.CalcTransformations;
//Добавим функцию для вычисления итогов
DimSel := Express.Pivot.Selection.FindById("Regions").CreateCopy;
Element := DimSel.FirstDimElement;
DimSel.DeselectAll;
DimSel.SelectElement(Element, False);
CalcTrs.AddFunction("Total", DimSel, False, "Sum");
// Сохраним изменения
(Express As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера для первого отмеченного элемента измерения Regions будет добавлен вычисляемый элемент, осуществляющий подсчет итогов. Для работы этого элемента в таблице по столбцам также будет включен подсчет итогов (сумма).
См. также: