Июн
09
2021

Стадии обмена сайта на Битрикс и 1С

Обмен идёт всегда в кодировке windows-1251. Всего есть шесть типов запросов в обмене, о них поговорим далее.

По умолчанию точкой входа является файл /bitrix/admin/1c_exchange.php, все запросы отправляются туда. Параметры передаются в пути запроса, через символ "?", например

/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth

Первый запрос всегда checkauth. Через HTTP basic authentication передаются логин и пароль. Ответ подобен этому:

success
PHPSESSID
c84bba7587de83c2b7f88a837ffc4237
sessid=641ec5e7f1547d4934458141ec237512
timestamp=1623238486

Если удачно, первая строка success. Вторая строка имя куки, третья значение куки. Далее параметры, которые стоит передавать во всех следующих запросах.

Файлы передаются в теле запроса, на сервере файлы берутся не из $_FILES, а из php://input. То есть данные разделены не как в обычном POST запросе через boundary, а все отправляемые данные это и есть файл.

Тип sale. Импорт и экспорт заказов интернет магазина.

  • checkauth - проверка авторизации. Никаких действий не происходит.
  • init - удаляет файлы из папки обмена 1c_exchange, проверяет файл .htaccess, устанавливает, если требуется, режим zip.
  • query - выгрузка заказов по фильтру. Выгружает заказы, которые были обновлены после последней выгрузки
  • success - после query. Устанавливает время окончания последней выгрузки
  • file - загрузка файла. Если на init было zip=yes, файл должен быть в формате zip. Для старых версий обмена еще проверка валидности xml
  • import - Только в новой версии - распаковка архива. Обработка файла. Без создания временных таблиц
  • info - получение справочников интернет магазина на сайте

Тип crm. Для работы 1С с Битрикс 24

То же что и sale. Не используется zip, возможно сжатие через gz, можно получать конкретные заказы по ID, можно указать дату, начиная с которой выгружать заказы.

Тип catalog. Импорт товаров на сайт

  • checkauth- проверка авторизации. Никаких действий не происходит, в ответе присутствует параметр timestamp.
  • init - инициализация обмена. Удаляет файлы из папки обмена 1c_catalog, проверяет файл .htaccess, устанавливает, если требуется режим zip.
  • file - загрузка файла. Если на стадии init было zip=yes, файл должен быть в формате zip.
  • import - импорт данных в несколько шагов:
    1. Если используется zip - распаковка
    2. Удаление старых временных таблиц
    3. Создание временных таблиц. Вызывается событие OnBeforeCatalogImport1C.
    4. Чтение XML и перенос данных во временные таблицы
    5. Создание индексов во временных таблицах
    6. Импорт метаданных
    7. Импорт разделов
    8. Деактивация старых разделов
    9. Импорт товаров
    10. Деактивация старых товаров
    12. Удаление кеша инфоблока, окончание работы, вызов события OnSuccessCatalogImport1C.
  • deactivate - деактивация старых разделов и товаров на сайте, которые старше, чем timestamp. Из 1С на сайт передается timestamp, который был получен в методе checkauth.
  • complete - событие успешного окончания обмена. Запуск события OnCompleteCatalogImport1C

Именно через привязку к событию OnSuccessCatalogImport1C многие делают доработку импорта, так как на этом шаге можно обратиться к файлу и получить оттуда любое поле. Коллбек принимает два параметра: "Параметры подключения компонента обмена" типа массив и "Полный путь к XML-файлу обмена" типа строка.

Тип reference. Загрузка на сайт справочников (HL блоков)

  • checkauth - проверка авторизации. Никаких действий не происходит.
  • init - удаляет файлы из папки обмена 1c_highloadblock, проверяет файл .htaccess, устанавливает, если требуется режим zip.
  • file - загрузка файла. Если на стадии init было zip=yes, файл должен быть в формате zip.
  • import - импорт данных. В начале обработки данных вызывается событие OnBeforeCatalogImportHL, в конце OnSuccessCatalogImportHL.

Тип get_catalog. Экспорт товаров с сайта

  • init - проверка авторизации. Никаких действий не происходит.
  • query - получаем файл

Тип listen. Ожидание изменений

Запрос на ожидание изменений в заказах. Ожидание ответа сервера идет 1 минуту, если были изменения - ответ success, требуется обмен заказами. Если изменений не было, ответа нет, код HTTP 304 Not Modified. Далее 1С снова отправляет запрос с ожиданием изменений.

Пожалуйста, оцените на сколько вам понравилась статья!
Голосов: 3 Среднее: 4.7