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

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

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

Тип функцииФункцияОписаниеВходные параметрыВыходные параметрыПримерРезультат вычисления примера
КонфигурацияCfg(key)Возвращает значение элемента из списка "Конфигурация" по ключуkey: значение атрибута "Системное имя" элемента из списка "Конфигурация"Возвращаемое значение соответствует типу  элемента, найденного по ключу (строка, число, флаг, картинка)Cfg('Site.PortalUrl')Вернет значение элемента конфигурации по пути: "Общие настройки" → "Адрес портала" 
Структура хранения данных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('Шифр'))

Проверит заполнение атрибута "Шифр" и, если этот атрибут пустой, то вернет значение атрибута "Статус", а если "Шифр" заполнен, то вернет его значение

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

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

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

bool

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

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

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

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

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


boolThis('Статус.Название') == 'Выполняется' && IsNotNull(This('Ответ'))

Вернет True, если значение атрибута "Статус" текущего  элемента - "Выполняется" и значение атрибута "Ответ" не является пустым и False если какое-то из этих условий не выполнено. 

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

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

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

boolIsEndWith(This('Имя'),'.docx')Вернет 'True' если в значении This('Имя') строка заканчивается на .docx
IsNull(value)Функция возвращает true, если у атрибута нет значения (пустая строка или null), и false, если атрибут содержит значениеvalue (обязательный) - Атрибут или результат вычисления другой формулыboolIsNull(Field(Parent(), 'Ответственный'))Вернет False, если поле "Ответственный" родительской папки текущего элемента заполнено и True, если нет. 
IsNotNull(value)Функция возвращает true, если у атрибута есть значение, и false, если атрибут не содержит значения (пустая строка или null)value (обязательный) - Атрибут или результат вычисления другой формулыboolIsNotNull(Field(Parent(), 'Ответственный'))Вернет True, если поле "Ответственный" родительской папки текущего элемента заполнено и False, если нет. 
Switch(checkKey, key1, value1, key2, value2, .., keyN, valueN)Проверит совпадение заданного значения с  ключом из списка "ключ, значение" и вернет соответствующее этому ключу значение. Как ключ, так и значение могут быть различных типов - строка, число, объект, bool

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

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

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

Здесь:

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

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

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

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

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

  1. объект Lookup('Статус процесса.Входной контроль')
  2. объект Lookup('Статус процесса.Утверждающие')
  3. объект 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

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", "Поле В" и "Поле С" текущего элемента, умноженный на значение атрибута "Множитель" родительского элемента с типом элемента "Комплект" и поделенного на 3
Count(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
Дата время


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], увеличенную на заданное количество месяцев [incStepValue]. Если указан параметр [format], то возвращает дату в виде строки

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

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

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

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

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



AddMonth(3, 'MMMM')

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


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

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 года, в формате год
DateTime(dateTime, format)Возвращает дату-время в заданном формате. Если не задано значение даты-времени, будет возвращено текущее значениеdateTime: dateTime (необязательный) - Дата-время
format: строка (необязательный) - Формат даты-времени
dateTimeDateTime(Field(Parent(), 'Время начала'), 'dd.MM.yyyy')Вернет значение атрибута "Время начала" родительской папки элемента в указанном формате.
Преобразование типов данныхParseDateTime(dateTime)Преобразует строку с указанием даты и времени в формат DateTime. Если  указать только дату без времени, то значение времени будет установлено в 00:00:00. Если указать только время, без даты, то будет установлена текущая датаdateTime: строка (обязательный) - Строка в формате 'dd.mm.yy hh:mm:ss'dateTimeParseDateTime('20.05.2024 10:50')Вернет 20.05.2024 10:50 в формате DateTime
ParseFloat(value)Преобразует строку в число с плавающей запятойvalue: строка (обязательный) - Строка в которой целая и дробная часть отделены точкойЧисло с плавающей запятойParseFloat('12,05')Вернет число 12.05
ParseBool(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(). Но могут возникнуть ситуации, когда нужно привести значение к типу "строка" или "число". Для этого необходимо сделать следующее:


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

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