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

Compare with Current View Page History

« Previous Version 69 Next »

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

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

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

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

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



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

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

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

Author()



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

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

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

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

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

 guid

 Id()

guid (уникальный идентификатор в системе) элемента, для которого выполняется вычисление

Пример: "6938dc08-9410-5083-8131-ecac23e5e3d1" - строковое представление уникального идентификатора в системе

Дата\время




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 года, в формате год
Date([date], [format])Возвращает дату-время [date] в заданном формате [format], но без учета времени. Если не задано значение даты-времени, будет возвращено текущее значение

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

КонфигурацияCfg(key)Возвращает значение элемента из списка "Конфигурация" по ключу key (значение атрибута "Системное имя")key: type: строкавозвращаемое значение соответствует типу  элемента, найденного по ключу (строка, число, флаг, картинка)Cfg('Site.PortalUrl')значение элемента конфигурации по пути: "Общие настройки" → "Адрес портала" 
Логические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)Проверяет, заканчивается ли указанная строка str заданной подстрокой subStr и возвращает true/false

str type: строка

subStr  type: строка

boolIsEndWith(This('Название'),'.docx')true, если в This('Название') возвращаемая строка заканчивается на .docx
IsNull([value])Функция возвращает true, если атрибут [value] - null, пустая строка или пустая коллекция (список) элементов, и false, если [value] содержит значениеvalue type: объектboolIsNull(Field(Parent(), 'Ответственный'))true, если атрибут "Ответственный" родительской папки текущего элемента не заполнен или отсутствует и false, в противном случае 
IsNotNull(value)Функция возвращает true, если атрибут [value] содержит значение, и false, если [value] - null, пустая строка или пустая коллекция (список) элементовvalue type: объект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('Статус процесса.Утверждающие')
Математические

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

+

-

*

/

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

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
Организационно-штатная структура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()материал дополняется 
 

Any()материал дополняется 
 
Работа со спискамиContains(listelement)Если list - строка и element - строка, то проверяет, что подстрока element входит в строку list
Если list - список элементов или объектов с типом "ссылка на элемент списка" и element - элемент, объект с типом "ссылка на элемент списка" или guid, то проверяет, что значение в element входит в список list

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

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

boolContains(Field(Ref('Вложение процесса'), 'Разрешен запуск процесса согласования', true, false, true), This('Инициатор'))True, атрибут 'Разрешен запуск процесса согласования' родительской папки вложения процесса содержит инициатора  процесса (непосредственно или через группу/подразделение), и False, если не содержит

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

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

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

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

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

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

referenceTypetype: строка


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

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

referenceTypetype: строка

список<элемент>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

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

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)

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

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


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

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

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()

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

 


 


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

Коды специальных свойств элемента, которые не относятся к атрибутам, но также могут использовать в вычислениях:
"id" - guid элемента
"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 будут возвращены участники этой группы).

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

fieldName type: строка

checkParent: type: bool

includeCurrent: type: bool

expandGroup type: bool

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

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



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

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


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


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

listName: type: строка

name: type: строка

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

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

typeName type: строка

fieldNametype:строка

includeCurrent: type: bool

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

Parent()


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


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


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

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

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

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

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

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

fieldName type: строка

expandGroup type: bool

 

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

This()


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

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


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

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

  • чтобы результат вычисления функции сделать числом нужно в формуле добавить к нему 0: (This('FieldName') + 0)
  • чтобы сделать строкой - прибавить пустой символ: (This('FieldName') + '')


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

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