В чем разница между оператором "не выгружать поле" в блоке "Преобразования" и настройкой в блоке "Условия выгрузки" при выборе "Условие для поля"

Когда использовать условия выгрузки, а когда действие "не загружать поле" в цепочке преобразований.

В Eofferix есть два похожих способа не выводить данные: блок Условия выгрузки и действие не загружать поле в блоке Преобразования. Они могут дать похожий результат, но управляют разными уровнями логики.

В чем разница между оператором "не выгружать поле" в блоке "Преобразования" и настройкой в блоке "Условия выгрузки" при выборе "Условие для поля" — Eofferix
Скриншот интерфейса Eofferix: В чем разница между оператором "не выгружать поле" в блоке "Преобразования" и настройкой в блоке "Условия выгрузки" при выборе "Условие для поля"

Коротко

Условия выгрузки - это отдельная проверка выгрузки. Для них выбирается область: поле или элемент целиком. Также выбирается момент применения: до преобразований или после преобразований.

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

Порядок выполнения

  1. Eofferix читает исходное значение и контекст строки, товара, предложения или раздела.
  2. Если условие выгрузки настроено до преобразований, оно проверяется до запуска цепочки правил. Так можно отсеять поле или элемент по исходным данным.
  3. Затем выполняются преобразования сверху вниз. Внутри этой цепочки действие не загружать поле может сработать на любом шаге и остановить дальнейшую обработку текущего поля.
  4. Если условие выгрузки настроено после преобразований, оно проверяется уже по итоговому значению после цепочки правил. Так можно отсеять поле или элемент по очищенному, пересчитанному или собранному результату.

Что выбрать

ЗадачаЛучше использоватьПочему
Не выгружать поле, если исходная цена пустаяУсловие выгрузки для поля до преобразованийПроверка смотрит на исходное значение и не запускает лишние правила для поля, которое всё равно не нужно.
Не выгружать товар, если нет артикула или цена равна 0Условие выгрузки для элемента целикомНужно убрать всю запись, а не только одно поле. Момент применения выбирается по тому, проверяете вы исходную или уже рассчитанную цену.
Сначала очистить описание от HTML, а потом не выгружать поле, если оно стало пустымУсловие выгрузки для поля после преобразованийПроверка отделена от цепочки правил, но смотрит уже на очищенный результат.
В середине цепочки понять, что поле больше нельзя обрабатывать, и остановить дальнейшие операцииПреобразование "не загружать поле"Это действие можно поставить между другими преобразованиями, а не только до или после всей цепочки.
После пересчета цены убрать весь товар, если итоговая цена слишком маленькаяУсловие выгрузки для элемента целиком после преобразованийРешение относится ко всему элементу, но проверять нужно уже рассчитанное значение.

Область действия

В блоке Условия выгрузки можно выбрать область и момент применения:

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

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

Практическое правило

Если задача звучит как "выгружать или не выгружать поле/элемент", используйте Условия выгрузки и выберите правильный момент: до или после преобразований.

Если задача звучит как "в этой точке цепочки остановить обработку поля", используйте не загружать поле в преобразованиях и поставьте правило в нужное место последовательности.

Пример

Поставщик присылает поле description со значением <p>&nbsp;</p>. В исходном виде поле не пустое, поэтому проверка до преобразований его пропустит. Если сначала выполнить "удалить HTML-теги", а затем "схлопнуть пробелы", значение станет пустым. В такой ситуации можно поставить условие выгрузки после преобразований для поля.

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