Как 1С выгружает товары на сайт под управлением 1C Bitrix. Небольшой how to для тех кто не в теме

naumov_evgnaumov_evg   

Разберем по шагам процесс выгрузки товаров на сайт под управлением Bitrix (да и всем чем угодно)

В процессе выгрузки, 1С должна обращается на сайт по следующим путям (пути к штатным контроллерам битрикса, если мы кастомим выгрузку пути будут другие):


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

Это первый запрос, который делает 1С. Тут она получает ID сессии, которую будет передавать в каждый запрос в процессе всей выгрузки.

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

failure
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента.

Если мы по какой-то причине не хотим проверять сессию на каждом шаге, то можно отключить выполнив команду 

COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y");

События не бросаются


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=init&sessid=ID_Сессии

Следующий запрос отчищает папку, в которую выгружаются файлы для выгрузки (загрузятся они далее).

Не забываем передать ID сессии в параметр sessid.

Если все ОК, то сайт сообщает нам следующие сведения:

zip=yes
file_limit=204800

zip: разрешено ли грузить архивы

file_limit: максимальный размер файла (по дефолту 200кб)

События не бросаются


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=ИМЯ_ФАЙЛА&sessid=ID_Сессии

Этот запрос загружает файл в нашу папку. По умолчанию /upload/1c_catalog. Можно передавать все файлы xml по одному и картинки загружать по одиночке, но лучше их упаковать в архив в загрузить один раз. Отправляем POST запросом архив, а в filename указываем имя файла.zip. Если все хорошо, то в результате запроса у нас в папке появиться загружаемый файл.

События не бросаются


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=ИМЯ_ФАЙЛА.zip&sessid=ID_Сессии

 Этот запрос выполнять, только если мы загружали архив. Тут происходит распоковка архива.

События не бросаются


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml&sessid=ID_Сессии

Начинается самое интересное. Наша цель выгрузить товары и тут мы, наконец-то начинаем это делать! Этот запрос надо будет выполнить не один раз,а минимум 8. Именно за столько шагов проходит выгрузка одного файла. Тут мы выгружаем import.xml. 

Детально описывать шаги нет смысла, про них можно почитать тут https://mrcappuccino.ru/blog/post/1c-exchange

Если у нас в архиве файл назывался по другому, скажем import_dasdasdasd.xml, то filename=import_dasdasdasd.xml

Бросаются события: OnBeforeCatalogImport1C, OnSuccessCatalogImport1C (по названию не сложно понять, когда они вызываются)


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=offers.xml&sessid=ID_Сессии

По аналогии с предыдущем выгружаем offers.xml и остальные файлы (prices.xml, rests.xml, ...)


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=deactivate&sessid=ID_Сессии&timestamp=000000000000

Важный шаг, который деактивирует элементы и разделы.

Обязательно должны передать параметр timestamp (временная метка в секундах(!)). Будут выбраны все элементы и разделы, которые не были модифицированы после этой метки.

Грубо говоря, деактивируется все, что было ранее этой метки. Обычно сюда передают метку начала выгрузки.

События не бросаются


  • https://example.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=complete&sessid=ID_Сессии

Особо важного тут ничего не делается, а только бросается событие, что импорт успешно завершен.

Бросаются событие: OnCompleteCatalogImport1C

Lex

Грузил картинки товаров архивом как в инструкции: выгрузилось на сервер быстро а вот распаковать архив так и не получилось. метод распаковки представленный в статье говорит что все успешно, файл найден и обработан, только результата нет(

naumov_evg

Lex, а можете скинуть адреса по которым вы обращались? Так же может быть, что на файл который закинули нет прав

Создание и продвижение сайтов для бизнеса только кликни мы откликнемся
8-800-77-55-123 Меню
В порядке и на условиях, определённых Федеральным законом от 27 июля 2006 года № 152-ФЗ «О персональных данных». Согласие на обработку следующих моих персональных данных: фамилии, имени, отчества, года, месяцы, даты и места рождения, пола, гражданства, места жительства, в том числе сведения о регистрации по месту жительства, месту пребывания, места работы, социального положения (статуса), реквизитов документа, удостоверяющего личность. Обработка моих персональных данных Оператором осуществляется исключительно в целях защиты моих прав на регистрацию доменного имени, услуги по созданию и продвижению сайтов, услуги по размещению рекламных компаний в интернет и обеспечения соблюдения законов и иных нормативных правовых актов, связанных с предоставлением этих услуг. Я предоставляю Оператору право осуществлять следующие действия с моими персональными данными: сбор, систематизация, накопление, хранение, уточнение (обновление, изменение), использование, обезличивание, блокирование, уничтожение персональных данных, передача персональных данных между: - Оператором ООО «КликОН», в котором мне будут осуществляться вышеперечисленные услуги ; - Оператором АНО «Региональный Сетевой Информационный Центр», осуществляющим непосредственную регистрацию доменных имён ; Мне гарантируется конфиденциальность моих персональных при обработке их и хранении не дольше срока, предусмотренного нормативными актами. Настоящие согласие данное мной и действует бессрочно. Я оставляю за собой право отозвать своё согласие посредством составления соответствующего письменного документа, который может быть направлен мной в адрес Оператора по почте заказным письмом с уведомлением о вручении либо вручен лично под расписку уполномоченному представителю Оператора.