Функции калькулятора выражений

Урок 49 из 248
Автор: Марина Павлова
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
4 из 5
Просмотров: 162848
Дата изменения: 13.03.2024
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес

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

  Операторы

Доступно использование следующих операторов для вычисления математических и логических выражений:

ОператорОписание
+ Сложение.
- Вычитание.
* Умножение.
/ Деление.
= Равно.
<> Не равно.
< Меньше.
> Больше.
<= Меньше или равно.
>= Больше или равно.
() Определяет порядок выполнения действий.
& Оператор конкатенации, который возвращает строку, представляющую собой соединение левого и правого аргументов.
^ Возведение в степень.
% Вычисление процентов.
true Правда.
false Ложь.
and Логический оператор И.
or Логический оператор ИЛИ.

Пример:
{{=if(or({=Variable:aaa}>2, {=Variable:bbb}<10), "yes", "no")}}
not Отрицание.

  Функции для вычислений

В действиях при проектировании бизнес-процесса есть возможность использовать функции. Их можно добавить двумя способами:

  • Выбрать из списка. Для этого напишите в поле знак = и откроется список:

    Нажмите на рисунок, чтобы увеличить

  • Написать вручную или скопировать из примеров ниже, подставив свои значения.

Список функций с примерами:

ФункцияОписание
abs Вычисление модуля числа.

Пример:
{{=abs(-5)}}
// Результат: число 5
dateadd Добавляет заданное количество дней, месяцев, лет, часов, минут и секунд к указанной дате.

Синтаксис: =dateadd([начальная_дата], [что_добавлять]);

Слова для записи времени: y, year, years, m, month, months, d, day, days, h, hour, hours, i, min, minute, minutes, s, second, seconds. При написании можно использовать верхний или нижний регистр, а также знак минуса для вычитания времени.

Примеры:
// Вычтем 2 дня
{{=dateadd({=Document:DATE_CREATE}, "-2d")}}
// Прибавим 2 дня и 3 минуты
{{=dateadd({=Document:DATE_CREATE}, "2 days 3 minutes")}}
В случае, если необходимое для добавления количество единиц времени содержится в поле, переменной и т.п., то необходимо использовать оператор конкатенации &. Например:
{{=dateAdd({=Document:DATE_CREATE}, {=Variable:WHAT2ADD} & "y 10h")}}

Если требуется вычесть время, то знак минуса тоже добавляется через & перед переменным значением:
{{=dateAdd({=Document:DATE_CREATE}, "-" & {=Variable:WHAT2ADD} & "y 10h")}}
datediff Позволяет вычислить разницу между двумя датами.

Синтаксис:
=datediff([первая дата], [вторая дата], [как выводить разницу]);

Разницу можно выводить в разных единицах, в зависимости от решаемых вами задач.

Пример:

{{=datediff({=Variable:Variable1}, {=Variable:Variable2},'%m month, %d days')}}

Больше примеров работы с функцией в уроке Примеры работы с датами.

date Форматируется вывод даты/времени Лучший вариант для выполнения этой задачи. Использование строковых функций типа substr и strpos не рекомендуется. . Работает аналогично функции Date в PHP.

Синтаксис: {{=date([формат даты], [дата])}}. Дата – не обязательный параметр, по умолчанию используется текущая дата.

Пример:

{{=date('l, j F Y, H:i:s')}}
// Результат: Tuesday, 9 November 2021, 12:06:16
workdateadd Добавляет заданное количество рабочих дней, часов и минут к указанной дате.

Синтаксис: =workdateadd([начальная_дата], [что_добавлять], [пользователь]). Указывать пользователя не обязательно. Параметр нужен для уточнения, на чьё рабочее время нужно ориентироваться. Доступен с версии 19.0.0 модуля bizproc.

Варианты указания времени: d, day, days, h, hour, hours, i, min, minute, minutes. Допустимо написание как в верхнем, так и в нижнем регистре.

Пример:
// Пусть в параметре содержится дата 28.04.2016.
{{=workdateadd({=Template:Parameter1}, "2d", {=Document:ASSIGNED_BY_ID})}}
// Результат – 02.05.2016 09:00:00, т.к. 30.04 и 1.05 – это выходные дни, то они будут пропущены.
// 09:00:00 – начало рабочего дня. С помощью третьего параметра учитывается часовой пояс ответственного за сущность.
Список выходных дней и начало рабочего дня настраивается в Настройках портала
addworkdays Функция добавляет N рабочих дней к указанной дате.

Синтаксис: =addworkdays([дата, к которой будут добавляться дни], [количество добавляемых рабочих дней]).

Примеры:

1. {{=addworkdays('07.03.2016', 1)}}
// результат: 09.03.2016 00:00:00, т.к. в настройках сайта 8 марта – выходной.
2. {{=addworkdays('05.02.2016 16:14:00', 1)}}
// т.к. 05.02.2016 – пятница, то результат: 08.02.2016 16:14:00 – понедельник.

isworkday Функция проверяет, является ли дата рабочим днем по календарю (с версии 21.400.0 учитывает настройки рабочих дней календаря).

Синтаксис:
=if(isworkday([проверяемая дата], [пользователь]), [сообщение, если дата является рабочим днем], [сообщение, если не является]). Указывать пользователя не обязательно. Параметр нужен для уточнения, на чьё рабочее время нужно ориентироваться. Доступен с версии 19.0.0 модуля bizproc.

Пример:

// Пусть в параметре содержится дата 28.04.2016.
{{=if(isworkday({=Template:Parameter1}), 'Да', 'Нет')}}
// Результат – Да, т.к. это рабочий день.
isworktime Аналогична функции isworkday, но для типов данных Дата/Время.

Синтаксис:
=if(isworktime([проверяемая дата со временем], [пользователь]), [сообщение, если дата со временем являются рабочими], [сообщение, если не являются]). Указывать пользователя не обязательно. Параметр нужен для уточнения, на чьё рабочее время нужно ориентироваться. Доступен с версии 19.0.0 модуля bizproc.

Пример:

// Пусть в параметре содержится дата 27.04.2016 15:00:00.
{{=if(isworktime({=Template:Parameter1}), 'Да', 'Нет')}}
// Результат – Да, т.к. это рабочее время.
touserdate Функция приводит серверное время к времени пользователя (в его часовой пояс). Например, если время сервера UTC +03:00, а время пользователя UTC +05:00, то итоговое время, которое вернет функция, будет на 2 часа больше.

Синтаксис: =touserdate([пользователь], [дата и время]). Дата и время, указанные во втором параметре, будут восприниматься в часовом поясе сервера.

Примеры:

 // 1. Добавление пользователя через форму Вставка значения, где "Кем создан" это поле документа
{{=touserdate({{Кем создан}})}}
// 2. Запись пользователя в формате user_ID, которую нужно взять в кавычки
{{=touserdate('user_1')}}
// 3. Пользователь в формате user_ID, дата и время указываются в кавычках
{{=touserdate('user_3', '18.07.2023 16:47:01')}}

Примечание: Функция также может принять в параметре User число. Число определится как идентификатор группы пользователей Речь о группах пользователей, которые создаются в административном разделе коробочных продуктов на странице Настройки > Пользователи > Группы пользователей.

Подробнее в курсе Администратор. Базовый
. Для определения часового пояса будет взят первый сотрудник из этой группы.

Пример:

// Группа Техподдержка имеет идентификатор 7
{{=touserdate(7)}}
// Первый пользователь в этой группе имеет часовой пояс (UTC -02:00). А значит время будет выведено в этом часовом поясе.

getuserdateoffset Функция возвращает значение смещение часовой зоны пользователя относительно серверного времени, в секундах.

Синтаксис: =getuserdateoffset([пользователь])

Пример:

// Пусть время сервера UTC +03:00, а время пользователя (user_1) UTC +05:00. Тогда:
{{=getuserdateoffset('user_1')}}
// вернет 7200 (т.е. разница составляет 2 часа).

if Условный оператор.

Синтаксис:
=if([условие], [результат_в_случае_выполнения_условия], [результат_в_случае_не_выполнения_условия]);

Примеры:
/* простой пример со строками в параметрах */
1. {{=if ({=Variable:Variable1_printable}>0, "да", "нет")}}
/* будьте внимательны, используя функции в параметрах.
Фигурные скобки и символ равно для dateadd здесь не нужны. */
2. {{=if ({=Template:Parameter1}=1, dateadd({=System:Now},"10d"), dateadd({=System:Now},"30d"))}}

При сравнении значений переменных также возможно сравнивать переменные с разным типом данных. Однако сравниваемые переменные должны соответствовать таблице преобразования типов.

intval Возвращает целое число.

Пример:
{{=intval("234.34j4hv5jhv43v53jk4vt5hj4")}}
//вернет 234
floatval Возвращает число (с плавающей точкой).

Пример:
{{=floatval("234.34j4hv5jhv43v53jk4vt5hj4")}}
//вернет 234.34
numberformat Форматирует число с разделением групп.
Синтаксис:=numberformat([число], [количество знаков после запятой], [разделитель дробной части], [разделитель тысяч])

Пример:
{{=numberformat(1300500.5, 2, ',', ' ')}}
//вернет 1 300 500,50
min Возвращает наименьшее число.

Пример:
{{=min(5, 6, 18, 3, 7)}}
//вернет 3
max Возвращает наибольшее число.

Пример:
{{=max(5, 6, 18, 3, 7)}}
//вернет 18
rand Возвращает случайное число.
Синтаксис:=rand([наименьшее значение], [наибольшее значение]). Может быть вызвано без параметров, подробнее в документации по php (ссылка выше).

Пример:
{{=rand(5, 10)}}
//вернет случайным образом число в диапазоне между 5 и 10. К примеру, 5 или 8.
round Округляет число.
Синтаксис:=round([число], [количество десятичных знаков]).

Пример:
{{=round(15.576, 2)}}
//вернет 15.58.
ceil Округляет дробь в большую сторону.

Пример:
{{=ceil(15.57)}}
//вернет 16.
floor Округляет дробь в меньшую сторону.

Пример:
{{=floor(15.57)}}
//вернет 15.
substr Возвращает подстроку определенной длины, начиная с указанного символа. Данная функция аналогична существующей substr в php.

Синтаксис: substr([входная строка], [с какого символа исходной строки начнется возвращаемая статья], [какой длины будет строка])

Имейте ввиду, что строка начинается с символа под номером 0. Например, в строке 'abcdef', в позиции 0 находится символ 'a', в позиции 2 – символ 'c', и т.д.

Пример:

{{=substr("0123456789", 3, 4)}}
// Вернет 3456.

Внимание! Если синтаксис выражения будет неправильным, то оно отобразится как текст.

strpos Возвращает позицию первого вхождения подстроки.

Синтаксис: strpos([cтрока, в которой производится поиск], [подстрока], [с какого символа начинать поиск])

Примеры:
1. {{=strpos('Тестовая строка', 'ст')}}
// Вернет 2.
2. {{=strpos('Тестовая строка', 'ст', 3)}}
// Вернет 9.
strlen Возвращает длину строки.

Пример:
{{=strlen('Тестовая строка')}}
//вернет 15.
implode Объединяет множественные значения в строку. Функция полезна, когда нужно вывести в текст значения множественных переменных нестандартным разделителем. Аналог implode в PHP.
Возвращает строку, содержащую строковое представление всех элементов массива в указанном порядке, с указанным разделителем между каждым элементом.

Синтаксис: =implode([разделитель], [массив значений])

Примеры:

// Пусть переменная Variable1 - множественная и содержит три значения: Один, Два, Три. Тогда:
1. {{=implode(' - ', {=Variable:Variable1})}}
// вернет строку Один - Два - Три.
2. {{=implode('[br]', {=Variable:Variable1})}}
// тег bb-code br перенесёт каждое значение переменной на новую строку
3. {{=implode({=System:Eol}, {=Variable:Variable1})}}
// системное значение конца строки {=System:Eol} сработает там, где не поддерживается тег br (например, в Заданиях)

explode Функция разбивает строку с помощью разделителя. Полезна, когда нужно разбить строку, затем присвоить части как значение множественной переменной. Аналог explode в PHP.
Возвращает массив строк, полученных разбиением строки с использованием указанного разделителя.

Синтаксис: =explode([разделитель], [строка])

Пример:

// {{=explode(' - ', 'Один - Два - Три')}}
// вернет массив из трёх строк: Один, Два, Три.

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

Пример:
{{=randstring(10)}}
// Вернет случайную строку длиной в 10 символов. Например: yWB6pMU4S4
{{=randstring(16)}}
// Вернет случайную строку длиной в 16 символов. Например: zRNTpQ4r4zyoJXt0
merge Позволяет объединять массивы.

Синтаксис:
= merge({=массив_1}, {=массив_2});

Пример:
{{= merge({=Document:FILES}, {=Variable:file})}}
urlencode URL-кодирование строки.

Пример:
{{=urlencode('Data123!@-_ +')}}
// Вернет закодированную строку Data123%21%40-_+%2B
Подробнее о том, как кодируется строка и где применять функцию можно прочитать в документации по PHP.
strtolower Преобразует строку в нижний регистр. Функция доступна с версии 21.200.0.

Пример:
{{=strtolower('Тестовая строка')}}
// Вернет тестовая строка
strtoupper Преобразует строку в верхний регистр. Функция доступна с версии 21.200.0.

Пример:
{{=strtoupper('Тестовая строка')}}
// Вернет ТЕСТОВАЯ СТРОКА
ucwords Преобразует в верхний регистр первый символ каждого нового слова в строке. Функция доступна с версии 21.200.0.

Пример:
{{=ucwords('тестовая строка')}}
// Вернет Тестовая Строка
ucfirst Преобразует первый символ строки в верхний регистр. Функция доступна с версии 21.200.0.

Пример:
{{=ucfirst('тестовая строка')}}
// Вернет Тестовая строка
strtotime Преобразует текстовое написание даты на английском языке во внутренний формат даты. Функция доступна с версии 21.300.0.

Примеры:

// Пусть текущие дата и время 18.07.2023 16:47:01. Тогда:
1. {{=strtotime("now")}}
// Вернёт 18.07.2023 16:47:01
2. {{=strtotime("next day")}}
//Вернёт 19.07.2023 16:47:01
3. {{=strtotime("+1 week")}}
//Вернёт 25.07.2023 16:47:01
4. {{=strtotime("next Thursday")}}
//Вернёт 20.07.2023 00:00:00
locdate Форматирует вывод даты / времени на языке сайта (портала). Функция доступна с версии 21.300.0.

Работает аналогично функции date (date в PHP), но при форматировании учитывает язык.

Синтаксис: {{=locdate([формат даты], [дата])}}. Дата – не обязательный параметр, по умолчанию используется текущая дата.

Пример для сайта на русском языке:

{{=locdate('l, j F Y, H:i:s')}}
Результат: Вторник, 9 Ноября 2021, 12:06:16

shuffle Перемешивает значения множественного поля. Функция доступна с версии 21.500.0.

Пример:

// Пусть есть переменная Variable1 типа Число с множественным значением: 1, 2, 3, 4, 5, 6. Тогда:
{{=shuffle({=Variable:Variable1})}}
// Вернет случайный порядок этих чисел. Например: 1, 4, 6, 5, 3, 2.
firstvalue Возвращает первое значение множественного поля. Функция доступна с версии 21.500.0.

Пример:

// 1. Пусть есть переменная Variable1 типа Число с множественным значением: 1, 2, 3, 4, 5, 6. Тогда:
{{=firstvalue({=Variable:Variable1})}}
// Вернет число: 1.
2. // В качестве параметра функции firstvalue используется функция explode
{{=firstvalue(explode(',' , {{Строка}}))}}
swirl Перемещает первое значение множественного поля в конец. Функция доступна с версии 21.500.0.

Пример:

// Пусть есть переменная Variable1 типа Число с множественным значением: 1, 2, 3, 4, 5, 6. Тогда:
{{=swirl({=Variable:Variable1})}}
// Вернет: 2, 3, 4, 5, 6, 1, то есть число 1 стало последним.
getdocumenturl Возвращает ссылку на текущий документ (для которого запущен бизнес-процесс). Функция доступна с версии 22.200.0.

Синтаксис: {{=getdocumenturl([Форматирование ссылки], [Полная ссылка]}}

  • Форматирование ссылки. Возможные значения:
    • 'bb' – форматирует ссылку, используя bb-code в виде: [url=ссылка на документ]Имя документа[/url];
    • 'html' – форматирует ссылку, используя html в виде:<a href="ссылка на документ" target="_blank">Имя документа</a>. При этом имя документа обрабатывается функцией htmlspecialcharsbx Функция преобразует специальные символы в HTML-сущности. .
  • Полная ссылка. Возможные значения 0/1 или false()/true(). Если установлено 1 или true(), то к ссылке будет добавлен URL сайта (например, https://mysite.ru).

Примеры:

// 1. Ссылка с форматированием bb-code:
{{=getdocumenturl('bb')}}
// 2. Полная ссылка с доменом сайта и html форматированием:
{{=getdocumenturl('html', true())}}
trim Удаляет пробелы из начала и конца строки. Функция доступна с версии 22.300.0.

Синтаксис: {{=trim([строка])}}

Пример:

// Пусть есть переменная Variable1 типа Строка, в которой записано значение с пробелом в начале и в конце  123 .
// Используем функцию trim для записи значения переменной в отчет без пробелов: {{=trim({=Variable:Variable1})}} // В результате в отчет будет записано 123 без пробелов.
settime Устанавливает конкретное время для указанной даты у полей типа Дата и Дата/Время. Функция доступна с версии 22.500.0. Функция имеет 3 параметра: дата, часы, минуты.

Синтаксис: {{=settime([Дата], [Часы], [Минуты])}}

Примеры:

// Пусть есть переменная Variable1 типа Дата, в которой записана дата 13.03.2023.
// Используем функцию settime для установки времени:
1. {{=settime({=Variable:Variable1}, 15, 55)}}
// результат – 13.03.2023 15:55:00
2. {{=settime({=Variable:Variable1}, 21, 79)}}
// результат – 13.03.2023 22:19:00 (т.к. количество минут больше 60, был добавлен час и остаток записан в минуты)



Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»