AddFunction(FunctionName: String;
Value:
IDimSelection;
CombineElement:
Boolean;
Args:
Variant);
AddFunction(FunctionName: string;
Value:
Prognoz.Platform.Interop.Dimensions.IDimSelection;
CombineElement:
boolean;
Args:
object);
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» будет добавлен вычисляемый элемент, осуществляющий подсчет итогов. Для работы этого элемента в таблице по столбцам также будет включен подсчет итогов (сумма).
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Pivot;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Express: IEaxAnalyzer;
DArea: IEaxDataArea;
Slice: IEaxDataAreaSlice;
DimSel: IDimSelection;
CalcTrs: IEaxDataAreaTransformations;
Totals: IPivotEvaluatorTotals;
Element: UInteger;
Begin
//Получим репозиторий
MB := Params.Metabase;
//Получим экспресс-отчет
Express := MB.ItemById["Express"].Edit() As IEaxAnalyzer;
//Срез источника данных
DArea := Express.DataArea;
Slice := DArea.Slices.Item[0];
//Итоги по столбцам
Totals := Express.Pivot.Evaluator.Totals;
Totals.ColumnTypes := (PivotEvaluatorElementType.peetSum As Integer);
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("SubTotal", DimSel, False, "Sum");
// Сохраним изменения
(Express As IMetabaseObject).Save();
End Sub;
См. также: