Імпорт каталогу з CommerceML (1С)

10 хв

CommerceML 2 — стандартний формат вивантаження, у якому 1С віддає товари й ціни. Якщо ви ведете облік у 1С, каталог можна завантажити в Elbuz напряму з файлів обміну, без ручного перенесення. Ця стаття — докладний розбір: з яких файлів складається обмін, які елементи в які поля картки потрапляють, як зіставляються товари за Ид (GUID) і як приходять ціни та залишки.

Це один зі способів завантаження з огляду завантаження даних. Формат стандартний, тож колонки розмічати не треба — Elbuz упізнає вузли за їхніми назвами.

Два файли: товари й ціни окремо

Головна особливість CommerceML — обмін іде двома файлами, і 1С формує їх окремо:

  • import.xml — сам каталог: товари (назви, артикули, групи, виробник, характеристики, картинки) та класифікатор груп.
  • offers.xml — пакет пропозицій: ціни й залишки по тих самих товарах.

У формі шаблону відповідно два поля для файлів: перше — для товарів (import.xml), друге — для пропозицій (offers.xml). Товари й ціни розведено навмисно: каталог у 1С міняється рідко, а ціни й залишки — часто, тож offers.xml вивантажують окремо й частіше. Обидва файли пов'язані спільним ідентифікатором товару.

Форма завантаження шаблону «CommerceML2 (1C)» з блоком «Джерело даних»
1Поле вибору файлу «Каталог» (import.xml)
2Поле вибору файлу «ПакетПропозицій» (offers.xml)
  1. Поле «Каталог» приймає файл import.xml зі списком товарів.
  2. Поле «ПакетПропозицій» приймає файл offers.xml із цінами та залишками.

Ідентифікатор і зіставлення

Кожен товар у 1С має Ид — глобальний ідентифікатор (GUID). Elbuz зберігає його у системне поле товару «UUID» й зіставляє за ним і товари з import.xml, і ціни з offers.xml, і повторні завантаження. GUID у 1С стабільний, тому дублів не виникає: повторний обмін оновлює наявні картки. Це надійніше за артикул, який у 1С можуть змінити.

Окремий випадок — торгові пропозиції (варіанти товару): у них Ид має вигляд GUID_товару#GUID_варіанту. Elbuz розпізнає цей запис і зв'язує варіант з основним товаром, а не заводить окрему непов'язану картку.

Куди потрапляють значення

З import.xml (вузол «Товар») у картку переносяться:

Вузол CommerceMLПоле картки в Elbuz
ИдUUID (ключ зіставлення)
Артикулартикул товару
Наименование (або реквізит «Полное наименование»)назва товару
Группы → Идкатегорія (за класифікатором груп)
Изготовитель → Наименованиевиробник
Описание / реквізит «ОписаниеВФорматеHTML»опис товару
реквізит «Вес»вага
БазоваяЕдиницаодиниця виміру
ЗначенияСвойств, ХарактеристикиТоварахарактеристики / опції товару
Картинка (кілька)фото

З offers.xml (вузол «Предложение») підтягуються ціна й залишок — вони знаходять свій товар за тим самим Ид:

Вузол CommerceMLПоле картки в Elbuz
Цены → Цена → ЦенаЗаЕдиницуціна товару
Цены → Цена → ИдТипаЦенытип ціни (див. нижче)
Цены → Цена → Валютавалюта ціни
Количествозалишок

Якщо якогось вузла у файлі немає, відповідне поле картки лишиться порожнім — програма не вигадує того, чого немає в обміні.

Вікно «Завантаження» зі списком шаблонів імпорту
1Рядок шаблону «CommerceML2 (1C)»
  1. Рядок шаблону «CommerceML2 (1C)» у списку завантаження.

Ціни й типи цін

Особливість 1С — товар може мати кілька цін різних типів (роздрібна, оптова, закупівельна тощо), і кожна позначена своїм ИдТипаЦены — GUID типу ціни з 1С. У блоці Цены пропозиції може бути кілька Цена. Elbuz бере ціну за одиницю (ЦенаЗаЕдиницу); якщо у вашому 1С кілька типів цін, орієнтуйтесь на потрібний тип за його ідентифікатором. Валюта береться з елемента Валюта.

Характеристики й опції

CommerceML розрізняє два набори: ЗначенияСвойств — властивості з класифікатора (загальні характеристики), і ХарактеристикиТовара — характеристики конкретного товару, на яких у 1С будуються варіанти. Elbuz переносить обидва в атрибути товару; характеристики, за якими розрізняються торгові пропозиції, стають основою варіантів. Характеристики завантажуються разом з рештою даних обміну автоматично — окремо вмикати їх не треба.

Категорії (класифікатор груп)

Дерево категорій Elbuz будує з класифікатора import.xml (вузол «Группы»): кожна група має свій Ид і назву, а вкладеність задається вкладеними групами. Товар прив'язується до групи за її Ид. Так структура розділів з 1С відтворюється у вашому каталозі.

Чому товар іноді не оновлюється

Якщо після повторного обміну товар лишився без змін, причина зазвичай в ознаках самого товару. Позиції з ознакою «лише читання» імпорт навмисно не чіпає. А якщо стоїть «зафіксована ціна», оновляться всі поля, крім ціни: обмін не перезапише те, що ви зафіксували свідомо. Це захист вручну вивіреної картки від затирання автоматичним завантаженням.

НіТакТакНіТакНіimport.xml: товари, групи,характеристикиТовар отримує UUID —той самий «Ид» із 1Сoffers.xml: ціни й залишкиТовар із таким «Ид»уже є в каталозі?Створюється нова карткаУ картки стоїть«лише читання»?Картка не оновлюєтьсязовсімСтоїть«зафіксована ціна»?Оновлюється все, крімціниОновлюються всі поля,разом із ціною
Два файли сходяться за одним ключем, а далі долю картки вирішують дві її ознаки. Жовтий ромб — розвилка

1С добре веде облік, але не заточена під продаж на сайті й маркетплейсах: у ній немає зручного контенту карток, SEO-полів, вивантаження на зовнішні майданчики. Elbuz забирає товари й ціни з 1С до себе й стає «вітринним» шаром: тут ви наповнюєте картки описами й фото, рахуєте ціни продажу за правилами націнок, керуєте наявністю й вивантажуєте асортимент на сайт і маркетплейси. 1С лишається джерелом обліку, а Elbuz — повноцінною системою керування продажем.

Оскільки зіставлення тримається на Ид, зв'язок «1С → Elbuz» стабільний: змінили ціну чи залишок у 1С — після чергового обміну вони оновилися в Elbuz саме в тих товарах, без ручного звіряння. А ваша робота над контентом карток при цьому не затирається: обмін оновлює ціни й наявність, але не чіпає поля, які ви ведете вручну (якщо не ввімкнено їх перезапис).

Оновлення каталогу з 1С

Порядок простий: вивантажуєте з 1С import.xml і offers.xml, завантажуєте їх у шаблон CommerceML і запускаєте. Перший обмін створює товари, наступні оновлюють наявні за Ид. Каталог (import.xml) зазвичай оновлюють рідше, а ціни й залишки (offers.xml) — частіше, окремим завантаженням. Кожен обмін лишає слід у журналі: скільки товарів створено, скільки оновлено, чи були помилки; перші кілька разів варто туди зазирати.

Часті труднощі

Найчастіша ситуація — завантажили лише один файл. Якщо дати тільки import.xml, приїде каталог без цін і залишків (вони в offers.xml); якщо тільки offers.xml — ціни не буде до чого прив'язати. Для повного обміну потрібні обидва файли. Друга дрібниця — кодування: файли 1С мають бути у коректному кодуванні (зазвичай UTF-8 або Windows-1251, як їх віддає ваша конфігурація). І третє — типи цін: якщо в 1С кілька типів цін, переконайтесь, що у файл вивантажено саме потрібний, інакше в каталог приїде не та ціна.

Тримайте стабільними Ид (GUID) товарів у 1С — саме на них тримається зіставлення. Якщо перевантажити каталог зі зміненими Ид, Elbuz прийме товари за нові й наробить дублів. Перший обмін зробіть на невеликій вибірці й перевірте кілька карток очима.

Часті питання

Навіщо два файли — import.xml і offers.xml?

Так влаштований обмін CommerceML: import.xml несе каталог (товари, групи, характеристики), а offers.xml — ціни й залишки. Це дозволяє оновлювати ціни й наявність часто, не перевантажуючи щоразу весь каталог. Для повного завантаження потрібні обидва.

За чим Elbuz зіставляє товари?

За Ид (GUID) товару з 1С — він зберігається у поле UUID картки. За тим самим Ид ціни з offers.xml знаходять свій товар, а повторний обмін оновлює наявні картки без дублів.

У товара кілька цін — яка потрапить у каталог?

У 1С ціни різних типів позначені своїм ИдТипаЦены. Elbuz бере ціну за одиницю з блоку цін; якщо типів кілька, орієнтуйтесь на потрібний за його ідентифікатором і переконайтесь, що саме він у файлі.

Як переносяться варіанти (торгові пропозиції)?

У 1С варіант має Ид виду «GUID товару#GUID варіанту». Elbuz розпізнає цей запис і зв'язує варіант з основним товаром, а характеристики торгових пропозицій стають основою опцій.

Приїхав каталог, а цін немає — чому?

Найімовірніше завантажено лише import.xml без offers.xml. Ціни й залишки живуть у offers.xml; додайте його другим файлом у шаблон.

Чому не завантажились характеристики?

Характеристики завантажуються автоматично разом з рештою даних обміну — окремо їх вмикати не треба. Вони беруться з вузлів ЗначенияСвойств і ХарактеристикиТовара; якщо їх немає у файлі 1С, переносити нічого.

Чи була стаття корисною?