Бітрікс і інтеграція з 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С
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С" для обміну, налаштувати права
- дозволити групі виконувати вивантаження товарів / замовлень (в настройках параметрів)
- дозволити групі доступ на читання папки / 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С з різних причин не має сенсу.
Однак, якщо ви заздалегідь знаєте, що вам належить робити інтеграцію - почніть з вивчення файлів вивантаження і тестової вивантаження на сайт "як є".
Чим раніше ви зрозумієте, що належить допрацьовувати в обміні, щоб все працювало як треба, тим краще.
Скоро я планую підготувати статті з налагодження вивантаження і кастомізації. Не перемикайтеся.