Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Функция - состоит из имени функции, круглой открывающей и закрывающей скобок и параметров (аргументов), которые перечисляются через запятую внутри скобок.
Некоторые функции не имеют параметров, также есть функции, которые могут содержать неограниченное число параметров (например, Join, Merge)

Функции могут быть вложены одна в другую, т.е. результат одной функции может быть входным параметром другой функции.

Все имена функций начинаются с заглавной буквы.

Внимание! if - это не функция, а оператор ветвления - пишется с маленькой буквы, в отличии от функции.

См. также Разработка и отладка формул с помощью плагина в Chrome.

Функции и примеры вызова

В таблице ниже представлен список доступных функций, пример их вызова и описание полученного результата.

Примечание: необязательные параметры указаны в квадратных скобках - []

Функции и примеры вызова

В таблице ниже представлен список доступных функций, пример их вызова и описание полученного результата.

Примечание: необязательные параметры указаны в квадратных скобках - []

Тип функцииФункцияОписаниеВходные параметрыВыходные параметрыПримерРезультат вычисления примера

Дата\время

AddDay([date], [incStepValue], [format])Возвращает дату [date], увеличенную на заданное количество дней [incStepValue]. Если указан параметр [format], то возвращает дату в виде строки

date type: Дата-время/строка.
default: Текущая дата-время (UTC)

incStepValue type: число.
default: 0 (может быть отрицательным)

format type: строка. default: ""

Дата-время/строка

AddDay(This('Created'), 1, 'dd.MM.yyyy')

AddDay(-10, 'dd.MM.yyyy')

Дата создания данного элемента, увеличенная на один день, в формате dd.MM.yyyy

Текущая дата-время минус 10 дней, в формате dd.MM.yyyy 

AddMonth([date], [incStepValue], [format])Возвращает дату [date], увеличенную на заданное количество месяцев
Тип функцииФункцияОписаниеВходные параметрыВыходные параметрыПримерРезультат вычисления примера

Атрибуты элемента



Author([context])Возвращает автора (атрибут "Создал") элемента [context] или текущего элемента вычисления

context type: элемент
default: текущий элемент вычисления

элемент из списка "Пользователи"

Author()



Field(Author(), 'Почта')

элемент из справочника "Пользователи" автора (атрибут "Создал") элемента, для которого выполняется вычисление

адрес почты автора (атрибут "Создал") элемента, для которого выполняется вычисление

 Id([context])Возвращает guid (уникальный идентификатор в системе) элемента [context] или текущего элемента вычисления

context type: элемент
default: текущий элемент вычисления

 guid

Id()



Id(This('Статус процесса'))

guid (уникальный идентификатор в системе) элемента, для которого выполняется вычисление
Пример: "6938dc08-9410-5083-8131-ecac23e5e3d1" - строковое представление уникального идентификатора в системе

guid значения атрибута "Статус процесса" текущего элемента 

Дата\время





AddDay([date], [incStepValue], [format])Возвращает дату [date], увеличенную на заданное количество дней
[incStepValue]. Если указан параметр [format], то возвращает дату в виде строки

date type:

Дата

дата-время/строка

.


default:

Текущая

текущая дата-время (UTC)

incStepValue type: число

.


default: 0 (может быть отрицательным)

format type: строка. default: ""

Дата
дата-время/строка
AddMonth

AddDay(

Field

This(

Parent(

'

Раздел

Created'), 1, '

Created'), 3

dd.MM.yyyy')

AddMonth



AddDay(

3

-10, 'dd.MM

MM

.yyyy')

Дата

дата создания

родительского элемента с типом контента 'Раздел'

данного элемента, увеличенная на

3 месяца

Название месяца через 3 месяца от текущей даты

один день, в формате dd.MM.yyyy


текущая дата-время минус 10 дней, в формате dd.MM.yyyy 


AddMonth([date]
AddYear([date]
, [incStepValue], [format])Возвращает дату [date], увеличенную на заданное количество месяцев [incStepValue]. Если указан параметр [format], то возвращает дату в виде строки

date type:

Дата

дата-время/строка

.


default:

Текущая

текущая дата-время (UTC)

incStepValue type: число

.


default: 0 (может быть отрицательным)

format type: строка. default: ""

Дата
дата-время/строка
AddYear

AddMonth(Field(Parent('Раздел'),'Created'),

2

3)



AddMonth(3, '

yyyy

MMMM')

Дата создания родительской папки, увеличенная на 2 года, в формате годDateTime(dateTime, format)Возвращает дату-время в заданном формате. Если не задано значение даты-времени, будет возвращено текущее значениеdateTime: dateTime (необязательный) - Дата-время
format: строка (необязательный) - Формат даты-времениdateTimeDateTime(Field(Parent(), 'Время начала'), 'dd.MM.yyyy')Вернет значение атрибута "Время начала" родительской папки элемента в указанном формате.КонфигурацияCfg(key)Возвращает значение элемента из списка "Конфигурация" по ключуkey: значение атрибута "Системное имя" элемента из списка "Конфигурация"Возвращаемое значение соответствует типу  элемента, найденного по ключу (строка, число, флаг, картинка)Cfg('Site.PortalUrl')Вернет значение элемента конфигурации по пути: "Общие настройки" → "Адрес портала" Организационно-штатная структураUser()материал дополняется  Структура хранения данныхField(element, fieldName, checkParent, includeCurrent)Возвращает значение заданного атрибута у заданного элемента. При отсутствии заданного элемента, значение атрибута будет считано с текущего элементаelement: строка (необязательный) - Название или тип элемента
fieldName: строка (обязательный) - Название атрибута
checkParent: bool (необязательный) - Проверять родительский элемент
includeCurrent: bool (необязательный, используется только при checkParent=True)  - Проверять текущий элементЗначение поляField(Parent('В процессе'), 'Название')Вернет значение атрибута "Название" родительской папки с типом элемента или названием "В процессе"Lookup(listName.elementName)Возвращает заданный элемент, заданного списка.listName: строка (обязательный) - Название списка
elementName: строка (обязательный) - Название элементаЭлемент спискаLookup('Статусы документов.Размещено')Вернет элемент с названием "Размещено" списка "Статусы документов"Parent(element, name, includeCurrent)Вернет первый объект удовлетворяющий заданным условиям, являющийся родительским по отношению к текущему или заданному. 

element: объект (необязательный) - элемент, для которого будет выполнен поиск родительского элемента.

name: строка (необязательный) - Название типа искомого элемента или название самого элемента

includeCurrent: bool (необязательный) - проверять ли сам текущий элемент.

Элемент или значение заданного поля элемента
  1. Parent()
  2. Parent('В процессе')
  3. Parent(Ref('Связь с замечанием'), 'Проект')
  4. Parent('Стадия', true)
  1. Вернет первый родительский элемент текущего элемента
  2. Вернет первый родительский элемент с названием или типом элемента "В процессе"
  3. Вернет первый родительский элемента с типом элемента "Проект" для документа связанного с текущим замечанием.
  4. Вернет элемент первый элемент с типом элемента "Стадия" начиная с самого текущего элемента. 
СвязиRef(contentType)Возвращает первый элемент из списка связей элемента с заданным типом элемента связиcontentType: строка (обязательный) - Тип элемента связиЭлементRef('Связь с замечанием')Вернет первый элемент списка связей с типом элемента 'Связь с замечанием'Refs(contentType)Возвращает список связей элемента с заданным типом элемента связиcontentType: строка (обязательный) - Тип элемента связиСписок элементовRefs('Связь с замечанием')Вернет список связей с типом элемента 'Связь с замечанием'Логические
if(statement, 'value is true', 'value is false')Проверяет результат заданного логического выражения и в зависимости от него возвращает одно из двух значений

statement: bool - логическое выражение, результатом которого является True или False

value is true (обязательное) - возвращаемое значение, если значение выражения True

value is false (обязательное) - возвращаемое значение, если значение выражения False

Значениеif(This('Шифр') = '', This('Статус'), This('Шифр'))Проверит заполнение атрибута "Шифр" и, если этот атрибут пустой, то вернет значение атрибута "Статус", а если "Шифр" заполнен, то вернет его значение

дата создания родительского элемента с типом контента 'Раздел', увеличенная на 3 месяца


название месяца через 3 месяца от текущей даты

AddWorkingTime([date]offset, 
[inWorkingHours][workInterval], 
[countCurrentDay])
Прибавляет к [date] рабочее время offset, рассчитанное в рабочих днях [inWorkingHours] - false, или часах [inWorkingHours] - true, с учетом интервалов рабочих часов в сутках [workInterval]. Параметр [workInterval] имеет значение по умолчанию '9,13,14,18' - строка, которая содержит массив из 4-х чисел, разделенных запятой или точкой с запятой. Первая пара чисел рабочее время до обеденного перерыва, вторая - рабочее время после перерыва.
Значение параметра offset прибавляется к указанной дате с учетом производственного календаря (список "Производственный календарь" в ЦА), в котором можно указать даты праздничных дней и рабочих дней, выпадающих на выходной. Обычные выходные дни (суббота и воскресенье) в календаре указывать на надо. Если рабочий день попадает на выходной, то у записи календарь надо выставить флаг "Рабочий день". Флаг [countCurrentDay] - учитывать ли в расчетах оставшееся рабочее время в текущем рабочем дне параметра [date], значение по умолчанию - true.
Примечание: расчет новой даты происходит следующим образом, дата, указанная в date,сначала приводится к локальной дате (времени и часовому поясу сервера). Далее выполняется расчет даты и происходит обратное приведение новой даты к формату UTC. Значение параметра workInterval также учитывается в локальном времени сервера.

date type: дата-время/строка
default: 
текущая дата-время (UTC)

offset type: число

inWorkingHours type: bool

workInterval type: строка

countCurrentDay type: bool

 дата-время

 AddWorkingTime(This('start_date_fact'), 5, true'9,13,14,18')

прибавляет к значению атрибута "Дата начала (Факт)" 5 рабочих часов. Интервал рабочих часов в сутках с 9 до 13 часов и с 14 до 18 часов

AddYear([date], [incStepValue], [format])Возвращает дату [date], увеличенную на заданное количество лет [incStepValue]. Если указан параметр [format], то возвращает дату в виде строки

date type: дата-время/строка
default: текущая дата-время (UTC)

incStepValue type: число
default: 0 (может быть отрицательным)

format type: строка. default: ""

дата-время/строкаAddYear(Field(Parent(), 'Created'), 2, 'yyyy')дата создания родительской папки, увеличенная на 2 года, в формате год
Date([date], [format])Возвращает дату-время [date] в заданном формате [format], но без учета времени. Если не задано значение даты-времени, будет возвращено текущее значение

date type: дата-время/строка
default: текущая дата-время (UTC)

formattype: строка. default: ""

дата-время/строкаDate()

значение в формате дата-время (UTC), но без учета значения времени (часы/минуты/секунды) текущих суток.

Пример: "2025-01-31T00:00:00Z" - строковое представление типа дата-время (только дата)

DateTime([date], [format])Возвращает дату-время [date] в заданном формате [format]. Если не задано значение даты-времени, будет возвращено текущее значение

date type: дата-время/строка
default: текущая дата-время (UTC)

formattype: строка
default: ""

дата-время/строкаDateTime(Field(Parent(), 'Время начала'), 'dd.MM.yyyy')значение атрибута "Время начала" родительской папки элемента в указанном формате
Time([date], [format])Возвращает дату-время [date] в заданном формате [format], но без учета даты. Если не задано значение даты-времени, будет возвращено текущее значение

date type: дата-время/строка
default: текущая дата-время (UTC)

formattype: строка. default: ""

дата-время/строкаTime()

значение в формате дата-время (UTC), но без учета значения даты (дни/месяцы/годы) текущих суток.

Пример: "07:26:17.6569781" - строковое представление типа дата-время (только время)

КонфигурацияCfg(key)Возвращает значение элемента из списка "Конфигурация" по ключу key (значение атрибута "Системное имя")key type: строкавозвращаемое значение соответствует типу  элемента, найденного по ключу (строка, число, флаг, картинка)Cfg('Site.PortalUrl')значение элемента конфигурации по пути: "Общие настройки" → "Адрес портала" 
Логическиеif(statement, 'value is true', 'value is false')Проверяет результат заданного логического выражения и в зависимости от него возвращает одно из двух значений

statement type: bool

value is true type: bool

value is false type: bool

объектif(IsNotNull(This('Шифр')), This('Шифр'), This('Статус документа.Название'))

возвращает значение атрибута "Шифр", если он заполнен, в противном случае, будет возвращено название статуса документа текущего элемента вычисления

statement_1 || statement_2

Логическое "ИЛИ"  - проверит значение обоих выражений и вернет True, если хотя-бы одно из них является верным. 
Если statement_1

: bool - первое логическое выражение, результатом которого является True или False

== True, то результат тоже будет True и второе выражение вычисляться не будет

statement_1

: bool - второе логическое выражение, результатом которого является True или False

 type: bool

statement_2 type: bool

bool

Field(Ref('Вложение процесса'), 'Статус документа.Название') == 'Размещено' || Field(Ref('Вложение процесса'), 'Статус документа.Название') == 'На корректировке'

Вернет True, если значением атрибута "Статус документа" вложения процесса является "Размещено" или "На корректировке" и False, если нет

statement_1 && statement_2

Логическое "И"  - проверит значение обоих выражений и вернет True, если оба из них являются верными и False, если хотя-бы одно неверно. 

Если statement_1

: bool - первое логическое выражение, результатом которого является True или False

== False, то результат тоже будет False и второе выражение вычисляться не будет

statement_1

: bool - второе логическое выражение, результатом которого является True или False

 type: bool

statement_2 type: bool

 

boolThis('Статус.
Название
id') ==
'Выполняется'
Id(Lookup('Статусы задач.На доработку')) &&
IsNotNull
IsNull(This('
Ответ
Вопрос проектировщику'))

Вернет True, если значение атрибута "Статус"

текущего 

текущего элемента - "

Выполняется

На доработку" и

значение атрибута

атрибут "

Ответ

Вопрос проектировщику" не

является пустым и False если какое-то из этих условий не выполнено. 

заполнен и False, в противном случае 

IsStartsWith
IsEndWith
(str, subStr)

Проверяет,

заканчивается

начинается ли указанная

строка заданной подстрокой и возвращает True или False

str: строка (обязательное) - Исходная строка

subStr: строка - искомая подстрока

bool

строка str с подстроки subStr и возвращает true/false

str type: строка

subStr  type: строка

boolIsStartsWith
IsEndWith
(This('
Имя
name'), '
.docx
Согласование')
Вернет 'True'

true, если в

значении 

This('

Имя

name')

строка заканчивается на .docxIsNull(value)Функция возвращает true, если у атрибута нет значения (пустая строка или null), и false, если атрибут содержит значениеvalue (обязательный) - Атрибут или результат вычисления другой формулыboolIsNull(Field(Parent(), 'Ответственный'))Вернет False, если поле "Ответственный" родительской папки текущего элемента заполнено и True, если нет. 

возвращаемая строка начинается с 'Согласование'

IsEndWith(str, subStr)Проверяет, заканчивается ли указанная строка str заданной подстрокой subStr и возвращает true/false

str type: строка

subStr  type: строка

boolIsEndWith(This('Название'), '.docx')true, если в This('Название') возвращаемая строка заканчивается на '.docx'
IsNotNull([value]
IsNotNull(value
)Функция возвращает true, если
у атрибута есть
атрибут [value]содержит значение, и false, если
атрибут не содержит значения (
[value] - null, пустая строка или
null
пустая коллекция (список) элементовvalue
(обязательный) - Атрибут или результат вычисления другой формулы
 type: объектbool

IsNotNull(Field(Parent(), 'Ответственный'))

Вернет True, если поле "Ответственный"



IsNotNull(Parent(Ref('Вложение процесса'), '62_Согласование РД'))

true, если атрибут "Ответственный" родительской папки текущего элемента

заполнено

заполнен и

False

Здесь:

Field(Ref('Вложение процесса'), 'Статус документа.Название') - искомый ключ: название статуса документа являющегося вложением в процесс. 

'Размещено', Lookup('Статус процесса.Входной контроль') - первая пара "ключ, значение"

'Проверено', Lookup('Статус процесса.Согласующие') - вторая пара "ключ, значение"

'Согласовано', Lookup('Статус процесса.Утверждающие') - третья пара "ключ, значение"

В зависимости от статуса документа вернет одно из возможных значение:

объект

false, если

нет. Switch(checkKey, key1, value1, key2, value2, .., keyN, valueN)Проверит совпадение заданного значения с  ключом из списка "ключ, значение" и вернет соответствующее этому ключу значение. Как ключ, так и значение могут быть различных типов - строка, число, объект, bool

checkKey (обязательно) - искомый ключ

список пар key, value (обязательно) - список пар "ключ, значение", разделенных запятой. Пары разделяются запятыми. 

Значение, соответствующее заданному ключу.Switch(Field(Ref('Вложение процесса'), 'Статус документа.Название'), 'Размещено', Lookup('Статус процесса.Входной контроль'), 'Проверено', Lookup('Статус процесса.Согласующие'), 'Согласовано', Lookup('Статус процесса.Утверждающие'))

атрибут не заполнен или отсутствует 

true, если файл/папка, приложенные к процессу, находятся в папке 62_Согласование РД

IsNull([value])Функция возвращает true, если атрибут [value] - null, пустая строка или пустая коллекция (список) элементов, и false, если [value] содержит значениеvalue type: объектbool

IsNull(Field(Parent(), 'Ответственный'))



true, если атрибут "Ответственный" родительской папки текущего элемента не заполнен или отсутствует и false, в противном случае 
IsUserAdmin()Функция возвращает true, если текущий пользователь является администратором, Системной учетной записью или входит в группу "Администраторы системы"
boolIsUserAdmin()true, если текущий пользователь является системным администратором, входит в группу "Администраторы системы" или системная учетная запись
Nvl(value, defaultValue)Возвращает defaultValue, если значение атрибута value равноnull, пустой строке или пустой коллекции (списку) элементов (см. функцию IsNull), иначе возвращает само значение value

value type: объект

defaultValue  type: объект

объектNvl(This('% выполнения'), 0)Вернет значение атрибута "% выполнения" текущего элемента, если значение указано, в противном случае вернет 0
Switch(checkValue, key1, value1, key2, value2, ..., keyN, valueN)Проверяет совпадение заданного значения value с одним из ключей key из списка пар "key - value" и вернет соответствующее этому ключу значение value

checkValue type: объект

<key, value> type: Dictionary<объект, объект>

объект
(того же типа, что и checkValue)
Switch(Field(Ref('Вложение процесса'), 'Статус документа.Название'), 'Размещено',
объект
Lookup('Статус процесса.Входной контроль')
, 'Проверено', Lookup('Статус процесса.
Утверждающиеобъект
Согласующие')
, 'Согласовано',Lookup('Статус процесса.Утверждающие')
СтроковыеFileExt([context])

Возвращает расширение из атрибута "Название" элемента [context] или текущего элемента вычисления. Если расширения не найдено, то функция вернет пустую строку.
Примечание: расширение возвращается вместе с символом точки

context type: Элемент.
default: Текущий элемент вычисления

строка

FileExt()

FileExt(Ref('Связь с замечанием'))

Вернет расширение текущего элемента вычисления

Будет вычислено расширение элемента, к которому оставлено замечание

Format(formatString, [value1, value2,...,valueN])Возвращает строку formatString, с добавлением параметров [value1, value2,...,valueN] в места подстановки. Чаще всего используется как более удобный вариант конкатенации строк

formatString type: строка
[value1, value2,...,valueN]: type: объект
З
начения подстановки в строку форматирования. Типом подстановки может быть не только строка, но и, например, число.

строка

Format('Замечание_{0}_{1}', Field(Ref('Связь с замечанием'), 'Название'), This('ИД'))

Format('{0:0000}', 12)

Добавление имени документа (текущего) и атрибута ИД в места подстановки {0} и {1} строки форматирования 'Замечание_{0}_{1}'

Вернет строку '0012'

Полный набор форматов соответствует работе функции String.Format()  https://msdn.microsoft.com/ru-ru/library/0c899ak8(v=vs.110).aspx

IndexOf(str, value, [occurrence])Возвращает индекс (позицию) строки value в строке str, начиная с вхождения [occurrence]

formatString type: строка

value  type: строка

occurrence type: число.
default: 0

число

Format('{0} {1}.{2}.', Substring(This('Название'), 0, IndexOf(Field('Название'), ' ')), Substring(Field('Название'), IndexOf(Field('Название'), ' ', 0) + 1, 1), Substring(Field('Название'), IndexOf(Field('Название'), ' ', 1) + 1, 1))

ФИО текущего пользователя в сокращенном варианте (Сидоров А.С.)

Join()материал дополняется

 

 

Split()материал дополняется

 

 

Str()материал дополняется

 

 

Substring(str, startIndex, substrLength)Возвращает подстроку указанной длины от начала исходной строки или от указанного номера символа

str: строка (обязательный) - Исходная строка

startIndex: число (необязательный) - номер символа, с которого надо начинать отсчет подстроки

substrLength: число (необязательный) - длина подстроки

строка
  1. Substring('Анкор-МПРТ.03', 5

  2. Substring('Анкор-МПРТ.03', 6, 4

  1. Вернет строку 'Анкор'
  2. Вернет строку 'МПРТ'
Translit(str)*Функция заменяет русские буквы на английские и возвращает результат*

str: строка (обязательный) - исходная строка

строкаTranslit('В12345/555Д')

Вернет строку "V12345_555D"

TrimEnd(str, subStr)Функция обрезает строку с конца, начиная с указанной подстроки и возвращает полученный результат. Подстрока ищется с конца исходной строки. Можно указать несколько вариантов подстрок, разделив их символом #

str: строка (обязательный) - исходная строка

subStr: строка (обязательный) - искомая подстрока.

строкаTrimEnd('тест_РД_ver01','_ver#_rev')

Вернет строку "тест_РД"

+Возвращает результат конкатенации двух  строк

value1:  строка (обязательное) - первое слагаемое

value2:  строка (обязательное) - второе слагаемое

строкаField(Parent('Проект'), 'Шифр') + '-' + Field(Parent(), 'Марка') Возвращает разделенные дефисом значение атрибута "Шифр" у первого родительского элемента с типом элемента "Проект", и значение атрибута "Шифр" родительского элемента.Математические

математические операторы:

+

-

*

/

Возвращает результат выполнения соответствующей математической функции

value1:  число (обязательное) - первое слагаемое

value2:  число (обязательное) - второе слагаемое

 

число(This('Поле A') + This('Поле B') + This('Поле С')) * Field(Parent('Комплект'), 'Множитель') / 3Вернет результат сложения значений атрибутов "Поле A", "Поле В" и "Поле С" текущего элемента, умноженный на значение атрибута "Множитель" родительского элемента с типом элемента "Комплект" и поделенного на 3Count(listObject)Возвращает количество элементов заданного спискаlistObject: список (обязательный) - Список объектовчислоCount(Refs('Вложение рабочего процесса'))
Вернет кол-во связей с типом элемента 'Вложение рабочего процесса' рабочего процессаInc(list.fieldName.id, step)Увеличивает значение указанного атрибута на заданную величину и возвращает итоговое значение

list: строка (обязательный) - наименование списка с элемента которого должно быть взято исходное значение.

fieldName: строка (обязательный)- название атрибута

id: число (обязательный) - порядковый номер элемента из списка "Счетчики"

step: число (необязательный) - значение, на которое нужно увеличить текущее значение.

числоInc('Счетчики.Счетчик.2', 3)

Возвращает значение атрибута "Счетчик" элемента с ИД=2 из  списка "Счетчики" увеличенного на 3.

Данная функция служит для реализации счетчика, например, для автоматической нумерации каждого добавляемого в папку документа.

Pow(base, factor)Возводит в заданное число степень

base: число (обязательный) - основание степени

factor: число (обязательный) - показатель степени

числоPow(2, 3)Вернет 23 =  8.Sqrt(value)Возвращает квадратный корень заданного числа

value: число (обязательный)

число

Sqrt(4)

Вернет 2Преобразование типов данныхParseDateTime(dateTime)Преобразует строку с указанием даты и времени в формат DateTime. Если  указать только дату без времени, то значение времени будет установлено в 00:00:00. Если указать только время, без даты, то будет установлена текущая датаdateTime: строка (обязательный) - Строка в формате 'dd.mm.yy hh:mm:ss'dateTimeParseDateTime('20.05.2024 10:50')Вернет 20.05.2024 10:50 в формате DateTimeParseFloat(value)Преобразует строку в число с плавающей запятойvalue: строка (обязательный) - Строка в которой целая и дробная часть отделены точкойЧисло с плавающей запятойParseFloat('12,05')Вернет число 12.05ParseBool(value)Преобразует строки 'true', 'false', '0' или 0 в булево значениеvalue (обязательный) - строка или числоbool
  1. ParseBool('true')
  2. ParseBool('false')
  3. ParseBool('0')
  1. Вернет True
  2. Вернет False
  3. Вернет False
Работа со спискамиContains(listObject, checkObject)Проверяет, находится ли заданный объект в списке объектов и возвращает True или False listObject: список (обязательный) - Список объектов
checkObject: объект (обязательный) - искомый объектboolContains(Field(Parent(Ref('Вложение рабочего процесса')), 'Разрешен запуск процесса согласования')), This('Инициатор'))Вернет True если перечень пользователей указанных в атрибуте 'Разрешен запуск процесса согласования' родительской папки вложения процесса содержит инициатора процесса, и False, если не содержит.

При вычислении сложной формулы система сама определяет, какого типа данные возвращают функции This() Parent(). Но могут возникнуть ситуации, когда нужно привести значение к типу "строка" или "число". Для этого необходимо сделать следующее:

...

)

По статусу документа первого вложения возвращаем тот или иной статус процесса, например, чтобы по статусу вложения начать процесс с определенного этапа в автоматизации.

Field(Ref('Вложение процесса'), 'Статус документа.Название') - искомое значение: название статуса документа, являющегося вложением в процесс

'Размещено', Lookup('Статус процесса.Входной контроль') - первая пара <ключ, значение>

'Проверено', Lookup('Статус процесса.Согласующие') - вторая пара "ключ, значение"

'Согласовано', Lookup('Статус процесса.Утверждающие') - третья пара "ключ, значение"

Математические

математические операторы:

+
-
*
/

Применяем математический оператор к операндам

value1  type: число

value2  type: число

 

число/число в плавающей точкой

(This('Поле A') + This('Поле B') + This('Поле С')) * Field(Parent('Комплект'), 'Множитель') / 3

результат сложения значений атрибутов "Поле A", "Поле В" и "Поле С" текущего элемента, умноженный на значение атрибута "Множитель" родительского элемента с типом элемента "Комплект" и поделенного на 3

Inc(listName.fieldName.id, step)

Получает значение атрибута fieldName строки с номером id (атрибут "ИД") из списка счётчиков listName (в типовой конфигурации это справочник "Счётчики") и инкрементирует (увеличивает) это значение на step. Полученное значение также сохраняется в fieldName

listName type: строка

fieldName type: строка

id type: число

step type: число

числоInc('Счётчики.Счётчик.2', 1)

Возвращает значение атрибута "Счётчик" элемента с ИД=2 из  списка "Счётчики" увеличенного на 1.

Данная функция служит для реализации Счётчика, например, для автоматической нумерации каждого добавляемого в папку документа.

Pow(base, factor)Возводит в заданное base число степень factor

base type: число

factor type: число

числоPow(2, 3)23 =  8.
Sqrt(value)Возвращает корень квадратный из заданного числа

value type: число

число

Sqrt(16)

4
 Sum(value1,value2,...,valueN)Возвращает арифметическую сумму параметров

value1,value2,...,valueN type:число

число

Sum(1, 2.6, 5)

Sum(Select(GetList('966e62c5-a803-49a0-a1be-e680d130c481', 'i => i.ContentTypeId == Guid(\"540ff572-4a29-4d8e-8dfb-8eda093c583a\")'), 'This(\"complete_percent\")'))

8.6

Вернет сумму значений атрибута "% выполнения" у папок с типом "Проект" в корне библиотеки 

 Min(value1,value2,...,valueN)Возвращает минимальное значение из набора параметров

value1,value2,...,valueN type:число

число

Min(1, 2.6, 5)

1

 Max(value1,value2,...,valueN)Возвращает максимальное значение из набора параметров

value1,value2,...,valueN type:число

число

Max(1, 2.6, 5)

Min(Select(GetList(Id(), 'i => i.ContentTypeId == Guid(\"64a15f4c-083e-420b-b54e-fc75d44f31b7\")'), 'This(\"percent_complete\")'))

5

Вернет минимальное из значений атрибута "% выполнения" у папок с типом "Стадия" в папке проекта

Организационно-штатная структураUser()Возвращает значение элемента из списка "Пользователи" для текущего пользователя, под контекстом которого выполняется вычисление
элемент из списка "Пользователи"Field(User(), 'Почта')адрес почты текущего пользователя в системе, под контекстом которого выполняется вычисление
Преобразование типов данныхParseBool(value)Преобразует строки 'true'/'false' (регистр не важен), '0'/'1', числа 0/1 в булево значение True/Falsevalue type: строка/числоbool

ParseBool('true')

ParseBool('False')

ParseBool('0')

ParseBool(1)

True

False

False

True

ParseDateTime(value)Преобразует строку value с указанием даты и времени в формат DateTime. Если  указать только дату без времени, то значение времени будет установлено в 00:00:00. Если указать только время, без даты, то будет установлена текущая датаvalue type: строкадата-время

ParseDateTime('20.05.2024 10:50')


ParseDateTime('20/06/2024')

"2024-05-20T10:50:00" в формате DateTime


"2024-06-20T00:00:00" в формате DateTime

ParseFloat(value)Преобразует строку value в число с плавающей запятой. Целя и дробная части в строке должны быть разделены символом точки или запятойvalue type: строкачисло с плавающей точкойParseFloat('12,05')12.05
Работа со спискамиAll(list, expression, lookupList)Возвращает истину (True), если, для КАЖДОГО элемента, из просматриваемого списка list , результат выражения expression, содержится в просматриваемом списке lookupList

list type: список<элемент>

expression type: строка

lookupList type: список объектов

boolAll(Refs('Вложение процесса'), 'Field(\'Статус документа.Название\')', Field(Ref('Вложение процесса'), 'Статус документа.Название')) || All(Refs('Вложение процесса'), 'Field(\'Статус документа.Название\')', 'Размещено', 'На корректировке')True, если все вложения текущего процесса имеют одинаковый статус (берем статус первого вложения и сравниваем с ним) или все вложения находятся в статусе "Размещено", либо "На корректировке"
Any(list, expression, lookupList)Возвращает истину (True), если, ХОТЯ БЫ ДЛЯ ОДНОГО элемента, из просматриваемого списка list , результат выражения expression, содержится в просматриваемом списке lookupList

list type: список<элемент>

expression type: строка

lookupList type: список<объект>

bool Any(Refs('Вложение процесса'), 'FileExt()', '.dwg','.rvt')True, если среди вложений текущего процесса есть, хотя бы один, файл с расширением ".dwg" или ".rvt"
Contains(listelement)Если list - строка и element - строка, то проверяет, что подстрока element входит в строку list. list также может быть массивом строк.
Если list - список элементов или объектов с типом "ссылка на элемент списка" и element - элемент, объект с типом "ссылка на элемент списка" или guid, то проверяет, что значение в element входит в список list

list type: строка/список<элемент>/список<объект с типом "ссылка на элемент списка">

element type: строка/элемент/объект с типом "ссылка на элемент списка"/guid

boolContains(Field(Ref('Вложение процесса'), 'Разрешен запуск процесса согласования', true, false, true), This('Инициатор'))True, атрибут 'Разрешен запуск процесса согласования' родительской папки вложения процесса содержит инициатора  процесса (непосредственно или через группу/подразделение), и False, если не содержит
Count(list)Возвращает количество элементов в коллекции list. Если в list содержится какой-либо объект, не коллекция, то функция вернет 1, в противном случае - 0list type: список<элемент>/объектчисло

Count(Refs('Вложение рабочего процесса'))

Count(Parent('Стадия', 'Утверждающие', true))

количество вложений в рабочем процессе

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

Exists(list, expression)Применяет к каждому элементу из списка list, выражение из expression, которое должно возвращать булево значение True/False. Если результат вычисления выражения, хотя бы для одного элемента, вернет True, то результат всей функции тоже Truelist type: список<элемент>

expression type: строка

bool Exists(Refs('Вложение процесса'), 'FileExt() == \'.pdf\'')вернет True, если среди вложений текущего рабочего процесса, есть хотя бы один документ с расширение ".pdf", иначе - False

GetList([context], [expression], [resursive])


по синтаксису запросов в [expression], см. Поиск элементов по структуре

Отбирает дочерние элементы [context].
Если выражение [expression] указано, то отбираются только те дочерние элементы, которые соответствуют  условию отбора в [expression], иначе отбираются все дочерние элементы.
Если флаг [resursive] выставлен в true, то отбор элементов (по условию или без) происходит рекурсивно вниз по структуре от родительского элемента [context], если false, то (по условию или без) отбираются только элементы, у которых [context] - это непосредственный родитель.

context type: элемент
default: текущий элемент вычисления

expression type: строка

resursive type: bool

список<элемент>

Count(GetList(This('list'), Format('i => i.GetValueAsString(\"email\") == \"{0}\" && i.Id != Guid(\"{1}\")', This('Почта'), Id()), true)) > 0



GetList(This(), Format('i => i.ContentTypeId == Guid(\"{0}\") && (new Guid[] {{Guid(\"84124eed-7049-46a8-bac9-a179ff00efe3\"), Guid(\"132fd34b-b757-459e-8191-4a264c91a5b3\")}} ).Contains(i.GetLookupId(\"document_status\"))', '6065b2ae-63e3-44aa-a92d-2d414c30f808'), true)


вернет True, если в списке "Пользователи" уже есть другой пользователь с адресом почты, как у текущего пользователя. Эта функция используется в валидаторе при добавлении новых пользователей, чтобы обеспечить уникальность по полю "Почта"


вернет все документы в статусах "Согласовано" и "Согласовано с замечаниями" для текущей папки рекурсивно (на всех уровнях вложенности)

Merge(value1,value2,...,valueN)Объединяет значения из value в единый список значений. value может содержать единичное значение, так и быть списком значенийvalue1,value2,...,valueN type: список<элемент>/объектсписок<объект> Merge(This('Согласующие', true), This('Утверждающие', true))возвращает объединенный список согласующих и утверждающих текущего рабочего процесса, с учетом раскрытия подразделений\групп (см параметр expandGroup функции This)
Select(list, expression)Применяет к каждому элементу из списка list, выражение из expression и возвращает полученные результаты в виде списка значений

list type: список объектов с типом элемент/объект с типом "ссылка на элемент списка"/guid

expression type: строка

список<объект>Select(This('Исполнитель', true), 'Field(\'Почта\')')возвращает список адресов эл. почты исполнителей по текущей задаче рабочего процесса, с учетом раскрытия подразделений\групп (см параметр expandGroup функции This)
СвязиRef([context], referenceTypeВозвращает элемент из атрибута "Назначение" первой связи с типом referenceType для элемента [context] или текущего элемента вычисления

context type: элемент
default: текущий элемент вычисления

referenceType type: строка


элементRef('Связь с замечанием')связанный элемент по связи с типом'Связь с замечанием'для текущего элемента вычисления (замечания)
Refs([context], referenceType)Возвращает элемент из атрибута "Назначение" для каждой связи с типом referenceType для элемента [context] или текущего элемента вычисления

context type: элемент
default: текущий элемент вычисления

referenceType type: строка

список<элемент>Exists(Refs('Вложение процесса'), 'FileExt() == \'.pdf\'')существует ли среди вложений текущего процесса, хотя бы одно вложение с расширением 'pdf'
СтроковыеFileExt([context])

Возвращает расширение из атрибута "Название" элемента [context] или текущего элемента вычисления. Если расширения не найдено, то функция вернет пустую строку.
Примечание: расширение возвращается вместе с символом точки

context type: элемент
default: текущий элемент вычисления

строка

FileExt()


FileExt(Ref('Связь с замечанием'))

расширение текущего элемента вычисления


расширение элемента, к которому оставлено замечание

Format(formatString, [value1,value2,...,valueN])Возвращает строку formatString, с добавлением параметров [value1, value2,...,valueN] в места подстановки {N} внутри строки formatString, где N - порядковый значения из второго параметра функции. 
Примечание: функцию Format использовать предпочтительней, чем символ конкатенации строк +.

formatString type: строка

value1,value2,...,valueN type: объект
З
начения подстановки в строку форматирования. Типом подстановки может быть не только строка, но и, например, число.

строка

Format('Замечание_{0}_{1}', Field(Ref('Связь с замечанием'), 'Название'), This('ИД'))


Format('{0:0000}', 12)

Добавление имени связанного документа и атрибута ИД замечания в места подстановки {0} и {1} строки форматирования


Вернет строку '0012'

Полный набор форматов соответствует работе функции String.Format()  https://msdn.microsoft.com/ru-ru/library/0c899ak8(v=vs.110).aspx

Hash(str, postfixSymbolCount)Функция вычисляет хэш от заданной строки str и возвращает указанное количество символов postfixSymbolCount с конца полученного хэша

str type: строка

postfixSymbolCount type: число

 

строка

Hash('4_Управление проектом', 3)

вернет строку '3af'

IndexOf(str, value, [occurrence])Возвращает индекс (позицию) подстроки value в строке str, начиная с порядкового номера вхождения [occurrence] этой подстроки. Если подстрока не найдена, то функция вернет -1

str type: строка

value type: строка

occurrence type: число
default: 0

число

Format('{0} {1}.{2}.', Substring(This('Название'), 0, IndexOf(Field('Название'), ' ')), Substring(Field('Название'), IndexOf(Field('Название'), ' ', 0) + 1, 1), Substring(Field('Название'), IndexOf(Field('Название'), ' ', 1) + 1, 1))

ФИО текущего пользователя в сокращенном варианте (Сидоров А.С.)

Join(separatorvalues)Возвращает строку, состоящую из элементов списка значений values, разделенных строкой-разделителем separator

separator type: строка 

values type: список значений

строка

Join(', ', Select(Parent('Согласующие'), 'Field(\\'Название\\')'))

объединение в одну строку названий значений из поля "Согласующие" (мультилукап) СХД текущего элемент вычисления, разделенные строкой ", "

Пример: "Функциональная группа 1, Администраторы домена"

Path([context], [relativePath], [addSubStructure])Функция получает путь элемента из [context] или текущего элемента вычисления с учетом относительного пути [relativePath]. Если [context] не равен текущему элементу вычисления и выставлен флаг [addSubStructure], то к итоговому пути прибавляется остаток пути до текущего элемента вычисления (это остаток пути ("хвост"): "путь текущего элемента вычисления" - "путь context") 

context type: элемент
default: текущий элемент вычисления

relativePath type: строка

addSubStructure type: bool

строка

 Path()



Path(Parent('В процессе'), '../Согласовано', true)











Path(Parent('В процессе'), '../../03_РД/Входящие', true)

путь для текущего элемента вычисления

Пример: "/ЖК Витро Парк/02_ПД/В процессе/АР-09.24/ИЗМ-1/Test 014.pdf"


находит папку с именем "В процессе" в структуре текущего элемента вычисления, заменяет ее в пути на папку "Согласовано" (путь относительный папки "В процессе") и добавляет остаток пути исходного элемента вычисления, который идет после папки "В процессе"

Пример: "/ЖК Витро Парк/02_ПД/Согласовано/АР-09.24/ИЗМ-1"


Пример аналогичен примеру выше:

"/ЖК Витро Парк/02_ПД/В процессе/АР-09.24/ИЗМ-1/Test 014.pdf"

находит папку с именем "В процессе" в структуре текущего элемента вычисления, поднимается на 2 уровня выше (путь относительно папки "В процессе") и добавляем остаток пути исходного элемента вычисления, который идет после папки "В процессе"

Результат: "/ЖК Витро Парк/03_РД/Входящие/АР-09.24/ИЗМ-1"

Replace(str, oldValue, newValue)Заменяет в строке str, все вхождения строки oldValue на строку из newValue

str type: строка

value type: строка

newValue type: строка

строка

Replace('&status=3', '&', '%26')

заменит символ &, во входной строке, на его код, для использования в url адресах, например

Shrink(str, startPartLength, endPartLengthseparator)Сокращает строку str, оставляет из строки указанное количество символов в начале startPartLength и в конце endPartLength, между вставляет указанный разделитель separator

str type: строка

startPartLengthtype: число

endPartLengthtype: число

separator type: строка

строка

Shrink(This('Название'), 5, 3, '-')

сократит входную строку

Пример: "ЖК Изумрудное -> ЖК Из-ное"

Split(str, separator)Возвращает список подстрок, разбивая входную строку str строкой-разделителем separator

str type: строка

separator type: строка

список<строка>

 Split('Архитектор, Главный инженер проекта, Инженер', ', ')

[
"Архитектор",
"Главный инженер проекта",
"Инженер"
]

Str([value])Функция выполняет приведение  значения в [value] к строке

value type: объект

строка

Str(Parent('Трудозатраты этап 1'))

Значение атрибута 'Трудозатраты этап 1' (с типом 'Целое число') в СХД текущего элемента в виде строки

Substring(str, [startIndex], [lengthSubstring])Возвращает подстроку из исходной строки str, начиная с позиции [startIndex], если указано или от начала строки, если параметр отсутствует и длиной [lengthSubstring], если указано или до конца исходной строки, если параметр отсутствует

str type: строка

startIndex type: число
default: 0

substrLength type: число
default: 0

строка

Substring('Анкор-МПРТ.03'0, 5)


Substring('Анкор-МПРТ.03', 6, 4

Вернет строку 'Анкор'


Вернет строку 'МПРТ'

Translit(str)*

Функция выполняет транслитерацию строки str (заменяет символы кириллицы на символы/комбинацию символов латинского алфавита). Цифры и пробелы попадают в выходную строку, как есть. Все другие символы заменяются на знак нижнего подчеркивания "_". Таблицу соответствия см. внизу статьи

str type: строка

строка

Translit('В12345/555Д')


Translit('Плита перекрытия')

строка "V12345_555D"


строка "Plita perekrytiia"

TrimEnd(str, subStr)Функция обрезает строку str с конца, начиная с указанной подстроки subStr и возвращает полученный результат. Можно указать несколько вариантов подстрок в subStr, разделив их символом #

str type: строка

subStr  type: строка

строка

TrimEnd('тест_РД_ver01','_ver#_rev')


TrimEnd(This('Название'), FileExt())


вернет строку "тест_РД"


убирает расширение у текущего элемента

value1 + value2 + ... + valueN Возвращает результат конкатенации N строк

value1,value2,...,valueN  type: строка 

строкаField(Parent('Проект'), 'Шифр') + '-' + Field(Parent(), 'Марка') возвращает разделенные дефисом значение атрибута "Шифр" у первого родительского элемента с типом элемента "Проект", и значение атрибута "Шифр" родительского элемента
Структура хранения данных

Copy(path, [site], [list], [referenceGuid])

Копирует текущий элемент вычисления в другое размещение по пути path (см. функцию Path). Параметр [site] - пространство, в которое надо скопировать элемент, если не указано, то копирование будет выполняться в рамках текущего пространства. [list] - проектная библиотека, куда копируется элемент, если параметр не указан, то копирование будет выполняться в рамках текущей библиотеки. Например, если указан параметр [site] и не указан параметр [list], то копирование выполняется в другое пространство, но в библиотеку с тем же именем, как у текущего элемента вычисления. [referenceGuid] - guid связи, которая будет создана между исходным элементов и его копией.

path type: строка

site type: элемент

list type: строка

referenceGuid  type: guid/строка

элемент

Copy(Path(Parent('В процессе'), '../Согласовано', true), Lookup('Пространства.Выпуск'), 'Файлы', 'a8bcd156-ffe3-4a96-9fea-d5ba9a557006')

копирует текущий элемент вычисления в библиотеку "Файлы" пространства с именем "Выпуск" по пути (см. описание функции Path) и устанавливает связь с типом "Связь с исходным документом" между исходным элементом и его новой копией

Field([context], fieldName, [checkParent], [includeCurrent],
[expandGroup]
)

Коды специальных свойств элемента, которые не относятся к атрибутам, но также могут использовать в вычислениях:
"id" - элемент
"site" - guid пространства
"list" - guid списка
"parentid" - guid родительского элемента
"contenttype" - guid типа элемента
"insertuser"/"author" - кто "Создал"
"insertdate"/"created" - дата создания
"updateuser"/"editor" - кто "Изменил"
"updatedate"/"modified" - дата изменения
"deleteuser" - кто удалил
"deletedate" - дата удаления

Возвращает значение атрибута fieldName из [context], текущего элемента вычисления или проектной структуры. Флаг [checkParent] определяет надо ли искать атрибут fieldName по всей проектной структуре. Флаг [includeCurrent] используется только если [checkParent] выставлен в true. Определяет надо ли учитывать элемент из [context], или текущий элемента вычисления при поиске атрибута fieldName в проектной структуре. Флаг[expandGroup] используется для раскрытия подразделений и функциональных групп из списка "Пользователи" (вместо группы в атрибуте fieldName будут возвращены участники этой группы).
Примечание: Если в отображаемом названии атрибута используется символ точки ".", то в формулах надо указывать системное имя (internal_name) атрибута, т.к. точка используется в качестве разделителя, при получении значений из лукапов (ссылка на элемент списка).

context type: элемент
default: текущий элемент вычисления

fieldName type: строка

checkParent: type: bool

includeCurrent: type: bool

expandGroup type: bool

значение атрибута

Field(Parent('В процессе'), 'Название')



Field('Согласующие', true, false, true)





Field(Parent('Проект'), 'Название')

значение атрибута "Название" родительской папки с типом элемента или названием "В процессе"


значение поля "Согласующие" из проектной структуры текущего элемента вычисления, без учета самого элемента и с раскрытием групп пользователей


значение атрибута "Название" родительской папки с типом элемента или названием "Проект"


Lookup(listName.name)Возвращает по значению атрибута "Название" name элемент из справочника listName

listName type: строка

name type: строка

элемент

Lookup('Статусы документов.Размещено')


Lookup('Пользователи.ОТДЕЛ ВЫПУСКА')

элемент с названием "Размещено" из списка "Статусы документов"

элемент из списка "Пользователи" с наименованием "ОТДЕЛ ВЫПУСКА" (Пользователь, Функциональная группа, Роль или Подразделение)

Null()Возвращает значение Null (отсутствие значения). Используется, чтобы сбросить значение определенного атрибута

 

null

Null()


Parent([context], [typeName], [fieldName], [includeCurrent])Возвращает родительский элемент, с типом элемента [typeName] или значение атрибута [fieldName] указанного типа. При этом, если значение типа не указано, то поиск атрибута выполняется по всей проектной структуре снизу-вверх. Флаг [includeCurrent] определяет надо ли учитывать элемент из [context] или текущий элемент вычисления

context type: элемент
default: текущий элемент вычисления

typeName type: строка

fieldName type:строка

includeCurrent type: bool

элемент/значение атрибута 

Parent()


Parent('В процессе')


Parent(Ref('Связь с замечанием'), 'Проект')


Parent('Утверждающие', true)

непосредственный родительский элемент текущего элемента вычисления

родительский элемент с названием или типом элемента "В процессе"

родительский элемента с типом элемента "Проект" для элемента, связанного с текущим замечанием

значение атрибута "Утверждающие"  из проектной структуры. При этом, поиск атрибута будет выполняться с учетом текущего элемента вычисления

This([fieldName], [expandGroup])Возвращает текущий элемент вычисления, если функция вызывается без параметров или значение атрибута [fieldName]. Флаг [expandGroup] используется для раскрытия подразделений и функциональных групп из списка "Пользователи" (вместо группы в атрибуте [fieldName] будут возвращены участники этой группы)

fieldName type: строка

expandGroup type: bool

 

элемент/значение атрибута

This()


This('Утверждающие', false)

текущий элемент вычисления


значение атрибута "Утверждающие" с раскрытием групп и заменой их на участников этих групп. Если в поле указан пользователь, то он попадает в результат, как есть

...


Anchor
Translit_table
Translit_table
*Таблица соответствия букв символов для функции Translit

абвгдеёжзийклмнопрстуфхцчшщъыьэюя
abvgdeezhziiklmnoprstufkhtcchshshch_y_e
ezhziiklmnoprstufkhtcchshshch_y_eiuia
iuia

Синтаксис формул

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

Для вызова функции (без скобок функция не выполняется),

Для группировки выражений (для явного указания приоритета выполнения операций).

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

При создании массивов;

Как маркеры подстановки;

Как часть формируемого JSON-подобного объекта - могут окружать итоговую конструкцию

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

Внутри строк (например, при формировании параметров API или JSON) для обрамления значения параметра

Запятая ,

Разделяет параметры функции/оператора. Лишняя запятая приводит к ошибке.

Кавычки ' '

Для обозначения строк. Для кавычек первого уровня (внешних) следует использовать одинарные кавычки '

Экранирование кавычек \'

Экранирование знаком "слэш" \ непосредственно перед кавычкой.
Используется, если внутри строки необходимо поставить такие же кавычки, которыми эта строка ограничена.

Если строка находится внутри другой строки — экранирование обязательно.
Экранирование НЕ требуется при обычных вызовах функций и если внутри строки использованы двойные кавычки

Точка .

Означает переход к связанному объекту.
Используется для доступа к атрибуту связанного объекта, например: Структура: объект → связанный объект → его свойство

Оператор +

Для объединения строк. Если один из элементов строка, то выполняется конкатенация.

Лямбда-выражение =>

Используется в фильтрах GetLis, структура: переменная => условие