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

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

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

  Операторы

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

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

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

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

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

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

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

  • Внести вручную.

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

ФункцияОписание
abs Вычисление модуля числа.
dateadd Добавляет заданное количество дней, месяцев, лет, часов, минут и секунд к указанной дате.

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

Варианты написания и примеры
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.

Варианты написания и примеры

AddWorkDays Функция добавляет N рабочих дней к указанной дате.

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

Примеры:

  • {{=addworkdays('07.03.2016', 1)}} - результат: 09.03.2016 00:00:00, т.к. в настройках сайта 8 марта - выходной.
  • {{=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.

Пример:
{{=if(isWorkDay({=Template:Parameter1}), 'Да', 'Нет')}} - в параметре содержится дата 28.04.2016. Результат - Да, т.к. это рабочий день.

isWorkTime Аналогична функции isWorkDay, но для типов данных Дата/Время.

Синтаксис:
=if(isWorkDay([проверяемая дата со временем], [пользователь]), [сообщение, если дата со временем являются рабочими], [сообщение, если не являются]).

Параметр [пользователь] не обязательный. С его помощью можно указать пользователя, на рабочее время которого нужно ориентироваться. Доступен с версии 19.0.0 модуля bizproc.

Пример:
{{=if(isWorkTime({=Template:Parameter1}), 'Да', 'Нет')}} - в параметре содержится дата со временем 27.04.2016 15:00:00. Результат - Да, т.к. это рабочее время.

toUserDate Функция приводит любое время к времени сотрудника (с учетом его часового пояса).
toUserDate(
   user,
   date
)
Параметры
  • user - пользователь, к чьему времени необходимо привести время, т.е. чей часовой пояс использовать;
  • date - дата и время, относительно которых нужно сделать преобразование. По умолчанию это текущее время сервера.
  • Примеры записей функции:

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

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

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

    Пример:

    {{=touserdate(7)}}
    

    Идентификатор 7 имеет группа Техподдержка. Первый пользователь в этой группе имеет часовой пояс (UTC -02:00). А значит время будет выведено в этом часовом поясе;
GetUserDateOffset Функция возвращает значение смещения часовой зоны пользователя в секундах (относительно серверного времени).
GetUserDateOffset(
   user
)
Параметры:
  • user - пользователь, относительно чьего времени нужно значение.
if Условный оператор.

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

Пример:
=if ({=Variable:Variable1_printable}>0, "да", "нет")

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

intval Возвращает целое число.
Пример:
=intval("234j4hv5jhv43v53jk4vt5hj4") вернет 234.
floatval Возвращает число (с плавающей точкой).
numberformat Форматирует число с разделением групп.
min Возвращает наименьшее число.
max Возвращает наибольшее число.
rand Возвращает случайное число.
round Округляет число.
ceil Округляет дробь в большую сторону.
floor Округляет дробь в меньшую сторону.
substr Возвращает подстроку определенной длины, начиная с указанного символа. Данная функция аналогична существующей substr в php.

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

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

Пример:
{{=substr("0123456789", 3, 4)}} вернет 3456.

Внимание! Если синтаксис выражения будет неправильным, то оно отобразится как текст.
strpos Возвращает позицию первого вхождения подстроки.
strlen Возвращает длину строки.
implode Объединяет множественные значения в строку. Полезна, когда нужно вывести в текст значения множественных переменных нестандартным разделителем (стандартный - просто запятая). Аналог implode в PHP.
Возвращает строку, содержащую строковое представление всех элементов массива в указанном порядке, со значением glue между каждым элементом.
implode(
   glue,
   pieces
) 
Параметры:
  • glue - по умолчанию равен пустой строке;
  • pieces - массив объединяемых строк.
explode Функция разбивает строку с помощью разделителя. Полезна, когда нужно разбить строку и присвоить части как значение множественной переменной. Аналог explode в PHP.
Возвращает массив строк, полученных разбиением строки str с использованием delimiter в качестве разделителя.
explode(
   delimiter,
   str)
Параметры:
  • delimiter - разделитель;
  • str - строка для разделения.
randstring Возвращает случайную строку.
merge Позволяет объединять массивы.

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

Пример:
= merge({=Document:FILES}, {=Variable:file}).

urlencode URL-кодирование строки.
strtolower Преобразует строку в нижний регистр. Функция доступна с версии 21.200.0.
strtoupper Преобразует строку в верхний регистр. Функция доступна с версии 21.200.0.
ucwords Преобразует в верхний регистр первый символ каждого нового слова в строке. Функция доступна с версии 21.200.0.
ucfirst Преобразует первый символ строки в верхний регистр. Функция доступна с версии 21.200.0.
strtotime Преобразует текстовое написание даты на английском языке во внутренний формат даты. Функция доступна с версии 21.300.0.

Примеры написания:

  • {{=strtotime("now")}}
  • {{=strtotime("next day")}}
  • {{=strtotime("+1 week")}}
  • {{=strtotime("next Thursday")}}
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.

Пример: пусть есть переменная Variable1 типа Число с множественным значением: 1, 2, 3, 4, 5, 6.

Тогда результатом выполнения функции {{=firstvalue({=Variable:Variable1})}} будет первое число: 1.

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

Примеры:
Ссылка с форматированием bb-code: {{=getdocumenturl('bb')}}
Полная ссылка с доменом сайта и 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С-Битрикс»
Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Нам жаль это слышать… Но мы постараемся быть лучше!

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

Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас