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