Найти в Дзене

Загрузка товаров из 1С на сайт (на 1С-Битркис)

данной статье рассмотрим как происходит экспорт каталога из 1с на сайт, форматы файлов, некоторые ньюансы. В документации достаточно хорошо описан процесс обмена, но не полностью. Для примера предполагается что сайт имеет следующий адрес - https://site.ru Файлы для примера https://github.com/solopovsergey/dzen/blob/main/catalog_from_1c/ Рассмотрим: 1. Как 1С передает данные на сайт При загрузке на сайт данных 1с обращается к сайту по определенному адресу: Шаг 1. Авторизация https://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth При успешной авторизации сайт возвращает временный файл с данными: Пример ответа success PHPSESSID ExRextjsJoAluZoyaf0iWaHUH5Z78Iwl sessid=64eb88864647457676868bf32cca167d timestamp=1676628525 Шаг 2. Инициализация https://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=init&sessid=64eb88864647457676868bf32cca167d&version=3.1 В заголовках передаем куки, в частности идентификатор сессии, название куки и ее значение берем из ответа на
Оглавление

данной статье рассмотрим как происходит экспорт каталога из 1с на сайт, форматы файлов, некоторые ньюансы.

В документации достаточно хорошо описан процесс обмена, но не полностью.

Для примера предполагается что сайт имеет следующий адрес - https://site.ru

Файлы для примера https://github.com/solopovsergey/dzen/blob/main/catalog_from_1c/

Рассмотрим:

  1. Как 1С передает данные на сайт
  2. Формат фалов загружаемых на сайт
  3. Ньюансы

1. Как 1С передает данные на сайт

При загрузке на сайт данных 1с обращается к сайту по определенному адресу:

Шаг 1. Авторизация

https://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth

При успешной авторизации сайт возвращает временный файл с данными:

  • во 2-ой строке содержится имя куки файла;
  • в 3-ей строке содержится значение куки файла;
  • в 4-ой строке содержится ключ сессии обмена (CSRF);
  • в 5-ой строке содержится дата и время сервера сайта (CSRF).

Пример ответа

success
PHPSESSID
ExRextjsJoAluZoyaf0iWaHUH5Z78Iwl
sessid=64eb88864647457676868bf32cca167d
timestamp=1676628525

Шаг 2. Инициализация

https://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=init&sessid=64eb88864647457676868bf32cca167d&version=3.1

В заголовках передаем куки, в частности идентификатор сессии, название куки и ее значение берем из ответа на 1 шаге

Cookie: PHPSESSID=ExRextjsJoAluZoyaf0iWaHUH5Z78Iwl

При успешной инициализации возвращает временный файл с данными:

  • в 1-ой строке содержится признак, разрешен ли Zip (zip=yes);
  • во 2-ой строке содержится информация об ограничении файлов по размеру (file_limit=);
  • в 3-ей строке содержится ключ сессии обмена (sessid=); (может отсутствовать)
  • в 4-ой строке содержится версия CommerceML (version=). (может отсутствовать)

Пример ответа

zip=yes
file_limit=409600

Шаг 3. Загрузка файлов с данными

https://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=test_pack.zip&sessid=64eb88864647457676868bf32cca167d

Заголовок

Cookie: PHPSESSID=ExRextjsJoAluZoyaf0iWaHUH5Z78Iwl

Тело запроса:

содержимое файла test_pack.zip

В ответ возвращается

  • success - файл доставлен;
  • failure - файл не доставлен;
  • если ничего не пришло, то файл также не доставлен.

Пример ответа

success

Response file saved.

При ошибке

failure
Ошибка распаковки архива.

Шаг 4. Импорт данных

В архиве лежит файл import.xml, поэтому ссылка будет

http://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml&sessid=64eb88864647457676868bf32cca167d

Заголовок

Cookie: PHPSESSID=ExRextjsJoAluZoyaf0iWaHUH5Z78Iwl

Ответ

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

В процессе будут возвращаться результаты импорта по каждому этапов

  • Распаковка архива завершена.
  • Временные таблицы удалены.
  • Временные таблицы созданы.
  • Обработано 50.55% файла.
  • Файл импорта прочитан.
  • Временные таблицы проиндексированы.
  • Метаданные импортированы успешно.
  • Группы импортированы.
  • Деактивация/удаление групп завершено.
  • Обработано 2521 из 2521 элементов.
  • Загрузка элементов завершена.
  • Деактивация/Удаление элементов завершены.

Повторение должно происходить до тех пор, пока не будет получен ответ об ошибке либо об успешном завершении всех шагов

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

Шаг 5. Деактивация элементов

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

Дата выгрузки берется из ответа первого шага авторизации на сайте (первого пакета информации о товарах)

http://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=deactivate&tamp=1676628525&sessid=64eb88864647457676868bf32cca167d

Заголовок

Cookie: PHPSESSID=ExRextjsJoAluZoyaf0iWaHUH5Z78Iwl

2. Формат фалов загружаемых на сайт

В процессе обмена на сайт загружаются xml файлы с разным содержанием в зависимости от передаваемых данных.

Примеры файлов были размещены в github репозитории - https://github.com/solopovsergey/dzen/blob/main/catalog_from_1c/

Чтобы свойства попадали в основной каталог, они должны быть перечислены в файле import.xml

Чтобы добавить свойства в инфоблок с торговыми предложениями, перечисления свойств должны быть добавлены в файл offers.xml

3. Ньюансы

3.1 Не обновляется информация

Часто возникает проблема что со стороны 1с настроили экспорт новых свойств, к примеру, а на сайте они не появляются. Причина обычно из за включенного режима - Использовать контрольные суммы элементов для оптимизации обновления каталога. Достаточно убрать галочку, сохранить изменения и все начнет обновляться.