Синтаксис формул — это набор правил, определяющих, как правильно записывать выражения, чтобы система могла их однозначно понять и вычислить.
Формула - это выражение, которое состоит из функций, операндов (==, !=, <> и т д) и констант.
Функция - состоит из имени функции, круглой открывающей и закрывающей скобок и параметров (аргументов), которые перечисляются через запятую внутри скобок. Некоторые функции не имеют параметров, также есть функции, которые могут содержать неограниченное число параметров (например, Join, Merge). Функции могут быть вложены одна в другую, т.е. результат одной функции может быть входным параметром (аргументом) другой функции. Все имена функций начинаются с заглавной буквы (не путать с оператором if, он пишется с маленькой буквы).
Используются:
1) Как обязательная составляющая любой функции
Например: Date(); User(); IsNull(...); GetList(...)
2) Для группировки выражений
if((This("Инициатор.Название")=="Примерсофт"), ...) |
Используются при :
Используются для явного указания приоритета выполнения операций.
Используются:
Используются внутри строк (например, при формировании параметров API или JSON) для обрамления значения параметра.
Разделяет параметры функции/оператора, например:
if(условие, значение1, значение2)
Например
if(IsNull(This('Дата начала (План)')), Date(), This('Дата начала (План)')) |
ВНИМАНИЕ! Лишняя запятая приводит к ошибке.
Используются для обозначение строк.
Например:
Field('name')
Parent('Быстрые ссылки', true) |
ВНИМАНИЕ! Рекомендуем для кавычек первого уровня (внешних) использовать одинарные кавычки ' '
1. Когда требуется экранирование
Экранирование знаком "слэш" \ используется, если внутри строки необходимо поставить такие же кавычки, которыми эта строка ограничена.
Если строка заключена в ' ', то внутренние ' ' нужно записывать как:
\'
2. Примеры, когда экранирование ОБЯЗАТЕЛЬНО
1) В строковых фильтрах GetList
Неправильно:
'i => i.Id == Guid("84124eed-7049-46a8-bac9-a179ff00efe3")' |
Правильно: 'i => i.Id == Guid(\"84124eed-7049-46a8-bac9-a179ff00efe3\")' |
2) При формировании JSON внутри строки
Например:
'{\"id\":\"84124eed-7049-46a8-bac9-a179ff00efe3\"}' |
3) В Format и строковых шаблонах
Например:
Format('param=\"{0}\"', Id()) |
Если строка находится внутри другой строки — экранирование обязательно.
3. Когда экранирование НЕ требуется
'i => i.Id == Guid("84124eed-7049-46a8-bac9-a179ff00efe3")' |
4. Правило проверки:
Если кавычка находится внутри уже открытой строки — требуется экранирование.
Используется для доступа к атрибуту связанного объекта, например:
This('Инициатор.Название')
This('source.contenttype.name') |
Структура: объект → связанный объект → его свойство
Используется для объединения строк, например:
Shrink(Field('Название'), 5, 3, '-') + '_' + Hash(Field('Название'), 2) |
Если один из элементов строка, то выполняется конкатенация.
Используется в фильтрах GetList, например:
'i => i.ContentTypeId == Guid("84124eed-7049-46a8-bac9-a179ff00efe3")' |
Структура:
переменная => условие
Перед сохранением формулы необходимо проверить: