Интеграция UMI.CMS и 1С через Eofferix

Как настроить полный обмен и обмен изменениями между 1С и UMI.CMS через Eofferix: источники, профили, external_id, торговые предложения, владение каталогом, безопасное удаление и диагностика заказов без номенклатуры.

Эта инструкция описывает рабочую схему связки 1С → Eofferix → UMI.CMS для каталога и штатную схему UMI.CMS → 1С для заказов. Общая установка модуля и базовое подключение описаны в статье «Импорт каталога в UMI.CMS через Eofferix», а здесь собран именно сценарий 1С: полный каталог, обмен изменениями, идентификаторы и диагностика заказов.

Если заказ из UMI.CMS попадает в 1С без товара или 1С пытается создать новую номенклатуру, почти всегда нужно проверять не кнопку запуска импорта, а идентификаторы товара и торгового предложения, которые были загружены на сайт.

Как работает связка

1С отправляет в Eofferix файлы каталога: товары, разделы, торговые предложения, цены, остатки, изображения и свойства. Eofferix собирает, преобразует и отправляет подготовленный результат в модуль на сайте UMI.CMS. Модуль записывает данные в каталог UMI.CMS.

Заказы идут другим путем. Когда покупатель оформляет заказ на сайте, UMI.CMS сама формирует обмен с 1С. Eofferix в этот момент не передает заказ. Поэтому задача Eofferix - заранее загрузить каталог так, чтобы UMI.CMS могла передать в 1С понятные идентификаторы товара и выбранного торгового предложения.

Что Eofferix должен загрузить для заказов

ДанныеГде настраиваетсяЗачем это нужно
Товарный external_idВ полях идентификации товаров и в снапшоте у узла товараПо нему UMI.CMS и 1С понимают, какая номенклатура была заказана.
external_id торгового предложенияВ полях идентификации торговых предложений и в снапшоте внутри роли ТППо нему 1С понимает конкретный вариант: размер, цвет, упаковку или другой вариант товара.
Торговые предложенияВ снапшоте через роль «Торговое предложение»Если предложения не созданы, сайт может показать общий остаток товара, но заказ не будет связан с вариантом 1С.
Цена и остаток предложенияВ полях внутри роли ТППокупатель должен заказать именно тот вариант, у которого есть цена и остаток.
Артикул ТП vendor_codeВ системных полях торгового предложения, если нужен артикулЭто видимый артикул предложения. Он не заменяет external_id, но может использоваться для поиска, если так выбрано в шаблоне.

Главное правило идентификации

Пользователь может выбрать любое поле для поиска товаров и предложений. Если в шаблоне выбран external_id, Eofferix ищет по external_id. Если выбран артикул, Eofferix ищет по артикулу. Сервис не должен сам подменять выбранное поле другим.

Для обмена с 1С обычно выбирают 1С-идентификатор [external_id] для товаров и 1С-идентификатор торгового предложения [external_id] для предложений. Это не единственный технически возможный вариант, но это самый безопасный вариант для заказов.
Поля идентификации UMI.CMS для товаров, предложений и разделов
Скриншот сделан в реальном интерфейсе Eofferix на учебном профиле с тестовыми названиями.

External ID, GUID, ID страницы и Артикул ТП

ПолеЧто это значитИспользовать для заказов 1С
external_idШтатный 1С-идентификатор объекта. Для товара и ТП это разные значения.Да, обычно это основной вариант.
Служебный ключ Eofferix guidВнутренний ключ Eofferix для сличения внутри сервиса.Нет, это не поле обмена заказами UMI.CMS.
ID страницы UMI idВнутренний ID страницы или объекта в конкретной установке UMI.CMS.Нет, кроме сценария обратной загрузки в тот же сайт.
Артикул товара artikulОбычное поле товара в шаблонах данных UMI.CMS.Можно использовать только если бизнес специально сличает по артикулу товара.
Артикул ТП vendor_codeСистемное поле торгового предложения UMI.CMS.Можно использовать для поиска ТП, если это выбрано в шаблоне. Для 1С-заказов external_id все равно нужно проверить отдельно.

Снапшот для полного каталога 1С

В полном каталоге нужно отметить роли: раздел, товар и торговое предложение. Значение с идентификатором товара привяжите к external_id товара. Значение с идентификатором предложения привяжите к external_id торгового предложения. Цены, остатки, размеры, цвета и другие свойства предложения должны быть внутри роли ТП.

Роли товара и торгового предложения в XML-снапшоте 1С
Скриншот сделан в реальном интерфейсе Eofferix на учебном профиле с тестовыми названиями.

Если товары и предложения приходят отдельно

В 1С файлы import.xml и offers.xml могут приходить отдельно. В этом случае предложения нужно связать с товарами по ключу товара. Иногда внешний код предложения выглядит так: product-guid#offer-guid. Тогда из части до # получают ключ товара, а из части после # - ключ предложения.

Такой способ не заменяет роли снапшота. Он только помогает Eofferix понять, к какому товару относится предложение, когда в исходных файлах товары и предложения лежат в разных ветках.

Свойства торговых предложений

Свойства ТП должны записываться в data-object конкретного предложения, обычно в группу trade_offers. Размер, цвет, артикул ТП, цена предложения и остаток предложения не должны попадать в свойства родительского товара, если в снапшоте они находятся внутри роли торгового предложения.

Привязка значения источника к полю UMI.CMS
Скриншот сделан в реальном интерфейсе Eofferix на учебном профиле с тестовыми названиями.

Полный обмен: профиль-владелец каталога

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

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

Настройка полного профиляРекомендуемое значение
ИсточникПолный каталог 1С, где есть все актуальные товары и предложения.
СценарийПолная синхронизация источника или другой полный сценарий, который выбран осознанно.
Привязка элементов к профилюВключена, если профиль является владельцем каталога.
Очистка отсутствующих объектовТолько в рамках текущего источника и с лимитом защиты удаления.
Принудительное удаление пропавших картинокТолько если текущий источник гарантированно содержит полный набор картинок.

Обмен изменениями: отдельный профиль

Обмен изменениями получает только то, что изменилось в 1С: цены, остатки, отдельные свойства, новые картинки или новые варианты. Такой профиль запускают чаще, например каждые 30 минут.

Для обмена изменениями лучше использовать отдельный источник и отдельный профиль. Этот профиль не должен забирать владение каталогом у полного профиля, если полный профиль остается главным источником правды.

Настройка профиля измененийРекомендуемое значение
ИсточникОтдельная точка выгрузки 1С для изменений.
СценарийБережное обновление или другой сценарий без полной очистки каталога.
Привязка элементов к профилюОтключена, если полный профиль должен оставаться владельцем каталога.
Удаление отсутствующих объектовОбычно отключено. Если включены правила по нулевому остатку, они должны касаться только объектов, которые пришли в текущем изменении.
Пустые картинкиНе удалять существующие картинки, если в изменении картинки просто не пришли.

Как завести два источника 1С

  1. Создайте или оставьте источник для полного обмена 1С.
  2. Создайте второй источник для обмена изменениями.
  3. В 1С настройте полную выгрузку в первый источник, а выгрузку изменений - во второй.
  4. Скопируйте профиль полного обмена, чтобы сохранить типы данных, роли и привязки полей.
  5. В копии замените источник на источник изменений.
  6. В профиле изменений отключите настройки, которые делают профиль владельцем каталога или запускают полную очистку.
  7. Проверьте на небольшом изменении: цена, остаток, одно новое свойство или одна новая картинка.

Безопасное удаление

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

Не включайте полную очистку в профиле изменений, если 1С присылает только изменившиеся товары. Иначе сервис может решить, что все остальные товары пропали из источника.

Картинки в полном и частичном обмене

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

Дополнительные настройки поля изображения в UMI.CMS
Скриншот сделан в реальном интерфейсе Eofferix на учебном профиле с тестовыми названиями.

Стоимость и повторные запуски

После первой полной загрузки повторные обмены должны в основном находить существующие товары и предложения. Если объект не изменился, он должен проходить как дешевое действие UMI.CMS · элемент без изменений. Если повторный запуск снова выглядит как создание всего каталога, проверьте поля идентификации, сохраненность external_id и привязку элементов к профилю.

Проверка перед тестовым заказом

  1. Откройте товар в админке UMI.CMS.
  2. Проверьте блок 1С-идентификатор у товара. Там должен быть внешний код 1С, а не текст «не задан».
  3. Откройте блок торговых предложений. Предложения должны быть в списке, а не только общий остаток у товара.
  4. Проверьте у выбранного предложения цену, остаток, артикул ТП и 1С-идентификатор предложения.
  5. Создайте тестовый заказ на сайте с конкретным вариантом товара.
  6. После выгрузки заказа в 1С проверьте, что 1С нашла существующую номенклатуру, а не попыталась создать новую.

Если заказ пришел в 1С без товара

СимптомЧто проверить
В заказе нет номенклатурыУ товара и выбранного ТП не заполнен external_id или 1С не получила этот ключ из UMI.CMS.
1С пытается создать новый товарВ заказ ушел ключ, которого нет в базе 1С, или в UMI.CMS записан не тот идентификатор.
На сайте есть товар, но нет ТППроверьте роль торгового предложения в снапшоте и связь предложения с товаром.
У товара есть общий остаток, но предложения пустыеОстаток был записан в товар, а не в торговые предложения, или ТП были удалены очисткой.
После обмена пропали картинкиПроверьте, не пришел ли источник без картинок и не включено ли принудительное удаление пропавших изображений.
Появились лишние корневые разделыПроверьте корневой раздел UMI для выгрузки и поле идентификации разделов.

Минимальный контрольный набор

  • Один товар с двумя торговыми предложениями.
  • У товара заполнен external_id.
  • У каждого ТП заполнен свой external_id.
  • Цена и остаток лежат на ТП, если сайт продает варианты.
  • Размер и цвет лежат в свойствах ТП, а не в свойствах товара.
  • Изображения не удаляются при частичном обмене без картинок.
  • Полный профиль владеет каталогом, профиль изменений не забирает владение.
  • Тестовый заказ с конкретным ТП находится в 1С как существующая номенклатура.