You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Синтаксис формул — это набор правил, определяющих, как правильно записывать выражения, чтобы система могла их однозначно понять и вычислить.

Скобки

Круглые скобки ( )

Используются:

1) Для вызова функции, например

  • Date()
  • User()
  • IsNull(...)
  • GetList(...)

Без скобок функция не выполняется.

2) Для группировки выражений

if((This("Инициатор.Название")=="Примерсофт"), ...)

Используются при :

  • сложных условиях
  • нескольких логических операторах
  • вложенных выражениях

Используются для явного указания приоритета выполнения операций. Выражения внутри скобок вычисляются в первую очередь.

Фигурные скобки { }

Используются при создании массивов, например:
new Guid[] { Guid("..."), Guid("...") }

Квадратные скобки [ ]

Используются внутри строк (например, при формировании параметров API или JSON), например:
param=[{2}]

Запятая ,

Разделяет параметры функции/оператора, например:
if(условие, значение1, значение2)
GetList('GUID', 'фильтр', false)

ВНИМАНИЕ! Лишняя запятая приводит к ошибке.

Кавычки

Двойные кавычки " "

Используются для:

  • строковых значений
  • названий полей

Например:
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
  • Требуется ли экранирование кавычек внутри строк



  • No labels