Алгоритм выгрузки данных на сайт
Инициатором обмена всегда выступает 1С, по соображениям безопасности — даже если сайт взломают, атаковать 1C будет невозможно, так как сайт не умеет обращаться к 1С и вообще ничего не знает про нее.
Обмен работает посредством последовательных http GET/POST запросов от 1С к сайту, к скрипту /bitrix/admin/1c_exchange.php.
Обмен состоит из нескольких ключевых этапов
- Авторизация 1с на сайте;
- Загрузка файлов из 1с на сайт;
- Чтение xml файлов во временную таблицу;
- Обработка данных.
Этапы загрузки, чтения и обработки — делаются за множество шагов. Время длительности каждого шага задается в настройках обмена на стороне сайта. На стороне 1С ограничение на длительность шага должно совпадать.
Процесс выгрузки данных из 1С на сайт можно представить в виде следующей схемы
Полезные ссылки
Формат данных для обмена с 1С
1C загружает на сайт xml файлы, и картинки при импорте товаров.
Если включено zip-сжатие в настройках обмена на стороне сайта (по-умолчанию включено), то 1C загружает один архив, иначе все файлы по отдельности.
Формат xml файлов
Информация в файлах структурирована в соответствии со стандартом обмена коммерческой информацией CommerceML2.
Информация о товарах передается на сайт в следующих файлах
- import.xml - товары, группы (разделы инфоблока), типы цен, склады, свойства товаров и единицах измерения;
- offers.xml - торговые предложения (ТП) товаров и их свойствах;
- prices.xml - цены ТП;
- rests.xml - остатки ТП;
- references.xml - пользовательские справочники (HL-инфоблоки).
Файлы import.xml и offers.xml содержат описания свойств, типов цен, и прочую информацию, которая относится в равной степени ко всем товарам/ТП.
Если каталог большой, в целях оптимизации, описания выгружаются в отдельных “заголовочных” файлах. Это такие же файлы import.xml и offers.xml, только не содержат ничего кроме описаний. В таком случае заголовочные файлы обрабатываются только в самом начале обмена.
Информация о заказах передается на сайт в следующих файлах
- documents.xml - документы (заказы);
- contragents.xml - контрагенты (пользователи-покупатели).
Полезные ссылки
Куда на сайт загружаются файлы выгрузки
В папку /upload/1c_catalog/. Перед каждым обменом эта папка очищается. То есть в этой папке всегда находятся файлы последнего обмена.
Можно включить "режим отладки” обмена — отключить перезапись файлов в папке 1c_catalog. Таким образом можно отключить удаление файлов выгрузки после завершения обмена.
Для этого нужно объявить константу в файле dbconn.php:
// Включает "режим отладки” для обмена с 1С, // отключает перезапись файлов в папке 1c_catalog // Что бы сохранялись все файлы после выгрузки. define("BX_CATALOG_IMPORT_1C_PRESERVE", true);
Теперь вместо удаления папка будет переименовываться, к ней будет добавляться числовой идентификатор.
Чем больше число у папки, тем новее эта папка.
Однако, самая новая папка всегда будет без чисел, и только со следующим обменом она будет переименована.
Важно помнить, что с включенным режимом отладки очень быстро идет расход места на диске. Поэтому после отладки следует отключить лог и удалить все лишние папки обмена.
Что нужно для обмена на стороне сайта
- редакция битрикса “Малый бизнес” или “Бизнес”
- настроить параметры обмена
- создать пользователя и группу “Обмен с 1С” для обмена, настроить права
- разрешить группе выполнять выгрузку товаров/заказов (в настройках параметров)
- разрешить группе доступ на чтение папки /bitrix/admin/
Что нужно для обмена на стороне 1С
- установить модуль для обмена (зависит от версии 1С)
- настроить адрес сайта и пользователя сайта из группы “Обмен с 1С”
- настроить параметры выгрузки на стороне 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С по разным причинам не имеет смысла.
Однако, если вы заранее знаете, что вам предстоит делать интеграцию — начните с изучения файлов выгрузки и тестовой выгрузки на сайт "как есть".
Чем раньше вы поймете, что предстоит дорабатывать в обмене, чтобы все работало как надо, тем лучше.
Скоро я планирую подготовить статьи по отладке выгрузки и кастомизации. Не переключайтесь.
Полезные ссылки
Официальная информация
- Интеграция продуктов 1С и 1С-Битрикс
- Учебный курс Интеграция с 1С — очень много всего полезного “из первых рук”
- Взаимодействие учетной системы с сайтом
- Протокол обмена между системой 1С:Предприятие" и сайтом
- Типичные ошибки и проблемы при интеграции
- Форум "Интеграция с 1С"
Видеоролики
Полезные статьи