Вивантаження каталогу у формат CommerceML

6 хв

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

Зворотний напрямок — коли дані йдуть з 1С у Elbuz — описаний окремо, у статті про імпорт каталогу з CommerceML. Формат той самий, налаштування різні.

Де це у програмі

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

Меню
Довідники → Вивантаження даних
Створити
кнопка додавання шаблону → тип CommerceML
Налаштувати
картка шаблону, секція «Налаштування вивантаження даних»
Секція «Налаштування вивантаження даних» у формі шаблону CommerceML
1Вивантажувати «Каталог» товарів
2Вивантажувати «Пакет пропозицій»
3Вивантажувати «Пакет пропозицій» окремим файлом
4Посилання на фото товару
  1. Що за товар — назва, артикул, характеристики, цін тут немає.
  2. Ціни та кількість, окремий документ стандарту.
  3. Потрібен тим обробкам 1С, які чекають два файли.
  4. У документ їде адреса картинки, а не сама картинка, і початок адреси задається тут.

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

Два документи: «Каталог» і «Пакет пропозицій»

CommerceML описує товар двома різними документами, і плутанина між ними — головна причина, чому файл «приймається, але нічого не оновлює».

  • Каталог — що це за товар: назва, опис, артикул, штрихкод, категорія, характеристики, фото. Цін тут немає взагалі.
  • Пакет пропозицій — почому й скільки: ціни за типами й кількість. Це, по суті, прайс-лист, який посилається на товари з каталогу за їхніми ідентифікаторами.

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

Обидва документи за замовчуванням лягають в один файл, один за одним усередині кореневого вузла. Прапорець «Вивантажувати "Пакет пропозицій" окремим файлом» розносить їх на два: до імені файлу з цінами додається _offers. Наприклад, з export_1c_commerceml2.xml вийде ще й export_1c_commerceml2_offers.xml. Окремі файли потрібні тим обробкам 1С, які чекають саме два документи.

Документ будується за версією схеми 2.07 у кодуванні UTF-8, з датою формування в корені. Каталог позначається як повний, а не як такий, що містить лише зміни, — тобто 1С щоразу отримує повну картину, а не різницю.

Що потрапляє в товар

У кожному товарі каталогу їдуть: ідентифікатор, артикул, штрихкод, назва, опис і група, до якої товар належить. Далі — два різні набори додаткових даних, і різниця між ними в стандарті жорстка.

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

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

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

Ціни: три типи плюс ваші

Пакет пропозицій починається з довідника типів цін, і лише потім ідуть самі пропозиції. Програма завжди оголошує три типи:

Тип ціниЗвідки береться
Роздрібнаосновна ціна товару
Роздрібна РРЦрекомендована ціна
Ціна собівартість (із прайс-листа)закупівельна ціна від постачальника

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

У самій пропозиції поруч із цінами їде кількість. Ціна пишеться за одиницю, одиниця виміру — штука, коефіцієнт — одиниця; ці три значення фіксовані, у формі їх не змінюють.

Ціна, яка дорівнює нулю, у файл усе одно потрапляє — як нуль. Якщо в 1С не повинні приїжджати товари без ціни, відсікайте їх відбором товарів у шаблоні, а не сподівайтеся, що вивантаження пропустить порожнє значення само. Як відбирати — у статті про шаблони вивантаження.

Фото: у файл їдуть посилання, а не картинки

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

Складається вона з двох частин. Постійний початок ви задаєте в полі «Посилання на фото товару» — туди вписують адресу вашого сховища, наприклад https://site.com/images/. Друга частина — шлях самого файлу, який програма додає сама. У початок можна підставляти макроси у фігурних дужках, так само як у решті шаблонів вивантаження.

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

Ім'я файлу, доставка й розклад

Без свого імені файл називається export_1c_commerceml2.xml. Своє задають у картці шаблону, і в ньому працюють підстановки дати: {DATE} — день, {DATETIME} — день і час, {TIME} — тільки час. Це зручно, коли треба зберігати історію вивантажень, а не перезаписувати один файл.

Дві дрібниці, які програма робить мовчки. Скісна риска в імені замінюється на крапку — підтеками файли не розкладаються. Розширення .php та його різновиди примусово міняються на .xml, щоб на чужому сервері файл не спробували виконати.

Куди їде готовий файл — на FTP, поштою, посиланням — і як поставити розклад, описано в загальній статті про вивантаження товарів: у CommerceML тут нічого свого немає. Там же кнопка пробного прогону, якою варто скористатися перед першим справжнім вивантаженням: вона зробить той самий файл із позначкою test_ в імені, і його можна відкрити й подивитися очима.

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

Чого це вивантаження не робить

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

Розбір частих проблем

Що ви бачитеЧому такЩо зробити
1С прийняла файл, але цін немаєвимкнений прапорець «Вивантажувати "Пакет пропозицій"» — у файлі лише каталогувімкніть його в налаштуваннях шаблону
Обробка 1С просить два файли, а приїхав одиндокументи складені в один файлувімкніть «Вивантажувати "Пакет пропозицій" окремим файлом»
Немає характеристиквимкнений прапорець «Вивантажувати атрибути товарів»увімкніть його
Фото не відкриваються на приймальній стороніу полі «Посилання на фото товару» не заданий початок адреси або він веде не тудивідкрийте будь-яке посилання з файлу у браузері й перевірте, чи віддається картинка
Товари приїхали з нульовою ціноюціна в каталозі не заповнена, а вивантаження пише нуль як євідсікайте такі товари відбором у шаблоні
Ціни приїхали не в тій валютівалюта береться одна — основна валюта магазинуперевірте, яка валюта в магазині основна
Файл вивантажився з іменем, що починається на test_це був пробний прогінтак і має бути; для справжнього файлу запустіть звичайне вивантаження

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

Яку версію CommerceML формує програма?

Схему версії 2.07, у кодуванні UTF-8. Це та сама редакція стандарту, з якою працюють штатні обробки обміну в 1С, тож окремо нічого доналаштовувати не потрібно.

Один файл чи два — як правильно?

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

Чи можна оновлювати тільки ціни, не чіпаючи номенклатуру?

Так. Зніміть прапорець «Вивантажувати "Каталог" товарів» і лишіть тільки пакет пропозицій. У файлі будуть самі ціни й кількість, а товари в них упізнаються за ідентифікаторами, які вже приїхали разом з каталогом раніше.

Чому фото не вклалися у файл?

Так і має бути: у документ пишеться посилання на картинку, а не сама картинка. Ваша справа — задати початок адреси в полі «Посилання на фото товару» й переконатися, що за цією адресою фото справді віддається.

Звідки береться кількість у пропозиції?

З залишку товару в каталозі. Це одне число на товар — розрізу за складами стандарт у цьому місці не передбачає.

А як вивантажити дані з самої 1С, щоб завантажити їх у Elbuz?

Це зворотна задача, і робиться вона засобами 1С: штатними обробками «Вивантаження даних у форматі CommerceML» або «Обмін з WEB-сайтом», які входять до стандартних конфігурацій. Що робити з отриманими файлами далі — у статті про імпорт каталогу з CommerceML.

Суміжні теми

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