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

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

Формула расчета процента выполнения

Рассмотрим пример расчета процента выполнения работ: есть отчет на показателе, в показателе хранится план/факт выполненных работ в цехах. Необходимо в виртуальном показателе добавить формулу расчета процента выполнения.

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

Расчет процентов

Шаг 2. Настроим отображение рассчитанного значения в виртуальном показателе в виде процентов. Для этого в json необходимо перейти к описанию виртуального показателя "Расчет процента" и в настройках формата задать вариант вывода "0.00%":

"columnOptions": {
         "width": null,
         "format": null,
         "dataControlOptions": {
           "format": "0.00%",
           "mask": null,
           "min": null,
           "max": null,
           "component": null
         }

Нажимаем кнопку "Сохранить изменения" в json. Настройки применились и рассчитанное в виртуальном показателе значение отображается в виде процентов.

Настройка формата

Подробнее по настройке формата столбцов

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

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

Рассмотрим это на примере, есть отчет на показателе, в шапку вынесен справочник "Календарь" с ключом - 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

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

Результат:

Результат