Содержание
Обмен 1С с Битрикс
PHP скрипт обмена (импорта) 1С: http://site.ru/bitrix/admin/1c_import.php.
Общая схема импорта
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 |
| Импорт успешно завершен | - |
Порядок импорта по шагам
Создадим переменные (файл кукисов $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, а в следующих строках - описание ошибки, произошедшей в процессе обработки запроса.