Платформа 3V/Отчет/3. Настроить формулы отчета/Настроить формулы для столбцов

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Итоги по столбцам

Один из способов расчета итогов по столбцам в отчете, это добавление виртуального показателя и задания для него формулы с агрегированным операндом, по тому измерению по которому нужно посчитать итог.

Рассмотрим это на примере, есть отчет на показателе, в шапку вынесен справочник "Календарь" с ключом - 369, для этого справочника задан фильтр от 3-х параметров (Дата с, Дата по, уровень календаря (день/месяц/год)), соответственно мы хотим добавить последний столбец в отчет, в котором посчитать итоговое значение по всем выведенным столбцам (в зависимости от значения параметра, количество столбцов может меняться).

Добавление виртуального показателя

Шаг 1. Добавляем виртуальный показатель в конструкторе отчетов в конец и называем его, "Итого":

Добавление виртуального показателя

Шаг 2. Добавление формулы расчета, для удобства, чтобы не задавать все настройки формулы вручную через json, создадим через строку формул отчета, простую формулу, для этого кликаем мышкой на первую ячейку в столбце "Итого" и нажимаем кнопку "Редактировать" в строке формул, после этого кликаем на заголовок любого столбца с данными, например, "ноябрь 2020" и нажимаем кнопку "Применить", в столбце "Итого" должны отобразиться значения из столбца "ноябрь 2020"

Добавление простой формулы

Шаг 3. Теперь в созданный операнд формулы, нам нужно передать все элементы справочника 369, которые есть в шапке (набор элементов формируется с помощью фильтра см.выше), соответственно, раз набор элементов в шапке и в операнде совпадает, мы можем взять уже готовый фильтр в формате json для шапки, в данном случае он имеет вид:

           "filter": {
             "type": "And",
             "filters": [
               {
                 "parameterFilterOptions": null,
                 "value": {
                   "id": 1,
                   "name": null
                 },
                 "skipIfValueNull": false,
                 "attributeId": 5,
                 "attribute": {
                   "id": 5,
                   "discriminator": "OwnAttributeDefinitionDto"
                 },
                 "conditionType": "AttributeMoreOrEqualConstant",
                 "inversion": false,
                 "discriminator": "ParameterConditionalDictionaryFilterDto"
               },
               {
                 "parameterFilterOptions": null,
                 "value": {
                   "id": 2,
                   "name": null
                 },
                 "skipIfValueNull": false,
                 "attributeId": 6,
                 "attribute": {
                   "id": 6,
                   "discriminator": "OwnAttributeDefinitionDto"
                 },
                 "conditionType": "AttributeLessOrEqualConstant",
                 "inversion": false,
                 "discriminator": "ParameterConditionalDictionaryFilterDto"
               },
               {
                 "parameterFilterOptions": {
                   "attribute": {
                     "id": 21,
                     "discriminator": "OwnAttributeDefinitionDto"
                   }
                 },
                 "value": {
                   "id": 3,
                   "name": null
                 },
                 "skipIfValueNull": false,
                 "attributeId": 7,
                 "attribute": {
                   "id": 7,
                   "discriminator": "OwnAttributeDefinitionDto"
                 },
                 "conditionType": "AttributeEqualConstant",
                 "inversion": false,
                 "discriminator": "ParameterConditionalDictionaryFilterDto"
               }
             ],
             "inversion": false,
             "discriminator": "CompoundDictionaryFilterDto"
           }, 

Заменяем весь раздел "filter" у операнда формулы:

Замена фильтра у операнда формулы

Шаг 4. Устанавливаем тип агрегации для расчета значений, в данном случае это метод - "Сумма", для этого у операнда в разделе aggregationType указываете Sum и нажимаем "Сохранить измерения" в Json

Установка метода агрегации

Результат:

Результат