...
| Тип функции | Функция | Описание | Входные параметры | Выходные параметры | Пример | Результат вычисления примера |
Атрибуты элемента | Author([context]) | Возвращает автора (атрибут "Создал") элемента [context] или текущего элемента вычисления | context type: элемент | элемент из списка "Пользователи" | Author() Field(Author(), 'Почта') | элемент из справочника "Пользователи" автора (атрибут "Создал") элемента, для которого выполняется вычисление адрес почты автора (атрибут "Создал") элемента, для которого выполняется вычисление |
| Id([context]) | Возвращает guid (уникальный идентификатор в системе) элемента [context] или текущего элемента вычисления | context type: элемент | guid | Id() | guid (уникальный идентификатор в системе) элемента, для которого выполняется вычисление Пример: "6938dc08-9410-5083-8131-ecac23e5e3d1" - строковое представление уникального идентификатора в системе | |
Дата\время | AddDay([date], [incStepValue], [format]) | Возвращает дату [date], увеличенную на заданное количество дней [incStepValue]. Если указан параметр [format], то возвращает дату в виде строки | date type: дата-время/строка. incStepValue type: число. 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: дата-время/строка. incStepValue type: число. format type: строка. default: "" | дата-время/строка | AddMonth(Field(Parent('Раздел'),'Created'), 3) AddMonth(3, 'MMMM') | дата создания родительского элемента с типом контента 'Раздел', увеличенная на 3 месяца название месяца через 3 месяца от текущей даты | |
| AddYear([date], [incStepValue], [format]) | Возвращает дату [date], увеличенную на заданное количество месяцев [incStepValue]. Если указан параметр [format], то возвращает дату в виде строки | date type: дата-время/строка. incStepValue type: число. format type: строка. default: "" | дата-время/строка | AddYear(Field(Parent(), 'Created'), 2, 'yyyy') | дата создания родительской папки, увеличенная на 2 года, в формате год | |
| Date([date], [format]) | Возвращает дату-время [date] в заданном формате [format], но без учета времени. Если не задано значение даты-времени, будет возвращено текущее значение | date type: дата-время/строка. formattype: строка. default: "" | дата-время/строка | Date() | значение в формате дата-время (UTC), но без учета значения времени (часы/минуты/секунды) текущих суток. Пример: "2025-01-31T00:00:00Z" - строковое представление типа дата-время (только дата) | |
| DateTime([date], [format]) | Возвращает дату-время [date] в заданном формате [format]. Если не задано значение даты-времени, будет возвращено текущее значение | date type: дата-время/строка. formattype: строка. | дата-время/строка | DateTime(Field(Parent(), 'Время начала'), 'dd.MM.yyyy') | значение атрибута "Время начала" родительской папки элемента в указанном формате | |
| Time([date], [format]) | Возвращает дату-время [date] в заданном формате [format], но без учета даты. Если не задано значение даты-времени, будет возвращено текущее значение | date type: дата-время/строка. 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: 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
| bool | This('Статус.Название') == 'Выполняется' && IsNotNull(This('Ответ')) | Вернет True, если значение атрибута "Статус" текущего элемента - "Выполняется" и значение атрибута "Ответ" не является пустым и False если какое-то из этих условий не выполнено. | |
| IsEndWith(str, subStr) | Проверяет, заканчивается ли указанная строка str заданной подстрокой subStr и возвращает true/false | str type: строка subStr type: строка | bool | IsEndWith(This('Название'),'.docx') | true, если в This('Название') возвращаемая строка заканчивается на .docx | |
| IsNull([value]) | Функция возвращает true, если атрибут [value] - null, пустая строка или пустая коллекция (список) элементов, и false, если [value] содержит значение | value type: объект | bool | IsNull(Field(Parent(), 'Ответственный')) | true, если атрибут "Ответственный" родительской папки текущего элемента не заполнен или отсутствует и false, в противном случае | |
| IsNotNull(value) | Функция возвращает true, если атрибут [value]содержит значение, и false, если [value] - null, пустая строка или пустая коллекция (список) элементов | value type: объект | bool | IsNotNull(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('Статус процесса.Утверждающие') - третья пара "ключ, значение" В зависимости от статуса документа вернет одно из возможных значение:
| |
| Математические | математические операторы: + - * / | Возвращает результат выполнения соответствующей математической функции | 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/False | value 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 | |
| Работа со списками | Contains(listObject, checkObject) | Проверяет, находится ли заданный объект в списке объектов и возвращает True или False | listObject: список (обязательный) - Список объектов checkObject: объект (обязательный) - искомый объект | bool | Contains(Field(Parent(Ref('Вложение рабочего процесса')), 'Разрешен запуск процесса согласования')), This('Инициатор')) | Вернет True если перечень пользователей указанных в атрибуте 'Разрешен запуск процесса согласования' родительской папки вложения процесса содержит инициатора процесса, и False, если не содержит. |
| Связи | Ref([context], referenceType) | Возвращает элемент из атрибута "Назначение" первой связи с типом referenceType для элемента [context] или текущего элемента вычисления | context type: элемент referenceType: type: строка | элемент | Ref('Связь с замечанием') | связанный элемент по связи с типом 'Связь с замечанием' для текущего элемента вычисления (замечания) |
| Refs([context], referenceType) | Возвращает элемент из атрибута "Назначение" для каждой связи с типом referenceType для элемента [context] или текущего элемента вычисления | context type: элемент referenceType: type: строка | список<элемент> | Exists(Refs('Вложение процесса'), 'FileExt() == \'.pdf\'') | существует ли среди вложений текущего процесса, хотя бы одно вложение с расширением 'pdf' | |
| Строковые | FileExt([context]) | Возвращает расширение из атрибута "Название" элемента [context] или текущего элемента вычисления. Если расширения не найдено, то функция вернет пустую строку. | context type: Элемент. | строка | 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: число. | число | Format('{0} {1}.{2}.', Substring(This('Название'), 0, IndexOf(Field('Название'), ' ')), Substring(Field('Название'), IndexOf(Field('Название'), ' ', 0) + 1, 1), Substring(Field('Название'), IndexOf(Field('Название'), ' ', 1) + 1, 1)) | ФИО текущего пользователя в сокращенном варианте (Сидоров А.С.) | |
| Join(separator, values) | Возвращает строку, состоящую из элементов списка значений values, разделенных строкой-разделителем separator | separator type: строка values type: список значений | строка | Join(', ', Select(Parent('Согласующие'), 'Field(\\'Название\\')')) | объединение в одну строку названий значений из поля "Согласующие" (мультилукап) СХД текущего элемент вычисления, разделенные строкой ", " Пример: "Функциональная группа 1, Администраторы домена" | |
| Path([context], [relativePath], [addSubStructure]) | Функция получает путь элемента из [context] или текущего элемента вычисления с учетом относительного пути [relativePath]. Если [context] не равен текущему элементу вычисления и выставлен флаг [addSubStructure], то к итоговому пути прибавляется остаток пути до текущего элемента вычисления (это остаток пути ("хвост"): "путь текущего элемента вычисления" - "путь context") | context type: Элемент. relativePath type: строка addSubStructure type: bool | строка | Path() Path(Parent("В процессе"), "../Согласовано", true) | путь для текущего элемента вычисления Пример: "/ЖК Витро парк/03 РД/АР/lorem.pdfПарк/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: число substrLength type: число | строка | 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(), 'Марка') | Возвращает разделенные дефисом значение атрибута "Шифр" у первого родительского элемента с типом элемента "Проект", и значение атрибута "Шифр" родительского элемента. | |
| Структура хранения данных | 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 (необязательный) - проверять ли сам текущий элемент. | элемент или значение заданного поля элемента |
|
| |
| This([fieldName], [expandGroup]) | Возвращает текущий элемент вычисления, если функция вызывается без параметров или значение атрибута [fieldName]. Флаг [expandGroup] используется для раскрытия подразделений и функциональных групп из списка "Пользователи" (вместо группы в атрибуте [fieldName] будут возвращены участники этой группы) | fieldName type: строка expandGroup type: bool
| элемент/значение атрибута | This() This('Утверждающие', false) | Текущий элемент вычисления Значение атрибута "Утверждающие" с раскрытием групп и заменой их на участников этих групп. Если в поле указан пользователь, то он попадает в результат, как есть |
...