Платформа 3V/Отчет/3. Настроить формулы отчета/Настроить формулы для столбцов: различия между версиями
м (A.saydakova переименовал страницу Содержание/Отчет/Итоги по столбцам в Платформа 3V/Отчет/Итоги по столбцам поверх перенаправления) |
м (A.saydakova переименовал страницу Платформа 3V/Отчет/Итоги по столбцам в Платформа 3V/Отчет/Формулы/Итоги по столбцам) |
Версия 06:04, 7 мая 2021
Итоги по столбцам
Один из способов расчета итогов по столбцам в отчете, это добавление виртуального показателя и задания для него формулы с агрегированным операндом, по тому измерению по которому нужно посчитать итог.
Рассмотрим это на примере, есть отчет на показателе, в шапку вынесен справочник "Календарь" с ключом - 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
Результат: