Вычисляемые поля

Бывает, и очень часто, что при разработке отчетов недостаточно полей, назначенных в наборе данных. И нужно отразить поля, которые рассчитываются на основе существующих. С помощью вычисляемых полей можно добавить, сколько требуется полей, если нужно составить сложное поле из разных наборов данных, например типа «запрос и объект».

Указывать выражение вычисляемого поля нужно на языке системы компоновки данных, что бы система могла рассчитать его значение. Язык имеет ограничение — нельзя использовать вычисляемые поля. Можно использовать все синтаксические конструкции языка выражений, поля наборов данных, а так же функции общих модулей конфигурации.

Пример

В отчет «Задолженность Контрагентов» добавляем поле «Пеня».

Рассчитываем так: при просрочке менее пяти дней пеня не взимается, в ином случае пеня равняется одному проценту от суммы долга, который просрочен за каждый день просрочки.

Открываем «Cхему компоновки данных» (СКД) и на вкладке «Вычисляемые поля» добавляем поле.

Дадим ему имя «Путь к данным» – «Пеня», в колонку выражение введем такой код:

Выбор

Когда КоличествоДнейПросрочки >= 5

Тогда СуммаПросрочки * 0.01 * КоличествоДнейПросрочки

Иначе 0

Конец

Задаем тип значения – «Число» и формат – «ЧЦ=14; ЧДЦ=2»

Добавляем поле «Пеня» в список ресурсов с функцией «Сумма()». Вычисляем итоги по контрагентам и итоги в целом. В итоге выполнения отчета в поле «Пеня» по контрагенту будет отражаться сумма пеней за каждый документ, по которому выполняется условие начисления пеней.

Но на практике при расчете пени срок и сумма просрочки берутся в целом по контрагенту. Для того чтобы отчет выводил нужные данные по контрагенту, необходимо усложнить выражение агрегирования для ресурса «Пеня»:

Сумма(СуммаПросрочки) * 0.01 * Максимум(КоличествоДнейПросрочки)

Если мы вводим такое выражение в колонку «Выражение» для ресурса «Пеня», то получаем правильный расчет по контрагентам.

Это базовые основы по работе с вычисляемыми полями в СКД.