Формулы отчета

Материал из 3v-wiki
< Платформа 3V‎ | Отчет
Версия от 09:26, 11 апреля 2021; A.nekrasov (обсуждение | вклад) (Новая страница: «{{DISPLAYTITLE:Формулы отчета}} В отчете можно задавать формулы для показателей: реальных и вир...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску


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

Формулы рассчитываются в момент построения отчета после загрузки данных и ПОСЛЕ агрегации данных в хранимых показателях, но для виртуальных показателей агрегация выполняется после расчета формул в них.

Особенности размещения в хранимых показателях

Формулы рассчитываются после загрузки и агрегации данных. При этом, если формулы размещаются в хранимых показателях, они могут перетереть значение, которое было в ячейке (в т. ч. null). Но такие ячейки не будут помечены как измененные, и при сохранении отчета сразу после открытия эти изменения не сохранятся в показателе. Это сделано из соображений очевидности для пользователя: было бы странным при открытии отчета показывать пользователю, что в нем уже есть измененные данные. Поэтому отчет нужно вводить в эксплуатацию либо с пустыми данными, либо чтобы эти данные соответствовали настроенному расчету.

Формула пересчитываются автоматически при изменении ячеек, от которых она зависит. В этом случае, если значение ячеек формулы изменилось, они помечаются, как измененные.

Основные свойства формулы

Все свойства формулы можно посмотреть в документации.

  • Id - идентификатор формулы;
  • Name - описание формулы, в дальнейшем будет отображаться в интерфейсе при просмотре описания формулы ячейки;
  • IndicatorId - идентификатор показателя, в котором размещать формулу;
  • LeftHeaderPlacementKind - на каких типах элементов размещать формулу: на любых / только на виртуальных (в т. ч. группировочных) / только на настоящих;
  • Dictionaries - описание фильтров на справочники строк и столбцов, в которых необходимо размещать формулу. Фильтры на справочники столбцов должны быть обязательно определены. Если же не указан фильтр на справочник строк, формула будет размещаться для каждого элемента этого справочника;
  • Expression - текстовое выражение формулы, операнды размещаются в квадратных скобках в виде [<идентификатор операнда>];
  • Operands - коллекция операндов;

Операнды формулы

  • AttributeFormulaOperandDto - операнд, значение которого берется из атрибута;
  • IndicatorFormulaOperandDto - операнд, значение которого берется из показателя;
  • ParameterFormulaOperandDto - операнд, значение которого берется из параметра отчета;
  • TokenAttributeFormulaOperandDto - операнд, значение которого берется из токена;
  • PredefinedPivotOperandDto - операнд, значение которого предопределено в момент открытия отчета;

AttributeFormulaOperandDto

 1         "formulas": [
 2           {
 3             "indicatorId": -10,
 4             "dictionaries": [],
 5             "calculateByDiffs": false,
 6             "leftHeaderPlacementKind": "AnyElement",
 7             "expression": "if(Length(Coalesce([0], '')) > 10, Length([0]), null())",
 8             "operands": [
 9               {
10                 "dictionaryId": 39323,
11                 "attribute": {
12                   "id": 22,
13                   "discriminator": "OwnAttributeDefinitionDto"
14                 },
15                 "id": 0,
16                 "name": "Атрибут-строка",
17                 "discriminator": "AttributeFormulaOperandDto"
18               }
19             ],
20             "id": 1,
21             "name": "Формула 01: если длина значения атрибута-строки больше 10, то выведем длину, иначе - null",
22             "discriminator": "IndicatorFormulaDto"
23           }
24         ]