Як завантажити каталог з 1С: обмін CommerceML двома файлами

23 хв

Elbuz завантажує каталог з 1С напряму з файлів обміну CommerceML 2: товари, групи, ціни й залишки потрапляють у базовий каталог без ручного перенесення.

Коли це знадобиться:

  • Каталог ведеться в 1С — дерево груп і картки товарів з'являються в Elbuz за один запуск.
  • Ціни й залишки в 1С змінюються щодня — шаблон за розкладом оновлює ті самі картки за Ид.
  • У 1С кілька типів цін — у каталог іде перша ціна пропозиції, тож потрібний тип ставите першим у вивантаженні.
  • Частину карток ви правите в Elbuz — позначки в картці не дають обміну затерти ціну чи опис.

З чого почати: уперше перенести каталог з 1С шаблоном «CommerceML2 (1C)».

Що вміє обмін з 1С

Де це і хто має доступ

Меню
Довідники → Операції → Завантаження даних → шаблон «CommerceML2 (1C)»
Право доступу
вікно «Завантаження» у «Правах груп»
Галочка видалення
окреме право «Прапор: видаляти категорії та товари в базовому каталозі, яких немає в завантажуваному файлі»
Підготувати
import.xml і offers.xml, вивантажені з 1С, або посилання на них
Вікно «Завантаження» зі списком шаблонів імпорту
1Рядок шаблону «CommerceML2 (1C)»
  1. Рядок шаблону «CommerceML2 (1C)» у списку завантаження.

Інші способи завантаження й чим вони відрізняються — в огляді завантаження даних.

Як завантажити обмін: два файли

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

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

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

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

Що оновить один файл

Один файл завантажити теж можна: тоді в наявних картках оновлюється тільки те, що в цьому файлі є.

Що завантажилиЩо оновиться в наявних карткахНові картки
Тільки import.xmlназва, артикул, виробник, описи, категорія; ціна, залишок і статус наявності лишаються як булистворюються з ціною 0 і залишком 0
Тільки offers.xml (у полі «Каталог»)ціна (крім карток із «Фіксована ціна»), залишок, статус наявності й характеристики з пропозиціїне створюються, якщо в пропозиції немає групи, яка вже є в каталозі

Без файлу в полі «Каталог» обмін не запускається, тож offers.xml для оновлення цін кладуть саме в це поле — програма бере за каталог самі пропозиції. З нього вона читає тільки Ид, Артикул, Наименование, Группы, Количество, Цены й характеристики (ЗначенияСвойств, ХарактеристикиТовара).

Що варто знати про обмін одним offers.xml:

  • Назва, артикул, виробник, короткий і повний опис, категорія й прив'язки до категорій лишаються як були. Виняток — картки-варіанти торгових пропозицій: у них назва й артикул беруться з пропозиції, як і за звичайного обміну.
  • Характеристики з пропозиції замінюють увесь список характеристик картки, зокрема ті, що прийшли з import.xml. Картки з «Не оновлювати» чи «Не оновлювати атрибути» зберігають свої.
  • У картках із позначкою «Не оновлювати» ціна, залишок, назва й опис лишаються як були — так само й за обміну самим import.xml.

Як Elbuz упізнає товар з 1С

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

Нова картка створюється тільки тоді, коли товар прив'язаний до групи класифікатора. Товар без групи (або з групою, якої немає ні у файлі, ні в каталозі) обмін пропускає мовчки, без рядка в журналі. Детальніше: товар без категорії.

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

Товари, які вже були в каталозі без Ид з 1С, обмін із товарами файлу не зіставляє: товар з файлу отримає нову картку, а стара лишиться без оновлень. Розвести товари двох шаблонів з однаковим ідентифікатором у CommerceML нічим — детальніше: два шаблони на той самий товар.

Що обмін пише в картку і як уберегти своє

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

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

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

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

Поля пишуться з файлу як є: якого вузла немає, те поле картки лишиться порожнім. Кожен прогін з import.xml переписує в знайдених картках назву, артикул, виробника, категорію, короткий і повний опис; короткий опис з 1С не приходить, тож стає порожнім. Що ще перезапише повторний прогін, — в огляді.

Яка ціна потрапить у каталог, якщо типів цін кілька

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

Вибору типу ціни в шаблоні немає, а валюта не перераховується — число лягає в поле ціни як є. Тому налаштуйте вивантаження в 1С так, щоб потрібний тип стояв у кожній пропозиції першим, або вивантажуйте тільки його. Пропозиція без блоку Цены дає товару ціну 0 (крім карток із «Фіксована ціна»).

Характеристики й варіанти

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

Як уберегти картку від перезапису

Позначки в картці товару, група «Захист під час імпорту»:

  • «Не оновлювати» — обмін лишає ціну, залишок, основну категорію, прив'язки до категорій, назву, описи й характеристики.
  • «Фіксована ціна» — береже тільки ціну; категорія, виробник, артикул і залишок оновлюються з файлу.
  • «Не оновлювати атрибути» — береже тільки характеристики, решта полів оновлюється.

Детальніше про позначки й фото при повторному прогоні: як закріпити своє значення.

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

Як із класифікатора будуються категорії

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

Групи з 1С — звичайні категорії каталогу, не службові: програма створює їх зі значеннями стану й участі у вивантаженні, які база ставить новій категорії за замовчуванням. Але вони прив'язані до 1С за Ид, і кожен обмін повертає їх до стану в 1С:

  • Перейменували чи перенесли групу в дереві Elbuz — наступний обмін поверне назву (мовою каталогу за замовчуванням) і батьківську групу з файлу.
  • Видалили групу в Elbuz — якщо вона ще є в import.xml, наступний обмін створить її знову як нову категорію й перекладе туди її товари.
  • Переклали товари з групи 1С у свою категорію — наступний обмін поверне їм категорію з файлу. Утримати товар у своїй категорії можна позначкою «Не оновлювати».

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

Як оновлювати каталог з 1С регулярно

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

Запуск іде через центр операцій: з'являється повідомлення «Завантаження запущено — стежте в «Операціях»», і журнал прогону видно там. Порядок рядків журналу:

  1. Читання файлів: лічильники «З файлу отримано категорій» (кожні 100 груп), «З файлу отримано товарів» і «З файлу отримано цін товарів» (кожні 1000 позицій).
  2. Підсумки читання: «Усього категорій завантажено», «Всього товарів завантажено», «Всього цін товарів завантажено».
  3. Запис у каталог, потім завершальні кроки — формули, перевірка цілісності, індексування — і рядок «Завантаження даних завершено!».

Якщо файл не дійшов до сервера (завеликий або обірвався зв'язок), обмін не починається, а в журналі з'являється «Файл не вдалося передати на сервер. Можливо, він завеликий або зв’язок обірвався». Як перевірити результат прогону: журнал і «Історія запусків».

На сайт і маркетплейси нові ціни й залишки самі не поїдуть: обмін вивантажень не запускає. Спершу обмін з 1С, потім вивантаження — детальніше: коли завантажене поїде далі.

Що буде з товаром, який зник з обміну

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

З галочкою обмін перед записом нових даних видаляє з базового каталогу всі категорії, яких немає в класифікаторі файлу, і всі товари, яких немає у файлі, — зокрема створені вручну та завантажені з інших джерел. Галочки «Перевірити унікальність записів…», яка звузила б коло, у формі CommerceML немає. Товари й варіанти, що є тільки в offers.xml, вважаються наявними у файлі.

Це видалення, а не вимкнення, кнопки відкату немає. Разом із товаром зникають описи, фото, характеристики, прив'язки; рядки прайсів постачальників втрачають зіставлення, а правила завантаження для видалених категорій видаляються. У журналі цей крок підписано «Видаляємо категорії та товари в базовому каталозі, яких немає у файлі».

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

Порожній файл або файл без класифікатора каталог не вичистить — детальніше: товар зник із джерела. Без права «Прапор: видаляти категорії та товари…» галочка у формі неактивна.

Якщо обмін перервався або наробив дублів

Обмін перервався

Від етапу залежить, що лишилося в каталозі:

  • Обрив під час читання файлів — каталог не змінився: поки обидва файли читаються, у каталог нічого не пишеться. Файл, обрізаний посередині товару чи пропозиції, — з комп'ютера чи за посиланням, — закінчує обмін помилкою «Не вдалося прочитати файл:» з причиною, теж до запису.
  • Обрив під час запису — лишається те, що встигло записатися: спершу видалення (якщо ввімкнено), потім категорії, потім товари, характеристики й фото. Зупинка перевіряється перед видаленням і після запису категорій; далі запис товарів і характеристик іде до кінця. Якщо зупинку натиснуто до цього, фото не скачуються.
Перші два ромби «Зупинку натиснуто?» — єдині місця, де обмін можна перервати до запису товарів: після другого запис товарів і характеристик іде до кінця. Завершальні кроки йдуть тільки тоді, коли зупинку не натискали
ПрочитаноФайл не прочитано(з комп'ютера чи запосиланням)ТакНіТакНіТакНіНіТакЧитання import.xml і offers.xmlу тимчасові таблиці, підсумки вжурналіЗупинку натиснуто?«Не вдалося прочитати файл:»обмін закінчено з помилкою,каталог не змінено«Операція перерванакористувачем!»каталог не зміненоУвімкнено «Видаляти записив базовому каталозі…»?Видалення категорій і товарів,яких немає у файліЗапис категорійЗупинку натиснуто?«Операція перерванакористувачем!»категорії (і видалення, якщоввімкнено) вже записаноЗапис товарів, цін, залишківі характеристикФото товарівЗупинку натиснуто?Формули, перевірка цілісності,індексування«Завантаження данихзавершено!»Завершальні кроки пропущенопідсумок в операціях: «Операціяперервана користувачем!»
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Повторити той самий обмін безпечно: товари й категорії знаходяться за Ид, виробник шукається за назвою, характеристики перезаписуються — задвоєння не буде. Що буває після зупинки і чому не можна запускати два прогони одночасно: якщо прогін обірвався.

Обмін наробив дублів

Дублі з'являються, коли в 1С змінилися Ид товарів: для програми це нові товари, тож вона створює нові картки, а старі лишаються поруч і більше не оновлюються.

Знайдіть їх у сітці базового каталогу за колонками «Джерело: назва» (назва вашого шаблону CommerceML) і «Дата додавання» (день такого обміну). Колонку «ID товару (рядок UUID)» виведіть поруч, щоб звірити Ид з 1С.

Видаляйте старі картки, а не нові: обмін і далі шукатиме товари за новими Ид, і видалені нові картки створить знову. Зі старих спершу заберіть вручну вивірений контент. Масові дії для цього: якщо завантажили не те.

Сценарії

Уперше перенести каталог з 1С

Задача: завести в Elbuz каталог, який уже ведеться в 1С. У формі шаблону «CommerceML2 (1C)» на вкладці «Локальний файл» виберіть import.xml кнопкою «Вибрати файл – Каталог» і offers.xml кнопкою «Вибрати файл - ПакетПропозицій». Галочку «Видаляти записи в базовому каталозі, яких немає в завантаженому файлі» не вмикайте й натисніть «Завантажити».

Що вийде: дерево категорій з класифікатора, картки товарів з Ид у полі UUID, ціною й залишком з offers.xml. Нові виробники додаються в довідник, характеристики стають атрибутами, джерелом нових карток записується назва шаблону. Чого не буде: карток для товарів без групи класифікатора.

Перший обмін зробіть на невеликій вибірці й перевірте кілька карток очима.

Підтягувати ціни й залишки з 1С за розкладом

Задача: щоб ціни й залишки з 1С оновлювалися без ручного запуску. На вкладці «Зовнішнє посилання» вкажіть адреси, за якими 1С викладає файли: «Посилання на файл із товарами (Каталог)» і «Посилання на файл з цінами ( ПакетПропозицій )». У блоці «Повʼязані налаштування» натисніть «Налаштування розкладу» й налаштуйте запуск, а в шапці форми переведіть шаблон у стан «Активний».

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

Що вийде: за розкладом програма сама забирає обидва файли за посиланнями й оновлює картки за Ид. Шаблон у стані «Вимкнений» розклад пропускає. Якщо друге посилання порожнє, обмін піде з самим каталогом: наявні картки збережуть ціни й залишки, нові отримають ціну 0 і залишок 0.

Прибирати з каталогу те, що зняли в 1С

Задача: 1С — єдине джерело асортименту, і в Elbuz не має лишатися нічого зайвого. Увімкніть галочку «Видаляти записи в базовому каталозі, яких немає в завантаженому файлі» (потрібне право на неї) і завжди завантажуйте повний import.xml разом з offers.xml.

Що вийде: перед записом обмін видаляє всі категорії й товари, яких немає у файлі, разом із ручними та завантаженими з інших джерел; відкату немає. Обмежте асортимент файлу — і решта зникне з каталогу (див. що буде з товаром, який зник).

Вести окремі картки вручну, решту брати з 1С

Задача: для частини товарів ціну чи опис ви задаєте в Elbuz, і обмін не має їх затирати. У картці такого товару поставте «Фіксована ціна» (береже ціну) або «Не оновлювати» (береже ціну, залишок, категорії, назву, описи й характеристики).

Що вийде: решта каталогу оновлюється з 1С, а позначені картки лишаються вашими. Залишок картки з «Фіксована ціна» оновлюється з файлу (див. як уберегти картку).

Що робити, коли обмін завантажив не те

Розбір частих проблем
Що ви бачитеЧому такЩо зробити
Приїхав каталог, а нові товари з ціною 0 і залишком 0 Завантажено лише import.xml: ціни й залишки живуть в offers.xml Додайте offers.xml другим файлом і запустіть обмін ще раз (один файл)
У каталозі закупівельна чи оптова ціна замість роздрібної Береться перша ціна пропозиції, тип ціни не враховується Поставте потрібний тип першим у вивантаженні 1С (типи цін)
Товарів у каталозі менше, ніж у файлі Товар без групи класифікатора карткою не заводиться Прив'яжіть товари до груп у 1С (як Elbuz упізнає товар)
Товари, що були в каталозі до обміну, не оновилися, а поруч з'явилися нові У старих картках немає Ид з 1С або в 1С змінилися Ид Знайдіть дублі за «Джерело: назва» й «Дата додавання» (дублі)
«Файл не вдалося передати на сервер. Можливо, він завеликий або зв’язок обірвався» Файл не дійшов до сервера, обмін не почався Повторіть завантаження або дайте файл посиланням (за посиланням)
«Не вдалося прочитати файл:» з причиною Файл обрізаний або зіпсований; каталог не змінено Вивантажте файл з 1С заново (обрив обміну)
У каталозі нові ціни, а на сайті старі Обмін не запускає вивантаження Перевірте, коли востаннє відпрацювало вивантаження (коли поїде далі)

Файли 1С мають бути в коректному кодуванні — зазвичай UTF-8 або Windows-1251, як їх віддає ваша конфігурація.

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

Чи можна оновлювати з 1С тільки ціни й залишки?

Так. Покладіть offers.xml у поле «Каталог»: у наявних картках оновляться ціна, залишок, статус наявності й характеристики, решта полів лишиться (що оновить один файл).

Чи перераховує Elbuz валюту ціни з 1С?

Ні. Валюта з offers.xml читається, але в картку не записується: число лягає в поле ціни як є (типи цін).

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

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

Можна завантажити з 1С лише частину каталогу?

Так, якщо галочку видалення вимкнено: оновляться тільки товари з файлу. З увімкненою галочкою все, чого немає у файлі, буде видалено (товар зник з обміну).

Чи змінює обмін замовлення й документи?

Ні, документів обмін не торкається. Перенесення товарів чи видалення груп на рядки вже завантажених документів не впливає.

Чому після обміну зник опис, який я писав у Elbuz?

Обмін з import.xml переписує назву й описи тим, що прийшло з 1С; короткий опис стає порожнім. Опис уціліє тільки в картці з «Не оновлювати» (як уберегти картку).

Суміжні теми

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