Выражение вычисляемых полей

Значения ячеек в вычисляемом поле задаются её выражением. В выражении допускаются ссылки на другие поля в строке данных, арифметические и логические операторы, а также встроенные функции.

Имена полей заключаются в квадратные скобки:

[ColumnName]

Порядок вычислений задается с помощью круглых скобок:

([ColumnName] - [ColumnName]) * 1,18

Допускается применение литералов (фиксированных текстовых строк), заключаются в одинарные кавычки:

'Text'

Операторы

  • Логические: ||, &
  • Отношений: ==, !=, <, <=, <, >=
  • Аддитивные: +, -
  • Мультипликативные: *, /, %
  • Унарные: !

Функции работы со строками и форматирования

Concat

Concat(string1, string2, ...)

Возвращает объединенную строку.

Пример:

Concat('Hello', ' ', 'world') = 'Hello world'

Format

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» — 2009-06-15T13:45:30 -> 6/15/2009 (en-US)
  • «D» — 2009-06-15T13:45:30 -> Monday, June 15, 2009
  • «f» — 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45 PM (en-US)
  • «F» — 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45:30 PM (en-US)
  • «g» — 2009-06-15T13:45:30 -> 6/15/2009 1:45 PM (en-US)
  • «G» — 2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM (en-US)
  • «M» — 2009-06-15T13:45:30 -> June 15 (en-US)
  • «Y» — 2009-06-15T13:45:30 -> June, 2009 (en-US)
  • «t» — 2009-06-15T13:45:30 -> 1:45 PM (en-US)
  • «%d» — 2009-06-01T13:45:30 -> 1
  • «dd» — 2009-06-01T13:45:30 -> 01
  • «ddd» — 2009-06-15T13:45:30 -> Mon (en-US)
  • «dddd» — 2009-06-15T13:45:30 -> Monday (en-US)
  • «%M» — 2009-06-15T13:45:30 -> 6
  • «MM» — 2009-06-15T13:45:30 -> 06
  • «MMM» — 2009-06-15T13:45:30 -> Jun (en-US)
  • «MMMM» — 2009-06-15T13:45:30 -> June (en-US)
  • «%y» — 0001-01-01T00:00:00 -> 1
  • «yy» — 0001-01-01T00:00:00 -> 01
  • «yyy» — 0001-01-01T00:00:00 -> 001
  • «yyyy» — 0001-01-01T00: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

Floor(number)

Возвращает ближайшее максимальное целое значение.

Пример:

Floor(112.1) = 113

Round

Round(number, precision)

Возвращает округленное значение c заданной точностью.

Пример:

Round(112.156, 2) = 112.16

Min

Min(number, number)

Возвращает минимальное из двух значений.

Пример:

Min(1, 2) = 1

Max

Max(number, number)

Возвращает минимальное из двух значений.

Пример:

Max(1, 2) = 2

Функции работы с датами

GetDate

GetDate()

Возвращает текущую дату.

Пример:

GetDate() = '2019-01-01'

DateDiff

DateDiff(datepart, startDate , endDate)

Возвращает продолжительность между startDate и endDate в заданной единице измерения.

Параметр datepart — строка, определяет единицу измерения разницы дат и может принимать значение:

  • year
  • quarter
  • month
  • week
  • day
  • hour

Пример:

DateDiff('day', '2019-01-01', '2019-01-10') = 10

Функции условий

Coalesce

Coalesce(object, object, ...)

Возвращает первый параметр из списка, значение которого отлично от NULL.

Пример:

Coalesce(NULL, NULL, 2) = 2

In

In(value, case1, case2, ...)

Возвращает TRUE если первый параметр равен одному из последующих.

Пример:

In('Submitted', 'Draft', 'Submitted') = TRUE

If

If(boolean, result1, result2)

Возвращает result1 если первый параметр = TRUE и result2 если иначе.

If('Draft' == 'Draft', 'It is a draft', 'It is not a draft') = 'It is a draft'

IsNullOrZero

IsNullOrZero(number)

Возвращает TRUE если параметр равен NULL или 0

Пример:

IsNullOrZero(0) = TRUE

IsNull

IsNull(object)

Возвращает TRUE если параметр равен NULL

Пример:

IsNullOrZero(0) = FALSE

IsNullOrEmpty

IsNullOrEmpty(string)

Возвращает TRUE если параметр равен NULL или пустой строке.

Пример:

IsNullOrEmpty('') = TRUE