Интеграция сайта на CMS Bitrix с 1С

Интеграция сайта на CMS Bitrix с 1С

Интеграция — обмен информацией между двумя IT-системами. Иногда называют просто обмен. Определяется форматом данных, протоколом (стандартом) передачи данных, алгоритмом работы Самыми популярными форматами данных для обмена являются XML, YML, JSON, CSV. Используемый протокол установки соединения для обмена данными HTTP/HTTPS, SIP, SMTP, FTP.

Процедуру обмена можно разделить на 3 части:

  1. Экспорт данных. Конвертация данных из системы-источника в требуемый формат.
  2. Передача данных.
  3. Импорт данных. Конвертация данных в требуемый формат в систему-приёмник.

Протокол

Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. 1С подобно браузеру формирует запрос POST/GET и получает текстовый ответ. В терминах сетевых взаимодействий 1С — клиент, а сайт — сервер. Обращения всегда инициируются на стороне 1С. В 1С есть настройки адреса сайта, сайт про 1С не знает ничего. Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута).

Формат

Данные передаются в двух форматах. Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса). Второй формат — CommerceML 2. Основан на XML, в этом формате передаются товары, торговые предложения, цены, склады, заказы и контрагенты (пользователи + платежные профили).

Алгоритм обмена

Рассмотрим последовательность действий при обмене.

Подготовка к обмену

Запрос
GET-параметры type=<тип обмена>
mode=checkauth
Basic access логин Логин сайта из настроек 1С
Basic access пароль Пароль сайта из настроек 1С
Ответ
Если успех success
<имя Cookie авторизации>
<значение Cookie авторизации>
sessid=<ID сессии>
<параметр1>=<значение1>
<параметр2>=<значение2>
...
Если ошибка failure
<текст ошибки>

Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит «success», имя и значение Cookie (которую будет проверять во всех последующих запросах), id сессии и прочие параметры (зависят от type — типа обмена).

Возможные ошибки

Текст ошибки Что делать
Ошибка авторизации. Неверное имя пользователя или пароль. Проверить логин и пароль в Битрикс
У Вас нет прав для импорта каталога. Проверьте настройки компонента импорта. Проверить права пользователя в Битрикс
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента Обновить модуль обмена в 1С или выполнить php-код на сайте:
COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y");
COption::SetOptionString("sale", "secure_1c_exchange", "N");
Модуль Информационных блоков не установлен. Проверить модуль iblock в Битрикс. Должен быть скачан и установлен.
Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога определите константу BX_SESSION_ID_CHANGE: define('BX_SESSION_ID_CHANGE', false); Выполнить предложенное действие
Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно, неправильно настроены временные зоны. Выполните настройку и повторите обмен. Проверить настройку часовых поясов на веб-сервере и на сервере БД.

Запрос настроек сайта

Запрос
GET-параметры type=<тип обмена>
mode=init
sessid=<ID сессии>
Cookie <имя Cookie авторизации>=<значение Cookie авторизации>
Ответ
Если успех zip=<yes|no>
file_limit=<число>

На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.

1. Настройки Интеграции 1С.jpg
Параметр Назначение Возможные значения
zip Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик. yes
no
file_limit Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей. целое число >= 0

Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда.

Возможные ошибки

Текст ошибки Что делать
Ошибка инициализации временного каталога При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/.

{{ ELEMENTS.length }}
Наименование
Цена
Количество
Артикул : {{ item.MODEL }}
{{ item.STATUS }}
{{ item.PRICE }} руб.
{{ item.OLD_PRICE }} руб.
- +
Вы экономите: {{ DATA.TOTAL_DISCOUNT_SUM }} руб.
Итого: {{ DATA.TOTAL_SUM }} руб.
Вы можете вернуться в каталог и продожить покупки
Вернуться и продолжить покупки