Обмен 1С с Битрикс

Общая схема импорта

type=sale - обмен заказами, type=catalog - импорт каталога

  • mode=checkauth - авторизация
  • mode=init - инициация
  • mode=query - запрос (для заказов)
  • mode=file&filename=<имя файла> - загрузка файла
  • mode=import&filename=<имя файла> - обработка файла

Шаги импорта выгрузки Битрикс

Ответ Шаг $NS[«STEP»]
Распаковка архива завершена -
Временные таблицы удалены -
Временные таблицы созданы 1
Обработано 94.35% файла 2
Файл импорта прочитан 2
Временные таблицы проиндексированы 3
Метаданные импортированы успешно 4
Группы импортированы 5
Деактивация/удаление групп завершено 6
Обработано 5781 из 10061 элементов 7
Обработано 10061 из 10061 элементов 7
Загрузка элементов завершена 7
Деактивация/Удаление элементов завершены 8
Импорт успешно завершен -

Порядок импорта по шагам

Этот процесс возможно запустить без 1С, достаточно иметь файлы выгрузки и curl или этот скрипт

Создадим переменные (файл кукисов $COOK и логин-пароль $BASIC_AUTH - это base64 от логин:пароль):

COOK='data/cookiefile.txt'
BASIC_AUTH=`echo -n "логин:пароль" | base64`

Авторизация

Пример запуска:

curl -s -c $COOK 'http://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth' -H "Authorization: Basic $BASIC_AUTH"

Ответ:

success
PHPSESSID
1sk5v5eu830h4ddpfkj22eitf5

success - успех. Если вернулся HTML - проверьте логин-пароль, а также войдите под этими данными на сайт, введя каптчу (еще одна причина отказа).

Инициация

curl -s -c $COOK -b $COOK 'http://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=init' -H "Authorization: Basic $BASIC_AUTH"

Ответ:

zip=yes
file_limit=204800

Загружаем файл

Выгружаем на сайт файлы обмена в формате CommerceML 2, посылая содержимое файла или его части в виде POST:

curl -s -c $COOK -b $COOK -X POST --data-binary @- 'http://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=offers.xml' -H "Authorization: Basic $BASIC_AUTH" -H 'Content-Type: application/octet-stream' -H 'Expect:' < offers.xml

Ответ:

success

Пошаговая обработка файлов

curl -s -c $COOK -b $COOK 'http://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=offers.xml' -H "Authorization: Basic $BASIC_AUTH"

Если в первой строке содержится слово progress - это означает необходимость послать тот же запрос еще раз.

В этом случае во второй строке будет возвращен текущий статус обработки, объем загруженных данных, статус импорта и т.д.

Ответы:

progress
Распаковка архива завершена.

progress
Временные таблицы удалены.

progress
Временные таблицы созданы.

progress
Обработано 49.57% файла.

progress
Обработано 98.19% файла.

progress
Файл импорта прочитан.

progress
Временные таблицы проиндексированы.

progress
Метаданные импортированы успешно.

progress
Группы импортированы.

progress
Деактивация/удаление групп завершено.

progress
Обработано 9168 из 9168 элементов.

progress
Загрузка элементов завершена.

progress
Обработано 9168 из 9168 элементов.

progress
Деактивация/Удаление элементов завершены.

Если в ответ передается строка со словом «success», то это будет означать сообщение об успешном окончании обработки файла.

success
Импорт успешно завершен.

Если в ходе какого-либо запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово failure, а в следующих строках - описание ошибки, произошедшей в процессе обработки запроса.

Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.