Функции для обработки и форматирования данных

Возможность применения функции к параметру зависит от типа данных параметра. Подробнее о типах в статье.

Функции для строк

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-метки есть;
  • клики не попадают в отчеты и тепловую карту.