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