Как импортировать XML в сводный каталог

Сводный каталог собирает данные поставщиков в единую товарную структуру. XML и YML часто встречаются в прайс-листах поставщиков и выгрузках ERP-систем.

Сводный каталог Eofferix собирает товары, торговые предложения, разделы, характеристики, цены, остатки и изображения из разных источников в одну рабочую структуру. XML часто встречается в прайс-листах поставщиков и выгрузках ERP-систем: 1С, SAP ERP, Oracle NetSuite, Microsoft Dynamics 365, Odoo и других. YML - это тоже XML: файл использует XML-синтаксис и структуру фида для товарных предложений.

Исходник можно загрузить с компьютера или настроить регулярное получение по расписанию:

  • по прямой ссылке или ссылке с авторизацией;
  • из email;
  • по FTP, FTPS или SFTP;
  • из облачного хранилища;
  • из 1С/CommerceML, API поставщика или другого поддерживаемого модуля источника;
  • из ZIP-архива, если внутри лежит XML/YML-файл.

После выбора источника сервис анализирует файл и создает XML-снапшот. Снапшот показывает короткую версию исходных данных: уникальные узлы, элементы, атрибуты и примеры значений, а не весь большой файл целиком.

1. Создайте профиль импорта в Сводный каталог

Откройте app.eofferix.com/profiles, нажмите "Новый профиль", укажите название профиля и добавьте короткое описание источника. В названии удобно использовать имя поставщика или канала, например Partner1. Затем выберите загрузку в сводный каталог.

Создание профиля импорта в сводный каталог
Сначала создается профиль импорта, затем в нем настраивается источник данных.

Если XML-файл находится на компьютере, при создании профиля импорта выберите "Загрузить новый файл". После загрузки профиль определит формат, подготовит рабочий XML и откроет настройки импорта в сводный каталог.

Загрузка XML-файла при создании профиля импорта в сводный каталог
XML-файл можно загрузить прямо в профиле импорта.

Если XML должен регулярно приходить по ссылке, из почты, FTP/FTPS/SFTP, облака или 1С, сначала создайте источник в разделе "Источники", а затем выберите его в профиле импорта. Такой источник можно обновлять отдельно от настроек сопоставления.

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

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

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

Затем настройте правила импорта: создавать ли новые товары и предложения, обновлять ли найденные записи, что делать с пустыми значениями, нулевой ценой и нулевым остатком. Эти параметры особенно важны для регулярного XML-фида, потому что они определяют, как новый файл влияет на уже существующий каталог.

Правила создания, обновления и обработки пустых значений при XML-импорте
Правила импорта управляют созданием, обновлением и обработкой пустых значений.

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

Настройки очистки отсутствующих записей после XML-импорта
Очистка применяется к выбранной области каталога после обработки источника.

3. Настройте XML-снапшот

После сохранения профиля откроется XML-снапшот - краткая версия исходного файла, где выполняются настройки итоговой структуры и преобразований.

В XML-снапшоте сначала найдите узел, который повторяется для каждого товара. Это может быть product, offer, item или другой узел из файла поставщика. Визуально определите узел товара, кликните по нему и назначьте ему роль "Товар". Если в XML есть отдельные торговые предложения, для повторяющегося узла предложения назначьте роль "Торговое предложение".

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

Анимация настройки XML-снапшота: выбор узла товара и сопоставление артикула
Сначала XML-узел product отмечается как товар, затем значение sku назначается артикулом товара.

Обычно в XML-импорте сопоставляют такие значения:

  • name - наименование товара;
  • sku, vendorCode или article - артикул;
  • price - цена или закупочная цена;
  • stock или quantity - остаток;
  • category или путь раздела - раздел каталога;
  • image или picture - изображение товара;
  • property, param или похожие узлы - характеристики товара.

Если характеристики приходят как повторяющийся список, например один XML-узел содержит название характеристики, а соседний узел - ее значение, используйте настройку "Характеристики". В ней выбирается повторяющийся узел свойства, путь до названия характеристики и путь до значения. Если характеристика приходит отдельным фиксированным узлом, ее можно сопоставить как отдельное поле или создать новое свойство каталога.

4. Что можно преобразовать при импорте

Сопоставление не обязано переносить значение как есть. Для каждого XML-значения можно настроить последовательные преобразования: очистить текст, удалить лишние пробелы, заменить значения, привести число к нужному формату, округлить цену, посчитать наценку или скидку, использовать значение из соседнего XML-узла, создать новое поле или переменную.

Также можно обрабатывать изображения: сохранить файл в сервисе, конвертировать в JPG, PNG или WebP, изменить размер, обработать несколько ссылок и наложить водяной знак. Поле с изображением сопоставляйте только тогда, когда изображение должно попасть в каталог или пройти такие правила обработки.

Собрать длинное название товара

Например, в XML приходят отдельные значения: название, артикул, материал и страна производства. В настройках поля "Наименование" можно сначала взять исходное название, а затем добавлять только непустые значения: артикул, материал в скобках и страну производства.

Последовательные преобразования для составного названия товара
Правила добавляют к названию только те XML-значения, которые не пустые.

Было

<name>Стол письменный Нордик</name>
<sku>DESK-NORD-01</sku>
<material>массив дуба</material>
<country>Италия</country>

Стало

Стол письменный Нордик DESK-NORD-01 (массив дуба), Италия

Последовательно подготовить цену

Пример последовательных преобразований для поля Цена. Преобразования могут учитывать не только текущее значение, но и использовать для расчетов иные узлы документа: сначала очищаем значение, затем проверяем условия, затем используем другой узел, меняем значение и округляем результат.

Последовательные преобразования цены с учетом соседнего XML-узла
Правила выполняются сверху вниз и могут использовать соседние узлы XML.

Было

<price>12 900</price>
<stock>14</stock>

Стало

14 398

5. Что происходит после запуска

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

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

Если один и тот же товар приходит из разных источников - XML, таблиц, JSON, 1С/CommerceML или другого профиля - он может оставаться одной карточкой товара. Цены и остатки разных источников можно разнести по отдельным группам цен и группам складов.

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