Функции для обработки и форматирования данных
  • 11 Jul 2022
  • 4 минуты
  • Темная тема
    Светлая тема
  • формат pdf

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

  • Темная тема
    Светлая тема
  • формат pdf

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

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


  • ToUpper (строка) - сделать большими буквами:

${Recipient.OnlyStandardFirstName} -> Алексей

${ToUpper (Recipient.OnlyStandardFirstName)} -> АЛЕКСЕЙ

  • ToLower (строка) - сделать маленькими буквами:

${item.AdditionalData.Colour} -> Красный

${ToLower (item.AdditionalData.Colour)} -> красный

  • Capitalize (строка) - делает заглавной первую букву в строке:

${item.Description} -> чёрный широкий пояс

${Capitalize (item.Description)} -> Чёрный широкий пояс

  • CapitalizeAllWords (строка) - делает заглавной первую букву в каждом слове в строке:

${item.Description} -> чёрный широкий пояс

${CapitalizeAllWords (item.Description)} -> Чёрный Широкий Пояс

  • ReplaceIfEmpty (строка1, строка2) - вывести строку 1, если она не пустая, иначе строку 2:

${Recipient.OnlyStandardFirstName} -> "" (строка пустая)

${Recipient.AdditionalData.Nickname} -> CoolGuy93

${ReplaceIfEmpty (Recipient.OnlyStandardFirstName, Recipient.AdditionalData.Nickname)} -> CoolGuy93

  • IsEmpty (строка) - проверяет, является ли строка пустой):

${Recipient.OnlyStandardFirstName} -> Алексей

${IsEmpty (Recipient.OnlyStandardFirstName)} -> false

  • Length (строка) - посчитать количество символов параметра, возвращает целое число:

${Recipient.LastName} -> Петров

${Length (Recipient.LastName)} -> 6

  • Truncate (строка, количество символов) - интеллектуально обрезать строку до указанного количества символов и добавить многоточие в конце. Многоточие входит в количество символов:

${item.Description} -> описание товара

${Truncate (item.Description, 10)} -> описани...

Чтобы убрать фиксированное количество символов с конца строки, используем в дополнение функцию Length. Убирается N символов с конца + три символа заменяется на многоточие. Например, обрезаем последние семь символов:

${item.Description} -> Кольцо с рубином №12345
${Truncate(item.Description, Length(item.Description) - 4)} -> Кольцо с рубином...

  • Substring (строка, индекс начала подстроки, длина подстроки (опционально) ) - получить подстроку с указанного места и указанной длины (либо до конца строки, если третий параметр не указан):

${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} -> BGDK4444

${Substring (Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, 4)} -> BGDK

Чтобы убрать фиксированное количество символов с конца строки, используем в дополнение функцию Length.
Например, обрезать последние четыре символа:

${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} -> ABCDE1234

${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, Length(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) - 4)} -> ABCDE

Вывести только последние четыре символа:
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) - 3)} -> 1234

  • ChooseRandomText (произвольное число строк, но не меньше одной) - выбирает случайным образом строку из списка параметров:

${ChooseRandomText ("text1", "text2", "text3")} -> text2

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

  • FormatDecimal (число, формат) - форматировать число:

${balance} -> 20000.12

${FormatDecimal (balance, 'N0')} -> 20 000

${FormatDecimal (balance, 'N1')} -> 20 000,1

${FormatDecimal (balance, 'N2')} -> 20 000,12

Важно. Функция возвращает число в виде строки. Поэтому при использовании её в паре с другой числовой функцией нужно для каждой указать неотформатированный параметр.
Пример:
${balance} -> 20000.12

${FormatDecimal (balance, 'N0')} -> 20 000

${Forms(balance, "бонус", "бонуса", "бонусов")} -> бонусов

Вместе:

${FormatDecimal(balance, ‘N0’)}${Forms(balance, "бонус", "бонуса", "бонусов")} -> 20 000 бонусов
  • Forms (число, форма1, форма2, форма3) - вывести нужную форму слова в зависимости от числа. Порядок записи форм: как пишется слово после чисел 1, 2 и 5 соответственно:

${Recipient.AdditionalData.Age} -> 30

${Forms (Recipient.AdditionalData.Age, "год", "года", "лет")} -> лет

  • AppendForms (число, форма1, форма2, форма3) - вывести число и нужную форму слова в зависимости от числа через пробел. Порядок записи форм: как пишется слово после чисел 1, 2 и 5 соответственно:

${Recipient.AdditionalData.Age} -> 30

${AppendForms (Recipient.AdditionalData.Age, "год", "года", "лет")} -> 30 лет

  • Floor (число) - получить максимальное целое число, не превосходящее параметр.

${balance} -> 10.9

${Floor (balance)} -> 10

Округлить до ближайшего большего целого

  • Ceiling (число) - получить наименьшее целое, большее или равное параметру. Например, ceiling(10.6) вернет 11.

${balance} -> 10.1

${Ceiling (balance)} -> 11

  • GetRandomNumber (число, число) - возвращает целое число из указанного интервала, первое число включительно:

${GetRandomNumber (1, 10) } вернёт случайное число от 1 по 9

Функции для даты и времени

  • FormatDateTime (дата, формат) - форматировать дату и время:

${CustomerAction.DateTimeMoscow} -> 14.12.2018 10:30:00

${FormatDateTime(CustomerAction.DateTimeMoscow, "d")} -> 14.12.2018

Подробнее в статьях по стандартным и настраиваемым форматам.

  • AddDays (дата, число) - прибавить к дате количество дней, результат - дата на N дней больше (или меньше):

${Formatdatetime(Recipient.BirthDate, "dd/MM") } -> 10.03

${Formatdatetime(AddDays (Recipient.BirthDate, 5), "dd/MM") } -> 15.03

${Formatdatetime(AddDays (Recipient.BirthDate, -5), "dd/MM") } -> 05.03

${Recipient.BirthDate} -> 10.03.1993 0:00:00

${GetDay (Recipient.BirthDate)} -> 10

${Recipient.BirthDate} -> 10.03.1993 0:00:00

${GetMonth (Recipient.BirthDate)} -> 3

${Recipient.BirthDate} -> 10.03.1993 0:00:00

${GetYear (Recipient.BirthDate)} -> 1993

${GetYear (Message.SendingDateTime)}

Функции для коллекций

  • TableRows (Коллекция, число колонок) - преобразовать коллекцию чего-либо в набор строк с ячейками, чтобы по ним было удобно построить HTML-таблицу. Подробнее в статье .

  • Count (коллекция) - получить число элементов в коллекции/списке:

${Count (Order.Purchases)} -> 5 (в заказе пять покупок)

  • коллекция.Take (N) - возвращает первые N элементов коллекции:

FilteredProducts.Novinki.All.Products.Take (3) -> коллекция из максимум трёх товаров

Функции для логических полей (да/нет)

  • If (условие, строка1, строка2) - вывести строку 1, если условие выполняется, иначе строку 2:

${Order.AdditionalData.FreeShipping} -> true

${If (Order.AdditionalData.FreeShipping, "бесплатно", "200 руб.")} -> бесплатно

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

  • ResizeImage (ссылка, ширина, высота) - функция для масштабирования картинок. Можно проверить в тестовых письмах, так как масштабирование происходит при формировании письма:

<img src="${ResizeImage (PictureUrl, 200, 100)}">

Изменение размеров происходит таким образом, что итоговая картинка вписывается в обозначенные границы.

При этом:

  • картинка не обрезается
  • соотношение ширины и высоты не меняется

Функции хеширования

  • MD5(Строка) – хеширование с алгоритмом MD5.
${ MD5(Recipient.Email) }
  • SHA1(Строка) – хеширование с алгоритмом SHA1.
${ SHA1(Recipient.Email) }
  • SHA256(Строка) – хеширование с алгоритмом SHA256.
${ SHA256(Recipient.Email) }
  • SHA512(Строка) – хеширование с алгоритмом SHA512.
${ SHA512(Recipient.Email) }

Функции хеширования могут использоваться для подставления тикетов идентификации или авторизации, которые поддерживает сайт, в емейл-рассылки.

  • toBase64(Строка) – кодирование с алгоритмом Base64.
${ toBase64(Recipient.Email) }

Функции для кода

  • processHtml(аргумент) - отслеживает клики в блоке html.
${ processHtml('<a href="https...">Hi</a>')}

-> Hi

Обратите внимание: код обрамляем одинарными кавычками, чтобы избежать конфликта с двойными кавычками в самом коде, не прибегая к экранированию.

Также можно сохранить нужный код в описание продукта и вывести его с помощью параметра:

${ processHtml(Products.SearchInIdentity("c1").GetByValue("2134").Description)}

Особенности:

  • код в блоке не должен содержать параметры (не путать с выводом всего блока через параметр, как в примере с описанием продукта);
  • можно использовать несколько блоков в одном письме - будет разбивка кликов по каждому блоку;
  • клики выдаются в карточке клиента, utm-метки есть;
  • клики не попадают в отчеты и тепловую карту.