Failure ошибка проверки источника запроса обновите модуль обмена

 

Пользователь 111813

Постоянный посетитель

Сообщений: 162
Баллов: 17
Регистрация: 25.12.2011

#1

06.02.2015 12:41:56

Здравствуйте. Мы используем два механизма обмена с 1С — один от Битрикса (для обмена заказами) и другой от сторонней компании (обмен товарами). При обмене заказами битрикс ставит флаг использования новой версии обмена, и при обмене товарами (модуль от сторонней фирмы) выпадается ошибка «Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента».

Далее я выполняю следующие команды, что бы Битрикс воспринял обмен по старому формату (в этом случае обмен проходит нормально. но после обмена заказами снова выдаётся ошибка и необходимо заново вызывать данные команды)

Код
COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y"); 
COption::SetOptionString("sale", "secure_1c_exchange", "N");

Можно ли сделать, что бы Битрикс так не капризничал? Сильно ли изменился новый механизм обмена и на сколько сложно страрый обмен переделать под новый обмен?

 

Александр Денисюк

Администратор

Сообщений: 5150
Баллов: 867
Регистрация: 16.10.2013

#2

06.02.2015 15:07:34

Цитата
Владимир Беглецов написал:
Здравствуйте. Мы используем два механизма обмена с 1С — один от Битрикса (для обмена заказами) и другой от сторонней компании (обмен товарами). При обмене заказами битрикс ставит флаг использования новой версии обмена, и при обмене товарами (модуль от сторонней фирмы) выпадается ошибка «Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента».

Далее я выполняю следующие команды, что бы Битрикс воспринял обмен по старому формату (в этом случае обмен проходит нормально. но после обмена заказами снова выдаётся ошибка и необходимо заново вызывать данные команды)

Код
 COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y"); 
COption::SetOptionString("sale", "secure_1c_exchange", "N"); 

Можно ли сделать, что бы Битрикс так не капризничал? Сильно ли изменился новый механизм обмена и на сколько сложно страрый обмен переделать под новый обмен?

Новый обмен несовместим со старым. Изменились http запросы. Появились критичные параметры session id + № версии.

 

Александр Денисюк, а можете подсказать как долго битрикс продолжить поддерживать старый обмен? Просто может получиться так, что если мы останемся на старом обмене, то в какой-то момент Битрикс резко прекратит поддержку и де-факто мы останемся не с чем

 

Юрий Волошин

Администратор

Сообщений: 1376
Баллов: 113
Регистрация: 07.03.2008

#4

06.02.2015 16:00:09

Цитата
Владимир Беглецов написал:
Александр Денисюк, а можете подсказать как долго битрикс продолжить поддерживать старый обмен? Просто может получиться так, что если мы останемся на старом обмене, то в какой-то момент Битрикс резко прекратит поддержку и де-факто мы останемся не с чем

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

Рассмотрите все-таки возможность перехода, это изменение сделано по причине безопасности, а передаются все-таки коммерческие данные.  

 

Добрый день
1. Подскажите пожалуйста, а когда было сделано изменение перехода?
Проблем в том, что мы делали обмен (только выгрузка товаров) штатным модулем обмена в 1с УТ, а потом скаченным с сайта, но пару дней назад оба прекратили работу с формулировкой «битрикс Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента.»
2. Какой теперь актуальный модуль обмена и где его качать?

 

Александр Денисюк

Администратор

Сообщений: 5150
Баллов: 867
Регистрация: 16.10.2013

#6

24.02.2015 11:17:07

Цитата
Владислав Бабий написал:
2. Какой теперь актуальный модуль обмена и где его качать?

Все актуальные модули тут

http://1c.1c-bitrix.ru/ecommerce/download.php

Новый модуль — это модуль, который 4 версии

 

Пользователь 426591

Заглянувший

Сообщений: 2
Регистрация: 11.12.2015

#7

17.12.2015 19:28:54

Цитата
Все актуальные модули тут  http://1c.1c-bitrix.ru/ecommerce/download.php

На главной странице! 1с-битрикс написано что интеграция 1С и  1с- Битрикс доступна из коробки!
Для этого НУЖНО ВСЕГО ЛИШЬ  обновить ваш модуль обмена с сайта до актуальной версии.
Но клиетнам базовой 1с версии эта ИНТЕГРАЦИЯ ИЗ КОРОБКИ недоступна по причине запрета модификации конфигурации.
Более того старый обмен тоже перестал работать…
Я покупал Битрикс чтобы все работало из коробки а покупать Проф версию 1с мне совершенно нет необходимости!
Главный вопрос когда будет обновлен модуль обмена в «базовых» конфигурациях   и будет ли вообще? Дата выпуска обновления будет самым приятным ответом….

 
 

Пользователь 506671

Заглянувший

Сообщений: 1
Регистрация: 27.02.2016

#9

27.02.2016 17:45:34

Цитата
Александр Денисюк написал:

Цитата
Владислав Бабий  написал:
2. Какой теперь актуальный модуль обмена и где его качать?

Все актуальные модули тут  http://1c.1c-bitrix.ru/ecommerce/download.php
Новый модуль — это модуль, который 4 версии

УТ10.3 модуль и 5.0.0.5 и 6.0.0.1, а ошибка все та же — «обновите модуль»:-) до сих пор приходится пользоваться регулярно скриптом.

 

Пользователь 428983

Заглянувший

Сообщений: 9
Регистрация: 06.04.2016

#10

13.08.2016 07:09:51

Доброго здравия! Модуль 4.0.5.1 будет работать с Управление сайтом 16.0.8?

В логах обнаружена ошибка:
13.08.2016 6:24:58—Начало
выгрузки пакета 10 каталога: Основной каталог товаров
13.08.2016 6:25:31—Выгрузка справочных данных.
13.08.2016 6:25:31—Выгрузка товаров в XML.
13.08.2016 6:25:40—Выгружено 390 картинок.
13.08.2016 6:25:40—Выгружено 0 файлов.
13.08.2016 6:25:40—Выгрузка товаров в XML завершено. Выгружено 1 000 элементов.
13.08.2016 6:25:40—Отправка запроса на авторизацию.
13.08.2016 6:25:40—Отправка запроса на инициализацию, для определения версии обмена данных.
13.08.2016 6:25:43—Процес выполнения обмена: Распаковка архива завершена.
13.08.2016 6:25:45—Процес выполнения обмена: Временные таблицы удалены.
13.08.2016 6:25:47—Процес выполнения обмена: Временные таблицы созданы.
13.08.2016 6:25:58—Процес выполнения обмена: Обработано 45.67% файла.
13.08.2016 6:26:00—import___1a3f500a-507c-4be0-bd54-af4d79b38e3b.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure

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

На сколько это критично? Что она означает?

Скажите, как можно запустить скрипт?

Цитата
COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);
COption::SetOptionString(«sale», «secure_1c_exchange», «N»);
 

Командная php строка там выполнить этот код

 

Пользователь 428983

Заглянувший

Сообщений: 9
Регистрация: 06.04.2016

#12

15.08.2016 11:39:42

Цитата
Владимир Линецкий написал:
Командная php строка там выполнить этот код

Владимир, благодарю за ответ, но я скорее программист 1С, чем web кодер, даже не представляю, как вызвать php строку. Подскажите, пожалуйте, ссылкой на какую-нибудь инструкцию?

 

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

 

Пользователь 930959

Заглянувший

Сообщений: 2
Регистрация: 06.02.2017

Web Developer

#15

28.03.2017 18:51:56

Цитата
Константин Серавкин написал:
COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);
COption::SetOptionString(«sale», «secure_1c_exchange», «N»);

Спасибо. Работает, помогло.

 

В 1С используется стандартный механизм обмена данными с сайтом. Битрикс 17.0.15, 1С 11.3.4.93. С ошибкой при отправке заказов на сайт «Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента» мы разобрались. Как-то можно привести в соответствие встроенный модуль обмена с сайтом и битриксовый, чтобы обмен происходил по новому формату без применения дополнительного модуля обмена от Битрикс?

 

Пользователь 1392443

Заглянувший

Сообщений: 2
Регистрация: 15.09.2017

#17

26.10.2017 15:31:27

Цитата
Анна Клементьева написал:
В 1С используется стандартный механизм обмена данными с сайтом. Битрикс 17.0.15, 1С 11.3.4.93. С ошибкой при отправке заказов на сайт «Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента» мы разобрались. Как-то можно привести в соответствие встроенный модуль обмена с сайтом и битриксовый, чтобы обмен происходил по новому формату без применения дополнительного модуля обмена от Битрикс?

+1

 

Добрый день.

Используем облачную версию УНФ и 1С управление сайтом «Малый бизнес». За обновление облака следит 1С, за обновлением сайта — я. Все обновляется, но с июля месяца у нас перестал работать обмен заказами и товарами с сайта. Ранее все работало, что сейчас происходит не пойму.
В логах пишет:
____________________________________________________________­______
Интерактивный обмен
10/26/2017 9:08:35 PM Запуск выгрузки заказов
Выгружено: 13
10/26/2017 9:08:37 PM Завершена выгрузка заказов
Дополнительная информация:
Произошла ошибка: Ошибка получения параметров обмена (ограничение размера файла)!
Произошла ошибка на стороне сервера. Файл не отправлен. (/var/lib/srv1cv8/tmp/webdata — 6455ae14-1d05-11e7-2297-00505689f2c0/orders-afe9ec8a-ba78-11e7-7088-00505689f2c0.xml).
Ответ сервера:
failure
Ошибка проверки источника запроса. Обновите модуль обмена.

____________________________________________________________­_______

Интерактивный обмен
10/26/2017 9:07:37 PM Запуск выгрузки товаров
10/26/2017 9:07:44 PM Завершено формирование файлов выгрузки товаров
Выгружено товаров: 859
предложений: 777
картинок: 0

В том числе для каталога Основной каталог товаров:
товаров: 859
предложений: 777
картинок: 0

10/26/2017 9:08:14 PM Выгрузка на сайт завершилась с ошибками.
offers.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure
Ошибка импорта метаданных.
10/26/2017 9:08:14 PM Завершена выгрузка товаров

____________________________________________________________­______________

Что делать?
С Уважением, Александр

 

Пользователь 63774

Посетитель

Сообщений: 47
Баллов: 7
Регистрация: 19.05.2010

#19

17.07.2018 16:24:33

Такая же проблема:

Цитата
17.07.2018 17:21:12—Произошла ошибка на стороне сервера. Файл не отправлен. (E:1credznew_sitenew_sitereportsExchange_(Выгрузка на новый сайт)2018-07-17.zip).
Ответ сервера:
failure
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента.

Версия модуля обмена 7.0.1.6
Сайт обновлен до последней версии 18.0.2
Уже все перепробовал ничего не выходит.

Цитата
COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);
COption::SetOptionString(«sale», «secure_1c_exchange», «N»);

тоже не помогает:(

 
 

Пользователь 4790846

Заглянувший

Сообщений: 1
Регистрация: 03.12.2020

#21

22.12.2021 19:31:41

А как импортировать reference, интересно, через модуль 1с_exchange если на стороне 1с не отправляется сессионная кука, а в компоненте catalog.import.hl лежит потрясающее условие elseif(!check_bitrix_sessid()), а в коде check_bitrix_sessid идет безусловное сравнение либо с $_REQUEST[<sessid (по умолчанию)>] либо со значением заголовка X-Bitrix-Csrf-Token. И ЭТО ОТКЛЮЧИТЬ НЕЛЬЗЯ НИКАК, кука не отправилась — хоть оботправляйся этот токен, bitrix_sessid() ему никогда соответствовать не будет!!!!!  

17.03.2021
12:08
17.03.2021 12:08:58

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

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

Причина
Ошибка проверки источника запроса возникает, когда из 1С делается выгрузка не битриксовским модулем обмена.
В 1С битриксовский модуль обмена ставится рядом с модулем от компании 1С. Т.е. можно делать выгрузку и битриксовскими модулем и модулем от 1С.
Клиент делал выгрузку модулем от 1С.

Решение
добавить в init.php

COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y" ); 
COption::SetOptionString("sale", "secure_1c_exchange", "N" );

17.03.202112:0817.03.2021 12:08:58

Теги: обмен с 1С

Ошибка обмена с 1С «Ошибка проверки источника запроса. Обновите модуль обмена»

При использовании стандартного обмена от 1С, например, если вы работаете с конфигурацией Розница или другими для которых нет модуля обмена от фирмы Битрикс. При обмене можно получить следующую ошибку:

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

Ошибку нужно смотреть в конфигураторе в режиме отладки. Это будет ответ на запрос данных от сайта.

Чтобы её исправить нужно в Битриксе установить параметры. Для этого в админке в разделе Командная PHP-строка выполнить следующий код:

COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);

COption::SetOptionString(«sale», «secure_1c_exchange», «N»);

Так же можно прописать эти строчки в init.php.

Тем самым вы переключите ядро Битрикса на работу с типовым обменом от 1С.

Количество показов: 6761

Возврат к списку


Некоторые пользователи видят ошибки вида:

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

При обмене заказами

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

В версии Битрикса 14.5 появился новый режим контроля сессий при обмене с 1С. Это необходимо для безопасности и работает только с новыми дополнениями Битрикса (4.0.0.0 и выше) для 1С.

Ошибка возникает, когда на сайте включены проверки для новых версий обмена в 1С, а 1С старая.

Проверка источника запроса включается сама при обновлениях Битрикса, или при обмене с новой 1С.

Модуль позволяет администратору отключить проверку для стандартного обмена с 1С.

Модуль позволяет отключить проверку постоянно, так, чтобы она не включалась обратно.

Магазин → Продвинутый обмен с 1С → Проверка источника запроса

Проверка источника запроса

Попробуйте отключить проверку источника запроса при обмене.

Проверка источника запроса Товары и заказы

Для выгрузки заказов в разные 1С (или в Битрикс24) мы рекомендуем использовать разные пути файлов. Так удобнее и не происходит путаницы при экспорте заказов.


0
 

 Отказоустойчивость |

Описание курса

| Ускорение сайта. Отложенный сброс управляемого кеша инфоблоков 

Некоторые пользователи видят ошибки вида:

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

При обмене заказами

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

В версии Битрикса 14.5 появился новый режим контроля сессий при обмене с 1С. Это необходимо для безопасности и работает только с новыми дополнениями Битрикса (4.0.0.0 и выше) для 1С.

Ошибка возникает, когда на сайте включены проверки для новых версий обмена в 1С, а 1С старая.

Проверка источника запроса включается сама при обновлениях Битрикса, или при обмене с новой 1С.

Модуль позволяет администратору отключить проверку для стандартного обмена с 1С.

Модуль позволяет отключить проверку постоянно, так, чтобы она не включалась обратно.

Магазин → Продвинутый обмен с 1С → Проверка источника запроса

Проверка источника запроса

Попробуйте отключить проверку источника запроса при обмене.

Проверка источника запроса Товары и заказы

Для выгрузки заказов в разные 1С (или в Битрикс24) мы рекомендуем использовать разные пути файлов. Так удобнее и не происходит путаницы при экспорте заказов.


0

 Отказоустойчивость |

Описание курса

| Ускорение сайта. Отложенный сброс управляемого кеша инфоблоков 

Для ее ликвидации во время синхронизации
надо
1. в init засунуть

COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);

COption::SetOptionString(«sale», «secure_1c_exchange», «N»);

2. надо правильно передать сессию. Ее брать вот от сюда ссылка для примера

Request URL: https://test.test/bitrix/tools/public_session.php?k=4aacafaf96864df0cc0f844462bad041.d218e58fd17c62b6717dcf32e73e045f342b7885555d162ac42c59a8832c5a6
правильное значение 4aacafaf96864df0cc0f844462bad041

нас интересует вот эта строка

elseif (!check_bitrix_sessid())

{  

echo «failuren»,GetMessage(«CC_BCIH_ERROR_SOURCE_CHECK»);

}

Ошибка исходит от этой функции check_bitrix_sessid

Надо ее рассмотреть https://bxapi.ru/src/?module_id=main&name=check_bitrix_sessid

function check_bitrix_sessid($varname=‘sessid’)

{

    $request = MainContext::getCurrent()->getRequest();

    return (

        $request[$varname] === bitrix_sessid() ||

        $request->getHeader(‘X-Bitrix-Csrf-Token’) === bitrix_sessid()

    );

}

Как работает. сначала получаем гет запрос. И далее 2 проверки. Если что то не так работает- то выскочит ошибка.

Неопытным разработчикам кажется, что это процесс обмена Битрикса и 1С это очень сложный процесс, но с опытом понимаешь, что это не просто сложно: это вообще полная жесть. Попробую описать словами этот процесс. Добро пожаловать в ад описание обмена с 1с.

Инициатором любого обмена является 1С, сайт не загружает ничего в 1С, сайт только принимает запросы и отдаёт результат. По умолчанию, 1С обращается к скрипту /bitrix/admin/1c_exchange.php. Этот путь указывается в настройках обмена в самой 1С. Из коробки в этом файле включается файл /bitrix/modules/sale/admin/1c_exchange.php. Если открыть файл, то видим там подключение нескольких компонентов в зависимости от $_GET[«type»]. В общем случае интересуют два из них:

bitrix:catalog.import.1c – импорт каталога.

bitrix:sale.export.1c – экспорт заказов.

Импорт товаров из 1С

Импорт начинается с авторизации, посылается запрос на /bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth с передачей логина и пароля пользователя сайта, которые указали в настройках обмена. После авторизации сайт выдает ID сессии.

Далее идёт инициализация обмена, URL /bitrix/admin/1c_exchange.php?type=catalog&mode=init&sessid=ID_Сессии. На этом этапе в сессии инициализируется массив данных обмена $_SESSION[«BX_CML2_IMPORT»] и сайт отдаёт параметры обмена: возможность использования zip, лимит размера файла и т.д. Также на этом этапе очищается папка для файлов выгрузки. Скорее всего, это будет папка /upload/1c_catalog/. Для отладки можно включить сохранение старых файлов обмена, тогда при новом обмене старые данные будут перемещаться в отдельные папки: 1c_catalog0, 1c_catalog1 и т.д.. Для сохранения данных нужно объявить константу в dbconn.php:

// Не забудьте убрать эту строку после отладки во избежание переполнения сервера
define("BX_CATALOG_IMPORT_1C_PRESERVE", true);

После этого 1С начинает подготовку данных и далее посылает их POST-запросом на сайт частями, URL: /bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=ИМЯ_ФАЙЛА.zip&sessid=ID_Сессии. Запрос продолжается, пока файлы не будут переданы полностью.

1С передает на сайт xml-файлы с данными товаров и предложений, а также картинки. В случае если сайт разрешил использовать zip, то 1С передает все файлы одним архивом. Тогда следующий шаг начинается с его распаковки.

В выгрузке могут участвовать xml-файлы:

  • import.xml — товары, разделы, типы цен, склады, свойства товаров и единицы измерения;
  • offers.xml — торговые предложения товаров и их свойства;
  • prices.xml — цены торговых предложений(в новых версиях);
  • rests.xml — остатки торговых предложений(в новых версиях);
  • references.xml — пользовательские справочники (highload-инфоблоки, в новых версиях).

Узнать подробнее о файлах обмена

Картинки загружаются в папку /upload/1c_catalog/import_files/.

Далее начинаются обработка файла и сам импорт данных, 1С раз за разом обращается к URL /bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=ИМЯ_ФАЙЛА_ВЫГРУЗКИ.xml, где ИМЯ_ФАЙЛА_ВЫГРУЗКИ — import.xml, offers.xml и т.д. Импорт завершается, когда сайт отдаёт слово «success». За обработку файла выгрузки отвечают классы CIBlockXMLFile (/bitrix/modules/iblock/classes/mysql/cml2.php) и CIBlockCMLImport (/bitrix/modules/iblock/classes/general/cml2.php).

Импорт состоит из нескольких шагов:

  1. Очистка временной таблицы (таблица b_xml_tree)

    Метод CIBlockXMLFile::DropTemporaryTables(). Обычный drop таблицы b_xml_tree.

  2. Создание временной таблицы

    Метод CIBlockXMLFile::CreateTemporaryTables(). Здесь создается таблица b_xml_tree. Можно, кстати, задать storage engine этой таблицы, равно как и всех создаваемые битриксом, с помощью определения константы MYSQL_TABLE_TYPE.

  3. Чтение файла во временную таблицу

    Метод CIBlockXMLFile::ReadXMLToDatabase().

  4. Индексация временной таблицы

    Метод CIBlockXMLFile::IndexTemporaryTables().

  5. Импорт метаданных

    Метод CIBlockCMLImport::ImportMetaData.

  6. Импорт разделов

    Метод CIBlockCMLImport::ImportSections.

  7. Деактивация разделов и пересчёт левой и правой границ для разделов

    Методы CIBlockCMLImport::DeactivateSections и CIBlockCMLImport::SectionsResort.

  8. Импорт элементов

    Самый длительный процесс, на этом этапе добавляются и обновляются новые товары (если загружается import.xml) или обновляются цены и остатки (если загружаетс offers.xml). Здесь задействован метод CIBlockCMLImport::ImportElements, который вызывает CIBlockCMLImport::ImportElement для товаров или CIBlockCMLImport::ImportElementPrices для остатков/цен.

  9. Деактивация элементов

    Методы CIBlockCMLImport::DeactivateSections и CIBlockCMLImport::SectionsResort.

  10. success

    Импорт файла завершен, сайт отвечат словом «success», 1С считает обмен успешным. При необходимости начинается импорт следующего файла.

Некоторые шаги могут выполняться за несколько запросов, порциями по несколько секунд (это время настраивается параметров «Интервал одного шага в секундах» в настройках интеграции с 1С в админке Битрикса).

Модификация

На шаге 9, т.е. по окончании обработки файла выгрузки (NB: одного файла, например, товаров или предложений) вызывается событие OnSuccessCatalogImport1C модуля catalog. Аргументы обработчика — параметры компонента обмена и путь к файлу выгрузки.

Также для изменения процесса обмена можно использовать обычные события, например, OnBeforeIBlockElementUpdate или OnBeforeProductAdd. В обработчике, чтобы определить, что событие вызвано именно во время обмена с 1С, я использую такое костыльное условие:

if (isset($_GET['type'], $_GET['mode']) && $_GET['type'] === 'catalog' && $_GET['mode'] === 'import') {
    // ...
}

Ну и, если ничего нельзя решить событиями, всегда можно полностью изменить процесс обмена, скопировав и изменив файл /bitrix/admin/1c_exchange.php, компонент bitrix:catalog.import.1c и класс CIBlockCMLImport.

Отключение проверки источника запроса

Как и в случае с выгрузкой товаров, при импорте товаров есть проверка источника запроса. Можно отключить её следующим кодом:

// old school:
COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y"); 
// d7 style:
BitrixMainConfigOption::set("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y");

Экспорт заказов в 1С

Обмен заказами начинается с авторизации с помощью логина и пароля, который указали в настройках обмена. После авторизации сайт выдает ID сессии, URL: /bitrix/admin/1c_exchange.php?type=sale&mode=checkauth.

После получения ID сессии идёт инициализация обмена, URL: /bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=ID_Сессии. На этом этапе сайт отдаёт настройки обмена со стороны сайта.

Для получения списка заказов запрашивается URL /bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=ID_Сессии. Выгружаются заказы с полями EXTERNAL_ORDER = «N», UPDATED_1C = «N» и обновившиеся после последней успешной выгрузки в 1С (это проверяется по времени из свойства «last_export_time_committed_/bitrix/admin/1c_excha» модуля sale).


Флаг EXTERNAL_ORDER указывает, что заказ создан в 1С и его выгрузка в 1С не требуется.

Флаг UPDATED_1C после успешного импорта из 1С на сайте устанавливается в «Y» и такие заказы не участвуют в дальнейших экспортах до их обновления на сайте. Во время обновлений заказов на сайте UPDATED_1C устанавливается в «N».

После обработки заказов 1С для завершения обмена запрашивает URL /bitrix/admin/1c_exchange.php?type=sale&mode=success&sessid=ID_Сессии. При этом в свойство «last_export_time_committed_/bitrix/admin/1c_excha» модуля sale записывается время запроса списка заказов (НЕ текущее время, т.к. с момента запроса заказов до их обработки могли добавиться заказы и они попадут в следующую выгрузку с сайта).

Модификация

В экспорте заказов участвуют файл /bitrix/admin/1c_exchange.php, компонент bitrix:sale.export.1c и класс CSaleExport. Какие-либо события здесь отсутствуют, поэтому для модификации этого процесса нужно заменить компонент на свой, создать класс-наследник CSaleExport и заменить вызовы в компоненте на него. В последних версиях Битрикс этот класс стал относительно читабельным, в старых там была просто простыня из php и «xml».

Отключение проверки источника запроса

С версии 15.5 добавлена дополнительная проверка и если вызвать просто /bitrix/admin/1c_exchange.php?type=sale&mode=query, то получим ошибку «failure Ошибка проверки источника запроса. Обновите модуль обмена». Если нет желания возиться с sessid, то можно отключить проверку источника запроса, для этого нужно выполнить:

// old school:
COption::SetOptionString("sale", "secure_1c_exchange", "N");
// d7 style:
BitrixMainConfigOption::set("sale", "secure_1c_exchange", "N");

Статья будет дополняться по мере появления новой информации и вдохновения.


Также полезно почитать:

  • Алгоритм выгрузки данных на сайт
  • Протокол обмена между системой «1С:Предприятие» и сайтом
  • Подробнейшая документация класса CIBlockCMLImport

Эта статья предназначена для тех, кто уже представляет себе механизм обмена заказами между 1С и Битрикс. Задача: отладить В ней вы найдете этапы отладки обмена заказов, а также в удобном формате приведены запросы, которые можно использовать при отладке, подставляя в них свои значения имени файла и sessid. Если вам необходимо подробное описание механизм обмена, то он есть в другой статье.

Для отладки обмена заказами между 1С и сайтом на Битрикс необходимо удостоверится, что 1С может авторизоваться на сайте, 1С присылает правильные запросы, запросы корректно обрабатываются на стороне сайта, приходит корректный xml.

Проверка авторизации

Если 1С присылает запросы на сайт (для этого нужно посмотреть лог запросов), то этот этап можно пропустить.

Если запросов нет, то обычно причиной этого могут быть проблемы с авторизацией 1С на сайте.

В настройках обмена внутри 1С последовательно проверяем:

  1. адрес подключения к сайту. В большинстве случаев адрес будет вида:
https://<адрес_сайта>/bitrix/admin/1c_exchange.php
  1. логин и пароль пользователя битрикс, под которыми 1С подключается;
  2. правильность адреса прокси-сервера (если задан).

В настройках обмена внутри Битрикс проверяем:

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

Зачастую бывает, что внутри 1С указан пользователь, который является администратором сайта. Рекомендую завести отдельного пользователя и группу для выгрузки 1С, например, 1c_exchange. Во-первых, права группы «администраторы» избыточны для выгрузки. Во-вторых, при дальнейших отладках вы сразу будете видеть, что та или иная сущность (например, элемент инфоблока) была изменена пользователем, который отвечает за обмен. Это очень удобно.

Ошибка «failure Обновите модуль обмена»

Если на любой запрос, например, mode=checkauth, 1С получает ответ: «failure Обновите модуль обмена», то самыми распространенными причинами могут быть:

Старая 1С стучится по протоколу https

Самый простой вариант решения — выделить на сайте отдельный поддомен без https, на который и направить 1С. Что-то вроде подойдет:

https://1c.<адрес_сайта>/bitrix/admin/1c_exchange.php

В запросе от 1С указан неверный sessid или не указан вообще.

Проверяем, что sessid, который отдается в первом запросе блока, используется во всех последующих запросах блока, а также, что он там есть.

Блок запросов всегда начинается с mode=checkauth и заканчивается запросом перед следующим mode=checkauth.

Проверяем, что 1С присылает правильные запросы и что сайт их корректно обрабатывает

Чтобы проверить, какие запросы присылает 1С, нужно посмотреть лог запросов к сайту. Например, настроив access-логи на сервере. Для удобства можно 1С направить на отдельный поддомен, на который будет ходить только 1С. Так в файле логов будут только запросы от 1С. Далее открываем файл логов и смотрим. В нем должны быть запросы, которые приведены ниже. Порядок запросов также должен совпадать.

Для проверки корректности ответов на запросы нужно посмотреть лог выгрузки внутри 1С — там обычно собираются ответы. Либо, выполнить запросы вручную в браузере. Обычно это оказывается наиболее удобным способом. Ответы на любой запрос обычно будут содержать «success», «progress» или «failure» (кроме запроса mode=init — у него ответ выглядит примерно так: zip=yes file_limit=204800). Пустых ответов на запрос быть не должно.

Заказы из Битрикс в 1С

https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=<id_сессии_из_первого_запроса>
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=<id_сессии_из_первого_запроса>
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=success&sessid=<id_сессии_из_первого_запроса>

В ответ на запрос 3 должна сформироваться xml со списком заказов, которые были созданы / изменены после последнего обмена (блока таких же запросов). Если новых / измененных заказов нет, то Битрикс отдаст пустую xml со строкой заголовка. Чтобы xml была не пустой нужно перед выполнением запросов изменить текущий заказ или создать новый. Если вы получаете xml в ответ, то сайт обрабатывает запросы корректно.

Заказы из 1С в Битрикс

https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=<id_сессии_из_первого_запроса>

После этого запроса из папки /upload/1c_exchange/ удаляются файлы предыдущего обмена документами. Если вы проверяете запросы вручную, то после этого запроса вам нужно по указанному адресу положить свой файл (для этого предварительно можно на стороне 1С сделать выгрузку в файл).

https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=<имя_файла>&sessid=<id_сессии>
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=import&filename=<имя_файла>&sessid=<id_сессии>

Запросы mode=file и mode=import могут повторятся несколько раз до получения ответа от сайта «success», либо до ошибки. Как только на запрос mode=import получен ответ «success», то на сайте должны обновиться заказы, которые были в xml. Это будет говорить о том, что обработка выгрузки заказа на сайте прошла успешно.

Проверяем, что XML корректный

Если все запросы корректные и проходят без ошибок, но при этом нужных обновлений в 1С или в Битриксе не происходит, то необходимо проверить xml на корректность и на присутствие в нем необходимых данных.

Понравилась статья? Поделить с друзьями:
  • Failure of the connection ошибка на пежо 308
  • Failure during update process fifa 23 ошибка
  • Failsafe prog bmw x5 e53 расшифровка ошибки
  • Failed to start the virtual machine ошибка
  • Failed to start raise network interfaces ошибка