Не нашли ответы на свои вопросы в наших публикациях? Задайте вопрос в службу техподдержки!
Модуль "Универсальный импорт" предоставляет широкий спектр различных манипуляций с импортируемыми данными. Это добавляет значительную гибкость данному решению. Одним из способов модифицировать поступающие данные - использовать формулы.
Формулы задаются для каждого импортируемого поля индивидуально. Для этого в наборе опций полей присутствует поле "Формула".
Данное поле выполняет команды в формате языка PHP. Входное значение в формуле подставляется вместо сочетания X1. Таким образом, вам нужно во формате PHP задать обработку Х1. Покажем, как это делается, на конкретных примерах.
В приведённом выше с помощью формулы задан префикс. Например, это может быть полезно для XML_ID или заголовка товара. В результате, если на входе будет значение "12345", то в инфоблок запишется значение "prefix_12345". Важно отметить, что текстовые значения необходимо обрамлять в одинарные кавычки.
В следующем примере мы модифицируем формат активности товара на формат, принятый в инфоблоках. Во входном файле статус товара помечается как true/false, а в инфоблок нам нужно сохранять Y/N.
Как видите, в формуле проверяется входное значение Х1. Если значение true, то в инфоблок сохраняем Y. В противном случае - N.
И приведём пример преобразования входного значения с помощью коэффициентов. В формуле ниже видно, что входное значение Х1 умножается на коэффициент 0,5. Подобным образом можно организовать, например, динамическую наценку, умножая Х1 на значение больше единицы.
Еще пример:
преобразовать вес из килограммов в граммы можно следующей формулой, в файле: 0,04 кг, нам нужно в граммах, тогда формула, сперва заменяем запятую на точку, а затем переводим в граммы:
(float)str_replace(',', '.', "X1") * 1000
Дополнительно:
Обратите также внимание на еще один способ изменить данные перед их обработкой - это использовать событие OnBeforeProcessRowInSaveIBData и менять данные в массиве $arInputRow.
Назад в раздел