Синтаксис формул — это набор правил, определяющих, как правильно записывать выражения, чтобы система могла их однозначно понять и вычислить.
Круглые скобки ( )
Используются:
1) Для вызова функции
Например: Date(); User(); IsNull(...); GetList(...)
Без скобок функция не выполняется.
2) Для группировки выражений
if((This("Инициатор.Название")=="Примерсофт"), ...)
Используются при :
- сложных условиях
- нескольких логических операторах
- вложенных выражениях
Используются для явного указания приоритета выполнения операций.
Фигурные скобки { }
Используются:
- при создании массивов, например: new Guid[] { Guid("..."), Guid("...") }
- как маркеры подстановки (placeholders), которые функция потом может заменить соответствующими аргументами.
В этом случае фигурные скобки — часть синтаксиса строки форматирования - как часть формируемого JSON-подобного объекта - могут окружать итоговую конструкцию
Квадратные скобки [ ]
Используются внутри строк (например, при формировании параметров API или JSON) для обрамления значения параметра
Запятая ,
Разделяет параметры функции/оператора, например:
if(условие, значение1, значение2)
Например
if(IsNull(This('Дата начала (План)')), Date(), This('Дата начала (План)'))
ВНИМАНИЕ! Лишняя запятая приводит к ошибке.
Кавычки
Используются для обозначение строк.
Например:
Field('Название')
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)
Если один из элементов строка, то выполняется конкатенация.
Лямбда-выражение =>
Используется в фильтрах GetLis, например:
'i => i.ContentTypeId == Guid("84124eed-7049-46a8-bac9-a179ff00efe3")'
Структура:
переменная => условие
Обязательная проверка перед сохранением
Перед сохранением формулы необходимо проверить:
- Закрыты ли все круглые скобки ( )
- Закрыты ли все кавычки " " и ' '
- Нет ли лишней запятой
- Используется ли == вместо =
- Корректна ли вложенность if
- Требуется ли экранирование кавычек внутри строк