Функции для обработки и форматирования данных
Возможность применения функции к параметру зависит от типа данных параметра. Подробнее о типах в статье.
Функции для строк
ToUpper
Синтаксис: ToUpper(строка)
Преобразует строку в верхний регистр.
Пример: Recipient.OnlyStandardFirstName → Алексей
${ToUpper(Recipient.OnlyStandardFirstName)}→ АЛЕКСЕЙ
ToLower
Синтаксис: ToLower(строка)
Преобразует строку в нижний регистр.
Пример: item.CustomField.Colour → Красный
${ToLower(item.CustomField.Colour)}→ красный
Capitalize
Синтаксис: Capitalize(строка)
Делает заглавной первую букву в строке.
Пример: item.Description → чёрный широкий пояс
${Capitalize(item.Description)}→ Чёрный широкий пояс
Важно
Функция преобразует только первую букву. Остальные буквы не меняются, даже если в середине слова будет заглавный символ.
Регулировать все буквы можно сочетанием функций ToLower (делает все символы строчными) и CapitalizeAllWords (первые символы — заглавные).
Пример: Recipient.OnlyStandardFirstName → мАриЯ
${Capitalize(ToLower(Recipient.OnlyStandardFirstName))}→ Мария
CapitalizeAllWords
Синтаксис: CapitalizeAllWords(строка)
Делает заглавной первую букву в каждом слове в строке.
Пример: item.Description → чёрный широкий пояс
${CapitalizeAllWords(item.Description)}→ Чёрный Широкий Пояс
Важно
Функция преобразует только первую букву. Остальные буквы не меняются, даже если в середине слова будет заглавный символ.
Регулировать все буквы можно сочетанием функций ToLower (делает все символы строчными) и Capitalize (первый символ — заглавный).
Пример: item.Description → фарфоровая КРУЖКА
${CapitalizeAllWords(ToLower(item.Description))}→ Фарфоровая Кружка
ReplaceIfEmpty
Синтаксис: ReplaceIfEmpty(строка1, строка2)
Вывести строку 1, если она не пустая, иначе строку 2.
Пример:
- Данные:
Recipient.OnlyStandardFirstName→ "" (строка пустая)Recipient.CustomField.Nickname→ CoolGuy93
- Параметр и результат:
${ReplaceIfEmpty(Recipient.OnlyStandardFirstName, Recipient.CustomField.Nickname)}→ CoolGuy93
IsEmpty(строка)
Проверяет, является ли строка пустой.
Пример: Recipient.OnlyStandardFirstName → Алексей
${IsEmpty(Recipient.OnlyStandardFirstName)}→ false
Length
Синтаксис: Length(строка)
Считает количество символов параметра и возвращает целое число.
Пример: Recipient.LastName → Петров
${Length(Recipient.LastName)}→ 6
Truncate
Синтаксис: Truncate(строка, количество символов)
Интеллектуально обрезает строку до указанного количества символов и добавляет многоточие в конце. Многоточие входит в количество символов.
Пример: item.Description → описание товара
${Truncate(item.Description, 10)}→ описани...
Совет
Чтобы убрать фиксированное количество символов с конца строки, используйте в дополнение функцию Length.
Убирается N символов с конца + три символа заменяется на многоточие. Например, обрезаем последние семь символов:
Пример: item.Description → Кольцо с рубином №12345
${Truncate(item.Description, Length(item.Description) - 4)}→ Кольцо с рубином...
Substring
Синтаксис: Substring(строка, индекс начала подстроки, длина подстроки (опционально))
Возвращает подстроку с указанного места и указанной длины (либо до конца строки, если третий параметр не указан).
Пример: Recipient.LastReceivedPromoCode.WithTypeUnique.Value → BGDK4444
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, 4)}→ BGDK
Важно
При использовании параметра длины строки, значение преобразуемой строки должно быть не меньше указанной длины, иначе функция упадет с ошибкой:
Пример: Recipient.LastReceivedPromoCode.WithTypeUnique.Value → BGDK4444
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, 9)}→ ошибка
-
Чтобы убрать фиксированное количество символов с конца строки, используйте в дополнение функцию
Length.
Например, обрезать последние четыре символа:-
${Recipient.LastReceivedPromoCode.WithTypeUnique.Value}→ ABCDE1234 -
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, Length(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) - 4)}→ ABCDE
-
-
Вывести только последние четыре символа:
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, Length(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) - 3)}→ 1234
-
Можно использовать для приведения в нужный формат, например, мобильного номера:
-
${Recipient.MobilePhone}→ 79999999999 -
${Substring(Recipient.MobilePhone, 1, 1) & "(" & Substring(Recipient.MobilePhone, 2, 3) & ")" & Substring(Recipient.MobilePhone, 5, 3) & "-" & Substring(Recipient.MobilePhone, 8, 2) & "-" & Substring(Recipient.MobilePhone, 10, 2)}→ +7(999)999-99-99
-
ChooseRandomText
Синтаксис: ChooseRandomText(произвольное число строк, но не меньше одной)
Выбирает случайным образом строку из списка параметров.
Пример:
${ChooseRandomText("text1", "text2", "text3")}→ text2
Функции для чисел
FormatDecimal
Синтаксис: FormatDecimal(число, формат)
Форматирует число:
-
balance→ 20000.12${FormatDecimal(balance, 'N0')}→ 20 000${FormatDecimal(balance, 'N1')}→ 20 000,1${FormatDecimal(balance, 'N2')}→ 20 000,12
Использует математическое округление:
-
balance→ 100.3${FormatDecimal(balance, 'N0')}→ 100
-
balance→ 100.5${FormatDecimal(balance, 'N0')}→ 101
-
balance→ 100.78${FormatDecimal(balance, 'N1')}→ 100,8
Важно
Функция возвращает число в виде строки. Поэтому при использовании её в паре с другой числовой функцией нужно для каждой указать неотформатированный параметр.
Пример:
balance→ 20000.12${FormatDecimal (balance, 'N0')}→ 20 000${Forms(balance, "бонус", "бонуса", "бонусов")}→ бонусов
Вместе:
${FormatDecimal(balance, 'N0')} ${Forms(balance, "бонус", "бонуса", "бонусов")} → 20 000 бонусов
Forms
Синтаксис: Forms(число, форма1, форма2, форма3)
Выводит нужную форму слова в зависимости от числа. Порядок записи форм: как пишется слово после чисел 1, 2 и 5 соответственно.
Пример: Recipient.CustomField.Age → 30
${Forms(Recipient.CustomField.Age, "год", "года", "лет")}→ лет
AppendForms
Синтаксис: AppendForms(число, форма1, форма2, форма3)
Выводит число и нужную форму слова в зависимости от числа через пробел. Порядок записи форм: как пишется слово после чисел 1, 2 и 5 соответственно.
Пример:
- Данные:
${Recipient.CustomField.Age}→ 30 - Параметр:
${AppendForms(Recipient.CustomField.Age, "год", "года", "лет")} - Результат: 30 лет
Floor
Синтаксис: Floor(число)
Округляет число вниз до ближайшего целого.
Пример:
balance→ 10.9${Floor(balance)}→ 10
Ceiling
Синтаксис: Ceiling(число)
Округляет число вверх до ближайшего целого.
Пример:
balance→ 10.1${Ceiling(balance)}→ 11
GetRandomNumber
Синтаксис: GetRandomNumber(число, число)
Возвращает целое число из указанного интервала, первое число включительно.
Пример:
${GetRandomNumber(1, 10)} вернёт случайное число от 1 по 9
Функции для даты и времени
FormatDateTime
Синтаксис: FormatDateTime(дата, формат)
Пример: CustomerAction.DateTimeMoscow → 14.12.2018 10:30:00
${FormatDateTime(CustomerAction.DateTimeMoscow, "d")}→ 14.12.2018
Подробнее в статьях по стандартным и настраиваемым форматам.
ToUnixTimeStamp
Синтаксис: ToUnixTimeStamp(дата)
Конвертирует дату в формат Unix Time Stamp.
Пример: Order.DateTime → 12.03.2024 15:00:00
(На проекте с часовым поясом UTC+3:00)
${ToUnixTimeStamp(Order.DateTime)}→ 1710255600
Можно вычислить количество дней между датами:
-
Данные:
- Recipient.CustomField.Date1 → 07.03.2024 00:00:00
- Recipient.CustomField.Date2 → 12.03.2024 00:00:00
-
Параметр и результат:
${(ToUnixTimeStamp(Recipient.CustomField.Date2)-ToUnixTimeStamp(Recipient.CustomField.Date1)) / 86400}→ 5${(ToUnixTimeStamp(Recipient.CustomField.Date1)-ToUnixTimeStamp(Recipient.CustomField.Date2)) / 86400}→ -5
Можно вычислить количество часов между датами:
-
Данные:
- Recipient.CustomField.Date1 → 12.03.2024 12:00:00
- Recipient.CustomField.Date2 → 12.03.2024 22:00:00
-
Параметр и результат:
${(ToUnixTimeStamp(Recipient.CustomField.Date2)-ToUnixTimeStamp(Recipient.CustomField.Date1)) / 3600}→ 10${(ToUnixTimeStamp(Recipient.CustomField.Date1)-ToUnixTimeStamp(Recipient.CustomField.Date2)) / 3600}→ -10
AddDays
Синтаксис: AddDays(дата, число)
Смещает дату вперед или назад на N дней и/или часов.Работа с часами возможна только для полей типа «Дата и время».
Пример: Message.SendingDateTime → 09.02.2023 15:00:00
${AddDays(Message.SendingDateTime, 7)}→ 16.02.2023 15:00:00${AddDays(Message.SendingDateTime, -7)}→ 02.02.2023 15:00:00${AddDays(Message.SendingDateTime, 1/24)}→ 09.02.2023 16:00:00${AddDays(Message.SendingDateTime, -1/24)}→ 09.02.2023 14:00:00${AddDays(Message.SendingDateTime, 25/24)}→ 10.02.2023 16:00:00
AddHours
Синтаксис: AddHours(дата, число)
Смещает время вперед или назад на N часов.
Пример: Message.SendingDateTime → 15.10.2025 16:00:00
${AddHours(Message.SendingDateTime, 7)}→ 15.10.2025 23:00:00${AddHours(Message.SendingDateTime, -7)}→ 15.10.2025 09:00:00${AddHours(Message.SendingDateTime, 25/60)}→ 15.10.2025 16:25:00${AddHours(Message.SendingDateTime, -25/60)}→ 15.10.2025 15:35:00${AddHours(Message.SendingDateTime, 28.5)}→ 16.10.2025 20:30:00${AddHours(Message.SendingDateTime, 61/60)}→ 15.10.2025 17:01:00
AddHours и AddDays Можно использовать вместе с функцией форматирования:
${Formatdatetime(Recipient.BirthDate, "dd/MM") } → 10.03
${Formatdatetime(AddDays(Recipient.BirthDate, 5), "dd/MM") } → 15.03
${Formatdatetime(AddHours(Recipient.BirthDate, 24), "dd/MM") } → 11.03
GetDay
Синтаксис: GetDay(дата)
Возвращает день из даты в виде числа; можно совершать с ним арифметические операции:
Пример: ${Recipient.BirthDate} → 10.03.1993 0:00:00
${GetDay(Recipient.BirthDate)}→ 10
GetMonth
Синтаксис: GetMonth(дата)
Возвращает месяц из даты в виде числа; можно совершать с ним арифметические операции:
Пример: Recipient.BirthDate → 10.03.1993 0:00:00
${GetMonth(Recipient.BirthDate)}→ 3
GetYear
Синтаксис: GetYear(дата)
Возвращает год из даты в виде числа; можно совершать с ним арифметические операции:
Пример: Recipient.BirthDate → 10.03.1993 0:00:00
${GetYear(Recipient.BirthDate)}→ 1993
Функции для коллекций
TableRows
Синтаксис: TableRows(Коллекция, число колонок)
Преобразует коллекцию чего-либо в набор строк с ячейками, чтобы по ним было удобно построить HTML-таблицу. Подробнее в статье.
Count
Синтаксис: Count(коллекция)
Возвращает число элементов в коллекции/списке.
Пример:
${Count(Order.Purchases)}→ 5 (в заказе пять покупок)
Take
Синтаксис: коллекция.Take(N)
Возвращает первые N элементов коллекции.
FilteredProducts.Novinki.All.Products.Take(3) → коллекция из максимум трёх товаров
Функции для логических полей (да/нет)
If
Синтаксис: If(условие, строка1, строка2)
Выводит строку 1, если условие выполняется, иначе строку 2.
Пример: Order.CustomField.FreeShipping → true
${If(Order.CustomField.FreeShipping, "бесплатно", "200 руб.")}→ бесплатно
Функции для картинок
ResizeImage
Синтаксис: ResizeImage(ссылка, ширина, высота)
Функция для масштабирования картинок. Можно проверить в тестовых письмах, так как масштабирование происходит при формировании письма:
<img src="${ResizeImage(PictureUrl, 200, 100)}">
Изменение размеров происходит таким образом, что итоговая картинка вписывается в обозначенные границы.
При этом:
- картинка не обрезается
- соотношение ширины и высоты не меняется
Доступно только в Email- и WebPush-каналах.
Функции хеширования
- MD5(Строка) – хеширование с алгоритмом MD5.
${MD5(Recipient.Email)}
- SHA1(Строка) – хеширование с алгоритмом SHA1.
${SHA1(Recipient.Email)}
- SHA256(Строка) – хеширование с алгоритмом SHA256.
${SHA256(Recipient.Email)}
- SHA512(Строка) – хеширование с алгоритмом SHA512.
${SHA512(Recipient.Email)}
Если вы хотите зашифровать произвольное значение, то его нужно поместить в кавычки таким образом.
${MD5(“mindbox”)}
Функции хеширования могут использоваться для подставления тикетов идентификации или авторизации, которые поддерживает сайт, в емейл-рассылки.
- toBase64(Строка) – кодирование с алгоритмом Base64.
${toBase64(Recipient.Email)}
Функции для кода
- processHtml(аргумент) — отслеживает клики в блоке html.
${processHtml('<a href="https...">Hi</a>')}
→ Hi
Обратите внимание: код обрамляем одинарными кавычками, чтобы избежать конфликта с двойными кавычками в самом коде, не прибегая к экранированию.
Особенности:
- код в блоке не должен содержать параметры;
- можно использовать несколько блоков в одном письме — будет разбивка кликов по каждому блоку;
- клики выдаются в карточке клиента, utm-метки есть;
- клики не попадают в отчеты и тепловую карту.