Вычисляемые поля
Вычисляемые поля (calculated fields) позволяют выполнить предварительную обработку входных данных отчета на основе определенного выражения.
С помощью вычисляемых полей можно
- пересчитывать данные из одних единиц измерения в другие,
- формировать составной текст из нескольких полей источника данных,
- задавать правила фильтрации/сортировки/группировки и т.д.
Примечание
Созданные вычисляемые поля хранятся в отчетной форме, отображаются в списке полей и могут использоваться наряду с другими полями из таблиц источника данных.
Выражение, которое задается для вычисляемого поля, может использовать одно или несколько полей из таблицы источника данных отчета.
Далее рассматривается пример создания вычисляемого поля, использующего данные только из одной таблицы источника данных.
Пример создания вычисляемого поля c данными из разных таблиц рассмотрен в статье Как создать вычисляемое поле с данными из разных таблиц.
Важно
Значения, получаемые при формировании отчета с помощью вычисляемых полей, в базе данных не сохраняются.
Создания вычисляемого поля
На форме редактора отчетных форм:
- перейдите на панель Список полей,
- щелкните правой кнопкой мыши на узле, данные из которого должны использоваться в выражении вычисляемого поля,
- в открывшимся контекстном меню выберите пункт Добавить вычисляемое поле.
В списке полей выбранной таблицы появится вычисляемое поле с наименованием calculatedField1.
Измените Имя и Тип поля. Вызовите редактор выражения вычисляемого поля.
Текст вводится вручную и обрамляется одинарными кавычками. Необходимые поля добавляются двойным щелчком мыши на списке полей. Для сохранения введенного выражения нажмите кнопку ОК.
Более подробно работа с редактором вычисляемого поля изложена в статье Редактор формул.
Созданное вычисляемое поле может использоваться наряду с другими полями таблицы. Для этого достаточно перетащить его в нужное место отчетной формы.
В вычисляемых полях можно использовать агрегатные функции: Sum, Avg, Min, Max, Count
. При построении выражений с агрегатными функциями используется следующий формат:
[<Коллекция>][<Условие>].<Агрегатная функция>(<Выражение>)
<Коллекция>
- указывает коллекцию записей, по которой рассчитывается значение агрегатной функции. Пустая пара скобок [] указывает на источник данных всего отчета.
<Условие>
- задает условие, определяющее, какие записи должны участвовать в вычислении агрегатной функции. Чтобы получить агрегированное значение по всем записям, удалите это логическое предложение вместе с квадратными скобками (например, [].Count()
).
<Агрегатная функция>
- одна из доступных агрегатных функций.
<Выражение>
- указывает выражение, возвращающее значение используемое агрегатной функцией. Функция Count не требует значений полей для подсчета записей, поэтому для этой функции оставьте круглые скобки пустыми.
При вычислении агрегатной функции внутри группы для обозначения полей используется символ '^'. Например:
[][[^.SerialNumber] == [SerialNumber]].Sum([M1])
.
Использование пользовательских атрибутов
Пользовательские атрибуты хранят информацию в текстовой форме.
Если пользовательский атрибут используется в вычисляемом поле как числовое значение, то в качестве разделителя целой и дробной надо задавать точку.
Для преобразования в число служат функции ToDouble() и ToInt().