Бітрікс і інтеграція з 1с

Ви розробили інтернет-магазин на Бітрікс. Під час розробки ви створили всі необхідні якості і заповнили каталог демо-товарами.

Залишилося тільки завантажити реальний каталог з 1С - це означає, що попереду ще багато роботи. Доведеться домогтися, щоб всі потрібні дані вивантажувалися взагалі і вивантажувалися в потрібне місце. Інакше доведеться підганяти проект під структуру даних з 1С.

Питання інтеграції піднімається на кожному більш-менш великому інтернет-магазині. Часто розробникам, не тільки початківцям, важко зрозуміти, як працює механізм обміну. Корисна інформація розкидана по інтернету, буде зручно зібрати її в одному місці.

  • Коротко викласти основні можливості обміну і його алгоритм роботи;
  • Дати посилання на офіційні та інші корисні джерела;
  • Відповісти на часті питання;
  • Прояснити, з чого почати інтеграцію і як її успішно завершити.

Стандартний обмін між 1С-Бітрікс і 1С

У Бітрікс є вбудований функціонал для обміну з 1С, завдяки чому будь-який обмін повинен налаштовуватися в пару кліків.
Однак, для цього 1С повинна бути "чистою" типової конфігурації. На ділі кожна перша 1С "нетипова", тобто модифікована так чи інакше.

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

Що вміє штатний механізм обміну

  • Імпорт каталогу товарів з 1С на сайт;
  • Експорт каталогу товарів з сайту в 1С;
  • Експорт замовлень з сайту в 1С;
  • Імпорт замовлень з 1С на сайт;
  • Імпорт довідників (highload-Інфоблоки) з 1С на сайт.

Алгоритм вивантаження даних на сайт

Ініціатором обміну завжди виступає 1С, з міркувань безпеки - навіть якщо сайт зламають, атакувати 1C буде неможливо, так як сайт не вміє звертатися до 1С і взагалі нічого не знає про неї.

Обмін працює за допомогою послідовних http GET / POST запитів від 1С до сайту, до скрипту /bitrix/admin/1c_exchange.php.

Обмін складається з декількох ключових етапів

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

Процес вивантаження даних з 1С на сайт можна представити у вигляді такої схеми

Бітрікс і інтеграція з 1с

Формат даних для обміну з 1С

1C завантажує на сайт xml файли, і картинки при імпорті товарів.

Якщо включено zip-стиснення в налаштуваннях обміну на стороні сайту (за замовчуванням включено), то 1C завантажує один архів, інакше всі файли окремо.

Інформація в файлах структурована відповідно до стандарту обміну комерційною інформацією CommerceML2.

Інформація про товари передається на сайт в наступних файлах

  • import.xml - товари, групи (розділи Інфоблоки), типи цін, склади, властивості товарів і одиницях виміру;
  • offers.xml - торгові пропозиції (ТП) товарів і їх властивості;
  • prices.xml - ціни ТП;
  • rests.xml - залишки ТП;
  • references.xml - призначені для користувача довідники (HL-Інфоблоки).

Файли import.xml і offers.xml містять описи властивостей, типів цін, і іншу інформацію, яка стосується однаковою мірою до всіх товарів / ТП.

Якщо каталог великий, з метою оптимізації, опису вивантажуються в окремих "заголовних" файлах. Це такі ж файли import.xml і offers.xml, тільки не містять нічого крім описів. В такому випадку заголовки обробляються тільки на самому початку обміну.

Інформація про замовлення передається на сайт в наступних файлах

Куди на сайт завантажуються файли вивантаження

В папку / upload / 1c_catalog /. Перед кожним обміном ця папка очищається. Тобто в цій папці завжди знаходяться файли останнього обміну.

Можна включити "режим налагодження" обміну - відключити перезапис файлів в папці 1c_catalog. Таким чином можна відключити видалення файлів вивантаження після завершення обміну.

Для цього потрібно оголосити константу в файлі dbconn.php:

Тепер замість видалення папка буде перейменовувати, до неї буде додаватися числовий ідентифікатор.

Бітрікс і інтеграція з 1с

Чим більше число у папки, тим новіше ця папка.
Однак, найновіша папка завжди буде без чисел, і тільки з наступним обміном вона буде перейменована.

Важливо пам'ятати, що з включеним режимом налагодження дуже швидко йде витрата місця на диску. Тому після налагодження слід відключити лог і видалити всі зайві папки обміну.

Що потрібно для обміну на стороні сайту

  • редакція Бітрікс "Малий бізнес" або "Бізнес"
  • налаштувати параметри обміну
  • створити користувача і групу "Обмін з 1С" для обміну, налаштувати права
    • дозволити групі виконувати вивантаження товарів / замовлень (в настройках параметрів)
    • дозволити групі доступ на читання папки / bitrix / admin /

Що потрібно для обміну на стороні 1С

Структура каталогу в 1С і на сайті

Що робити якщо структура каталогу в 1С не збігається зі структурою на сайті?

В 1С можна задати які товари і розділи вивантажувати.

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

Так само можна задати умови відбору товару (не всі товари потрібні на сайті) для вивантаження на сайт і властивості (в 1С багато св-в, не всі потрібні на сайті).

Види вивантажень з 1С

Відбувається при вивантаженні даних на сайт в перший раз, або при ручному запуску.

  • Вивантажуються всі товари.
  • Картинки вивантажуються тільки у нових або змінених товарів.

Відбувається часто, між повними, містить тільки зміни за цінами і залишкам.

Повна примусова вивантаження

Теж саме, що і повне вивантаження, тільки вивантажуються картинки абсолютно всіх товарів, в обов'язковому порядку.

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

З чого почати інтеграцію c 1C

Якщо ви робите новий сайт і плануєте інтеграцію з 1С в подальшому, то першим слід встановити бітрікс і зробити тестовий обмін. Ось, що це дасть:

  • Буде створено тип іблока;
  • Буде створено іблок;
  • Будуть створені св-ва і довідники;
  • Будуть створені розділи каталогу;
  • Будуть створені елементи каталогу;
  • Будуть створені торгові пропозиції.

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

Як завершити інтеграцію

Зіставити структури даних на сайті зі структурою в 1С - ось головна мета інтеграції.

Щоб успішно завершити інтеграцію, коли у вас вже є повністю працює проект, з актуальними даними, то потрібно домогтися, щоб вивантаження з 1С проіcходіла:

  • В існуючий інфоблок;
  • В існуючі св-ва;
  • В існуючі розділи Інфоблоки;
  • В існуючі товари і торгові пропозиції;
  • В існуючі типи цін.

Всі ці завдання вирішуються шляхом настройки однакових ідентифікаторів (XML_ID), тобто у вас повинні збігатися всі зовнішні коди на сайті з зовнішніми кодами з 1С.

Таким чином, якщо ви спочатку зробили сайт, а потім вирішили прикрутити до нього обмін з 1С, то потрібно буде отримати всі XML_ID з 1С та оновити їх на сайті (написати службовий скрипт для цих цілей).

Так як на стороні 1С часто немає можливості поміняти ці коди (з досвіду спілкування з програмістами 1С). Тлумачний 1снік може сформувати csv файл зі списком розділів і кодами в 1С, далі треба оновити ці коди на сайті.

Підведемо підсумки

Починати розробку сайту з налаштування обміну з 1С з різних причин не має сенсу.

Однак, якщо ви заздалегідь знаєте, що вам належить робити інтеграцію - почніть з вивчення файлів вивантаження і тестової вивантаження на сайт "як є".

Чим раніше ви зрозумієте, що належить допрацьовувати в обміні, щоб все працювало як треба, тим краще.

Скоро я планую підготувати статті з налагодження вивантаження і кастомізації. Не перемикайтеся.

Корисні посилання