Условия в преобразованиях: когда правило срабатывает

Как работают условия в правилах преобразования: любое, равно, больше, содержит подстроку, пустое, регулярное выражение и проверка соседних узлов.

Условие в преобразовании отвечает на вопрос: выполнять это правило сейчас или пропустить его и перейти к следующему правилу. Например: если цена больше 100, добавить наценку; если артикул не пустой, добавить префикс; если значение содержит USD, удалить эту подстроку.

Одни и те же проверки могут встречаться в преобразованиях и в условиях выгрузки, но результат разный. Преобразование меняет значение поля. Условие выгрузки решает, попадет ли поле, строка, товар или XML/JSON-элемент в итоговый файл.

Где используется условие

В строке преобразования условие стоит между источником значения и действием. Сначала сервис берет значение из выбранного источника, затем проверяет условие и только после этого выполняет действие.

  • Источник - текущее значение или другой узел, атрибут, колонка либо системное значение.
  • Условие - проверка: любое, равно, больше, содержит подстроку, пустое, регулярное выражение и другие варианты.
  • Значение условия - то, с чем сравнивается источник. Для условий "любое", "пустое" и "не пустое" оно не нужно.
  • Действие - что сделать, если условие выполнено: заменить, удалить пробелы, увеличить на процент, не загружать поле и так далее.

Условие можно строить не только по текущему полю. Например, значение "Наличие" можно менять по остатку из соседнего узла stock, а цену - по валюте или признаку активности товара.

До или после преобразований

Внутри цепочки преобразований правила выполняются сверху вниз. Каждая следующая строка получает результат предыдущей строки. Если нужно сначала очистить цену от пробелов и валюты, а потом проверить число, поставьте очистку выше числового условия.

Справочник условий

В справочнике оставлены только смысловые колонки: название условия, когда его применять и как оно себя ведет. Отдельная колонка с примерами здесь не нужна: практические сценарии приведены ниже.

УсловиеКогда применятьПоведение
любоеПравило должно работать всегда.Срабатывает для любого значения, включая пустое.
равноНужно точное совпадение.Сравнивает значение целиком. Регистр букв учитывается только если включена чувствительность к регистру.
не равноНужно обработать все значения, кроме одного.Срабатывает, когда значение отличается от указанного.
большеНужно проверить число: цену, вес, остаток, количество.Обе стороны сравнения читаются как числа.
меньшеНужно найти значения ниже порога.Работает как числовая проверка.
больше или равноПорог тоже должен считаться подходящим.Срабатывает для значения, которое равно порогу или выше него.
меньше или равноПорог тоже должен считаться подходящим.Срабатывает для значения, которое равно порогу или ниже него.
содержит подстрокуНужно найти фрагмент внутри текста.Срабатывает, если указанный текст найден в любом месте значения.
не содержит подстрокуНужно исключить значения с определенным словом, кодом или фрагментом.Срабатывает, если указанного текста внутри значения нет.
начинается сВажен первый фрагмент значения.Срабатывает, если значение начинается с указанного текста.
заканчивается наВажен последний фрагмент значения.Срабатывает, если значение заканчивается указанным текстом.
пустоеНужно обработать незаполненные поля.Строка из одних пробелов считается пустой.
не пустоеДействие нужно только для заполненных значений.Срабатывает, когда после удаления пробелов по краям что-то остается.
регулярное выражениеНужно проверить значение по шаблону.Срабатывает, если регулярное выражение нашло совпадение.
не регулярное выражениеНужно обработать значения, которые не подходят под шаблон.Срабатывает, если регулярное выражение не нашло совпадение.

Практический пример

Ниже один фрагмент XML-снапшота и два варианта настройки по этим же узлам. В анимации показано, что клик по значению снапшота открывает окно преобразований для выбранного узла.

<workbook>
  <sheet>
    <row>
      <Артикул>37227</Артикул>
      <Название>Кашпо-Лейка "Гардении", кремовый, 13,5x10 см</Название>
      <Единица>шт</Единица>
      <Упаковка>1</Упаковка>
      <Цена>269</Цена>
      <Остаток>3</Остаток>
      <Раздел>Домашний декор / Кашпо-Лейка</Раздел>
    </row>
  </sheet>
</workbook>
Анимация открытия окна преобразований в XML-снапшоте
Клик по значению XML-снапшота открывает настройки значения, где можно добавить правило преобразования.

Вариант 1: подготовить цену

В этом снапшоте цена уже числовая: 269. Поэтому правило может сразу проверять число, а не очищать валюту или пробелы.

  1. Условие больше со значением 100: увеличить цену на 10%.
  2. Условие меньше или равно со значением 100: заменить значение на 100 как минимальную цену.
Окно преобразований цены с условиями больше и меньше или равно
Условия позволяют по-разному обработать цену выше порога и цену ниже минимального значения.
БылоЧто сработалоСтало
269больше 100, увеличить на 10%295.9
80меньше или равно 100, заменить на 100100

Вариант 2: превратить остаток в статус

Узел остатка содержит число. Если получателю нужен текстовый статус, значение можно заменить по условиям.

  1. Сначала правило с условием любое задает базовое значение in_stock.
  2. Если текущее значение меньше или равно 0, оно заменяется на out_of_stock.
Окно преобразований остатка в статус наличия
Первое правило задает значение по умолчанию, второе переопределяет его для нулевого остатка.
Остаток в снапшотеРезультат
3in_stock
0out_of_stock