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

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

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

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

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

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

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

+

-

*

/

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

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

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


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

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

counterColumnName: строка - название атрибута

incValue - на какую величину требуется увеличить значение атрибута

числоInc('Раздел','Всего листов',1)

Возвращает значение столбца "Всего листов" у типа элемента "Раздел" увеличенного на 1.

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

MaxВозвращает максимальное значение из заданного списка значений

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

caml - дополниьтельное условие на языке CAML

максимальное значение из спискаMax('№ п/п внутри отдела',Format('<Where><And><Eq><FieldRef Name="VitroProjectNumber1"/><Value Type="Lookup">{0}</Value></Eq><Eq><FieldRef Name="VitroProjectDepartment"/><Value Type="Lookup">{1}</Value></Eq></And></Where>',This('Проект.№ проекта'),This('Подразделение.Название')))

Caml запрос должен быть обрамлен в <Where></Where>, если Caml не указан, то вычисление идет по всем элементам. 

В примере значение вычисляется как:
Max(«№ п/п внутри отдела») + 1
Где Max вычисляется с фильтром по выбранному подразделению и проекту. Вместо {0} и {1} подставляются значения:
This('Проект.№ проекта')
This('Подразделение.Название')

Type="Lookup" - указывает, что фильтрация идет по поля типа лукап.

Внимание! В Caml запросе можно использовать только статические название полей.   

MinВозвращает минимальное значение из заданного списка значений

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

caml - дополниьтельное условие на языке CAML

максимальное значение из спискасм. Max

см. Max

PowВозводит в заданное число степень

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

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

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

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

число

Sqrt(4)

Вернет 2
Дата время


AddDayВозвращает дату, увеличенную на заданное количество дней.

dateField: dateTime (обязательное) - Дата-время

incValue: число (обязательное) - кол-во дней, на которое надо увеличить дату-время.

format: строка (необязательное) - формат, в котором надо вернуть дату-время.

Дата-времяAddDay(This('Created'),1,'dd.MM.yyyy')Возвращает дату создания данного элемента в формате dd.MM.yyyy, увеличенную на один день.
AddMonthВозвращает дату, увеличенную на заданное количество месяцев.

dateField: dateTime (обязательное) - Дата-время

incValue: число (обязательное) - кол-во месяцев, на которое надо увеличить дату-время.

format: строка (необязательное) - формат, в котором надо вернуть дату-время.

Дата-времяAddMonth(Parent('Раздел','Created'),1,'dd.MM.yyyy')Возвращает дату создания первого родительского элемента с типом контента 'Раздел' в формате dd.MM.yyyy, увеличенную на один месяц.
AddYear('dateField',incValue,'format')Возвращает дату, увеличенную на заданное количество лет.

dateField: dateTime (обязательное) - Дата-время

incValue: число (обязательное) - кол-во лет, на которое надо увеличить дату-время.

format: строка (необязательное) - формат, в котором надо вернуть дату-время.

Дата-времяAddYear(Parent('Created'),2,'dd.MM.yyyy')Возвращает дату создания родительского элемента в формате dd.MM.yyyy, увеличенную на 2 года.
DateTimeВозвращает дату-время в заданном формате. Если не задано значение даты-времени, будет возвращено текущее значение. 
dateTime: dateTime (необязательный) - Дата-время
format: строка (необязательный) - Формат даты-времени
DateTimeDateTime(Parent('Время начала'),'dd.MM.yyyy')Вернет значение атрибута "Время начала" родительской папки элемента в указанном формате.
ContainsПроверяет, находится ли заданный объект в списке объектов и возвращает True или False listObject: список (обязательный) - Список объектов
checkObject: объект (обязательный) - искомый объект
boolContains(Parent(Ref('Вложение рабочего процесса'), 'Разрешен запуск процесса согласования'), This('Инициатор'))Вернет True если перечень пользователей указанных в атрибуте 'Разрешен запуск процесса согласования' родительской папки вложения процесса содержит инициатора процесса, и False, если не содержит.
Структура хранения данныхCfgВозвращает значение атрибута "Значение (строка)" типа элемента "Значение конфигурации строка" или атрибута "Значение (флаг)" типа элемента "Значение конфигурации строка" из списка "Конфигурация"path: строка (обязательный) - путь до ключа в виде кода каждой папки и самого элемента в пути до элемента разделенных точкойстрокаCfg('Receiver.IfcConverter.Rabbit.Connection')Вернет значение атрибута "Значение" элемента Connection находящегося в папках Receiver - IfcConverter - Rabbit списка "Конфигурация"
FieldВозвращает значение заданного атрибута у заданного элемента. При отсутствии заданного элемента, значение атрибута будет считано с текущего элемента.element: строка (необязательный) - Название или тип элемента
fieldName: строка (обязательный) - Название атрибута
checkParent: bool (необязательный) - Проверять родительский элемент
includeCurrent: bool (необязательный, используется только при checkParent=True)  - Проверять текущий элемент
Значение поляField(Parent('В процессе'), 'Название')Вернет значение атрибута "Название" родительской папки с типом элемента или названием "В процессе".
LookupВозвращает заданный элемент, заданого списка.listName: строка (обязательный) - Название списка
elementName: строка (обязательный) - Название элемента
Элемент спискаLookup('Статусы документов.Размещено')Вернет элемент с названием "Размещено" списка "Статусы документов"
ParentВернет первый объект или значение заданного поля объекта являющийся родительским по отношению к текущему, если объект удовлетворяет заданным условиям.

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

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

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

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

Элемент или значение заданного поля элемента
  1. Parent()
  2. Parent('В процессе')
  3. Parent(Ref('Связь с замечанием'), 'Проект', 'Ответственный')
  4. Parent('Проект', 'Ответственный.Должность.Название')
  5. Parent('Согласующие', true)
  1. Вернет первый родительский элемент текущего элемента
  2. Вернет первый родительский элемент с названием или типом элемента "В процессе"
  3. Вернет значение поля "Ответственный" первого родительский элемента с типом элемента "Проект" для документа связанного с текущим замечанием.
  4. Вернет название должности указанного в атрибуте "Ответственный" пользователя родительского элемента с названием или типом элемента"Проект"
  5. Вернет значение поля "Согласующие" первого родительского элемента у которого данное поле не пустое, начиная с самого текущего элемента. 
Строковые
FileExtВозвращает расширение файла заданного элемента с атрибутом "Файл". При отсутствии заданного элемента, будет вычислено расширение файла текущего элемента.file: объект (необязательный) - Элемент с атрибутом "Файл"СтрокаFileExt(Ref('Связь с замечанием'))Будет вычислено расширение файла у элемента, к которому оставлено замечание.
FormatВозвращает строку, сформированную по заданному шаблону.

format: строка - Шаблон, по которому надо сформировать заданные значения

value: число (обязательное) - число, которое надо привести к заданному формату

СтрокаFormat('{0:0000}',12)

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

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

ParseDateTimeПреобразует строку с указанием даты и времени в формат 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: строка (обязательный) - Строка в которой целая и дробная часть отделены точкойЧисло с плавающей запятойParseFloat('12.05')Вернет число 12.05
ParseBoolПреобразует строки 'true', 'false', '0' или 0 в булево значениеvalue (обязательный) - строка или числоboolParseBool('true')Вернет True
SubstringВозвращает подстроку указанной длинны от начала исходной строки или от указанного номера символа.

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

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

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


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

  1. Вернет строку 'Анкор'
  2. Вернет строку 'МПРТ'
TranslitФункция заменяет русские буквы на английские. спец. символы (~ " # % & * : < > ? / \ { | }) на символ подчеркивания и возвращает результат*.

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

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

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

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

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

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

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

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

Логические
ifПроверяет результат заданного логического выражения и в зависимости от него возвращает одно из двух значений

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

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

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

Значение


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

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

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

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

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

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

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

Здесь:

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

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

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

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

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

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

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


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

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