Выражения вычисляемых полей
Обновлено: 30.11.2023
Значения ячеек в вычисляемом поле (подробнее — Вычисляемые поля) задаются её выражением.
В выражении допускаются ссылки на другие поля в строке данных, арифметические и логические операторы, а также встроенные функции.
Имена полей заключаются в квадратные скобки:
[ColumnName]
Порядок вычислений задается с помощью круглых скобок:
([ColumnName] - [ColumnName]) * 1.18
Допускается применение литералов (фиксированных текстовых строк), заключаются в одинарные кавычки:
'Text'
- Логические:
||, &
- Отношений:
==, !=, <, <=, <, >=
- Аддитивные:
+, -
- Мультипликативные:
*, /, %
- Унарные:
!
Concat(string1, string2, ...)
Возвращает объединенную строку.
Пример:
Concat('Hello', ' ', 'world') = 'Hello world'
Format(template, param1, param2..., paramN)
Возвращает отформатированное значение.
Шаблон составного форматирования
Рассмотрим шаблон: Format("Проект {0} от {1:yyyy}«, [ProjectName], [ProjectCreated]]
Здесь «Проект» и «от» — фиксированный текст. Элементы форматирования — это «{0}» c индексом 0, который соответствует полю ProjectName, и «{1:yyyy}» с индексом 1, который соответствует полю ProjectCreated.
Каждый элемент форматирования имеет следующий вид и состоит из следующих компонентов: {index[, alignment][: formatString]}. Парные фигурные скобки «{» и «}» здесь обязательны.
Обязательный компонент index — это число, определяющее параметр функции.
Необязательный компонент alignment — это целое число со знаком, которое служит для указания желательной ширины поля форматирования. Если значение alignment меньше длины форматируемой строки, то alignment пропускается, и в качестве значения ширины поля используется длина форматируемой строки. Форматируемые данные выравниваются в поле по правому краю, если alignment имеет положительное значение, или по левому краю, если alignment имеет отрицательное значение. При необходимости отформатированная строка дополняется пробелами. При использовании компонента alignment необходимо поставить запятую.
Необязательный компонент formatString — это строка формата, соответствующая типу форматируемого объекта.
Примечание
Для форматов с указанием культуры (например, en-US), конечный результат зависит от языка пользователя, формирующего отчет или панель показателей.
Для полей с типом «Дата» и «Дата и время»:
- «d» — 15.06.2009T13:45:30 -> 6/15/2009 (en-US)
- «D» — 15.06.2009T13:45:30 -> Monday, June 15, 2009
- «f» — 15.06.2009T13:45:30 -> Monday, June 15, 2009 1:45 PM (en-US)
- «F» — 15.06.2009T13:45:30 -> Monday, June 15, 2009 1:45:30 PM (en-US)
- «g» — 15.06.2009T13:45:30 -> 6/15/2009 1:45 PM (en-US)
- «G» — 15.06.2009T13:45:30 -> 6/15/2009 1:45:30 PM (en-US)
- «M» — 15.06.2009T13:45:30 -> June 15 (en-US)
- «Y» — 15.06.2009T13:45:30 -> June, 2009 (en-US)
- «t» — 15.06.2009T13:45:30 -> 1:45 PM (en-US)
- «%d» — 01.06.2009T13:45:30 -> 1
- «dd» — 01.06.2009T13:45:30 -> 01
- «ddd» — 15.06.2009T13:45:30 -> Mon (en-US)
- «dddd» — 15.06.2009T13:45:30 -> Monday (en-US)
- «%M» — 15.06.2009T13:45:30 -> 6
- «MM» — 15.06.2009T13:45:30 -> 06
- «MMM» — 15.06.2009T13:45:30 -> Jun (en-US)
- «MMMM» — 15.06.2009T13:45:30 -> June (en-US)
- «%y» — 01.01.0001T00:00:00 -> 1
- «yy» — 01.01.0001T00:00:00 -> 01
- «yyy» — 01.01.0001T00:00:00 -> 001
- «yyyy» — 01.01.0001T00:00:00 -> 0001
Для полей с типом «Число» и «Дробное число»:
- «N» — 1234.567 -> 1,234.57 (en-US)
- «N0» — 1234.567 -> 1,234 (en-US)
- «N4» — 1234.567 -> 1,234.5670 (en-US)
Примеры:
Format('Наименование: {0} {1}', '001', 'Внедрение ERP') = 'Наименование: 001 Внедрение ERP'
Format('{0:MMMM}, [ProjectCreated]) = 'Январь'
Floor(number)
Возвращает ближайшее максимальное целое значение.
Пример:
Floor(112.1) = 113
Round(number, precision)
Возвращает округленное значение c заданной точностью.
Пример:
Round(112.156, 2) = 112.16
Min(number, number)
Возвращает минимальное из двух значений.
Пример:
Min(1, 2) = 1
Max(number, number)
Возвращает минимальное из двух значений.
Пример:
Max(1, 2) = 2
GetDate()
Возвращает текущую дату.
Пример:
GetDate() = '2019-01-01'
DateDiff(datepart, startDate, endDate)
Возвращает продолжительность между startDate и endDate в заданной единице измерения.
Параметр datepart — строка, определяет единицу измерения разницы дат и может принимать значение:
- year
- quarter
- month
- week
- day
- hour
Пример:
DateDiff('day', '2019-01-01', '2019-01-10') = 10
Coalesce(object, object, ...)
Возвращает первый параметр из списка, значение которого отлично от NULL.
Пример:
Coalesce(NULL, NULL, 2) = 2
In(value, case1, case2, ...)
Возвращает TRUE если первый параметр равен одному из последующих.
Пример:
In('Submitted', 'Draft', 'Submitted') = TRUE
If(boolean, result1, result2)
Возвращает result1 если первый параметр = TRUE и result2 если иначе.
If('Draft' == 'Draft', 'It is a draft', 'It is not a draft') = 'It is a draft'
IsNullOrZero(number)
Возвращает TRUE если параметр равен NULL или 0
Пример:
IsNullOrZero(0) = TRUE
IsNull(object)
Возвращает TRUE если параметр равен NULL
Пример:
IsNullOrZero(0) = FALSE
IsNullOrEmpty(string)
Возвращает TRUE если параметр равен NULL или пустой строке.
Пример:
IsNullOrEmpty('') = TRUE