Rose debug info
---------------

Механизм обмена заказами между 1С и сайтом на Битрикс

Стандартный обмен заказами между 1С и сайтом на Битрикс всегда инициируется запросами со стороны 1С. Для простоты можно представить, что 1С — это браузер, который делает запросы к сайту на сервере. Какие запросы браузер сделает — такие данные и получит. Когда 1С нужны, к примеру, заказы, 1С делает соответствующий запрос на сайт, а уже Битрикс в ответ отдает xml с заказами, которые обрабатывает модуль обмена на стороне 1С.

Выгрузку заказов можно распознать по «type=sale» в запросах. В зависимости от направления движения заказов обмен между 1С и сайтом на Битрикс делится на 2 фазы:
-загрузка заказов в 1С с сайта;
-выгрузка заказов из 1С на сайт.

Каждая фаза делится на несколько этапов. Разделение на этапы — исходя из «mode» в запросах, которые посылает 1С. Новый «mode» в запросе — новый этап. Первые 2 этапа (авторизация и инициализация) в обеих фазах дублируются.

Заказы из Битрикс в 1С

Этап 1: запрос авторизации (type=sale, mode=checkauth)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth

На этот запрос от сайта 1С получит ответ вида:

success PHPSESSID jZgq6XX8f4WtGWic7KyLsPzb7VBnUzqP sessid=7a0b69b4b3f10415e17a095cd8edabd8

Sessid — идентификатор сессии, с которым 1С будет делать все дальнейшие запросы. В ответе идентификатор привожу для примера (у вас будет другой).

Чтобы получить идентификатор сессий 1С должна быть авторизована под пользователем Битрикс, у которого есть права на обмен заказами (т. е. в модуле обмена внутри 1С заданы корректные логин и пароль пользователя Битрикс).


Этап 2: инициализация обмена (type=sale, mode=init)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=<id_сессии>

Битрикс удаляет все файлы из папки /upload/1c_exchange/, оставшийся после предыдущего обмена документами (не обязательно заказами). Сайт отдает ответ вида:

zip=yes file_limit=204800
  1. Zip — это параметр, который говорит, поддерживает ли сайт архивацию (yes — поддерживает, no — не поддерживает). В зависимости от этого 1С будут высылать файл с заказами в виде zip-архива или несжатую xml.
  1. File_limit — максимальный размер загружаемого файла в байтах. Если файл больше, то 1С разобьет его на более мелкие файлы.

Эти параметры настраиваются: Магазин -> Настройки -> Интеграция 1С -> Заказы. Галочка «Использовать сжатие zip, если доступно» и поле «Размер единовременно загружаемой части файла (в байтах)».


Этап 3: получение заказов из Битрикс (type=sale, mode=query)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=<id_сессии>

В ответ Битрикс генерирует xml, в которую попадают все заказы, которые создались / изменились после предыдущего обмена заказами (саму xml здесь не привожу, т. к. это лдинная простыня). После чего помечает заказы в БД как выгруженные.

Если нет ни одного нового / модифицированного заказа, то сайт в ответе отдаст пустую xml. В ответе на повторный запрос также будет пустая xml (т. к. в БД заказы уже отмечены).


Этап 4: завершение обмена (type=sale, mode=success)

Когда заказы успешно обработаны в 1С, то 1С посылает запрос:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=success&sessid=<id_сессии>

Сайт на это отвечает:

success

Загрузка заказов в 1С с сайта на Битрикс завершена.


Заказы из 1С в Битрикс

Этапы 1 и 2 совпадают с предыдущей фазой.

Этап 3: загрузка файла в Битрикс (type=sale, mode=file)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=<имя_файла>&sessid=<id_сессии>

Он загружает в папку /upload/1c_exchange/ файл обмена, посылая содержимое файла в виде POST-запроса.

В ответ от сервера могут прийти следующие ответы:

progress — файл еще загружается;

1С на этот ответ пришлет еще один такой же запрос (или несколько), пока не получит другой ответ.

failure <текст ошибки> — ошибка обработки файла с краткой расшифровкой ошибки;
success — файл успешно загружен.

После ответа «success» 1С перейдет к этапу 5.


Этап 4: обработка файла на стороне Битрикс (type=sale, mode=import)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=import&filename=<имя_файла>&sessid=<id_сессии>

Этап на стороне сайта состоит из двух шагов (т. е. со стороны 1С будет минимум 2 одинаковых запроса).

В ответ на первый запрос должен прийти ответ:

progress Распаковка архива завершена — распаковка zip-архива завершена (этот ответ будет, даже, если файл передается в виде несжатого xml).

В ответ на второй запрос должен прийти ответ:

success — файл успешно загружен.

После получения этого ответа 1С переходит к завершающему этапу.

Помимо успешных, на этом этапе сайт может отдавать, к примеру, такой ответ:

failure <текст ошибки>

Например, зачастую встречается вот такая ошибка «failure Файл для импорта пуст» — это значит, что на предыдущем этапе загружен пустой файл или (что чаще) файл не был загружен.

Выгрузка заказов из 1С в Битрикс завершена.

Поделиться
Отправить