Увидеть файл заказов который передаст Битрикс в 1С

Просмотров: 26688

Для диагностики обмена заказов, интернет-магазина на 1С Битрикс с 1С Управление Торговлей, нужно увидеть xml файл с заказами который сформирует сайт для следующей передачи в 1С. Есть два способа

Полуофициальный способ

Заключается в скачивании файла диагностики с официальной документации Битрикс. Просто закидываете файл в корень сайта, авторизуетесь администратором и открыаете этот файл в браузере

Увидите вот такое окно: в котором можно открыть XML файл заказов

Скачать скрипт диагностики

Но данный скрипт не работает с Битрикс редакций выше 14.4. Лично у меня, выдает вот такую адракадабру. Дело в том, что скрипт не учитывет новый функционал заказов

Думаем как 1С УТ

По сути, метод заключается в иммитации работы 1С. Управление торговлей, просто выполняет ряд запросов к сайту, к скрипту 1c_exchange.php. В ответ получает xml файл с заказами в виде потоковых данных. Нам нужно, просто сымитировать эти запросы.

В командной PHP строке выполняем команды:
COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y" ); COption::SetOptionString("sale", "secure_1c_exchange", "N" );

Заходим на сайт администратором и последовательно выполняем запросы, не меняя окна браузера

http://ВАШ_САЙТ/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
http://ВАШ_САЙТ/bitrix/admin/1c_exchange.php?type=sale&mode=init
http://ВАШ_САЙТ/bitrix/admin/1c_exchange.php?type=sale&mode=query

После этого получим xml заказа прямо в окне браузера

Если не получилось по второму способу

Если вместо xml выдало ошибку доступа. Нужно чуть изменить ссылки. Однако скажу точно (проверено прямо перед написанием заметки). У меня второй способ сработал сразу на версии битрикс 16.5 со всеми обновлениями на 10 ноября 2016 года

Однако если нет:
Сначала нужно выполнить
http://ВАШ_САЙТ/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
В четвертой строке сайт вернет токен(session id)


затем
http://ВАШ_САЙТ/bitrix/admin/1c_exchange.php?type=sale&mode=init + "&" + токен + "&version=2.08"

затем
http://ВАШ_САЙТ/bitrix/admin/1c_exchange.php?type=sale&mode=query + "&" + токен

Вот в общем-то и все. Диагностируйте с удовольствием!

Михаил Базаров 14.11.2016
Временное включение старого режима обмена
Выполнить PHP команду

Цитата


COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y" ;) ; COption::SetOptionString("sale", "secure_1c_exchange", "N" ;) ;
Алексей Микрюков 23.01.2017
НА 15.5.9 не работает.
И еще пишите более подробно а то не понятно что такое (+ "&" + токен + "&version=2.08" ). Вот мне как новичку хоть об стену убейся ничего не понятно
Михаил Базаров 24.01.2017
Цитата
Алексей Микрюков пишет:
НА 15.5.9 не работает.
И еще пишите более подробно а то не понятно что такое (+ "&" + токен + "&version=2.08" ). Вот мне как новичку хоть об стену убейся ничего не понятно
Первый способ работает на 15-ой и на 14-ой версии. Что-то делаете не так.
А по поводу более понятного написания, учту
Сергей Милин 15.03.2018
В новых версиях старый эмулятор практически бесполезен даже с переводом на классическую схему работы.
Пытался разобраться. кое-как вкурил что в этом мусоре высматривать благодаря статье тут, потом перелапатя кучу форумов.
Начал пробовать по вашему методу с токеном, в 17.8 - матерится на запрет доступа. Пришлось откапывать дистрибьютив 16 и лишь  тогда заработало и я победил проблему.

P.S В новых версиях вводить команду отката надо после каждого обмена т.к перепрыгивает на новую схему. а не один раз
Михаил Базаров 15.03.2018
Цитата
Сергей Милин написал:
В новых версиях старый эмулятор практически бесполезен даже с переводом на классическую схему работы.
Пытался разобраться. кое-как вкурил что в этом мусоре высматривать благодаря статье  тут , потом перелапатя кучу форумов.
Начал пробовать по вашему методу с токеном, в 17.8 - матерится на запрет доступа. Пришлось откапывать дистрибьютив 16 и лишь  тогда заработало и я победил проблему.

P.S В новых версиях вводить команду отката надо после каждого обмена т.к перепрыгивает на новую схему. а не один раз
Да, одноразовая метода. Проверил, обменялся с 1С и снова откатывать.
Николай Сухих 22.01.2019
Как вернуть заказам UPDATED_1C = "N" чтобы 1ц тоже выгрузила их после моих тестов?
Николай Сухих 22.01.2019
Цитата
Николай Сухих пишет:
Как вернуть заказам UPDATED_1C = "N" чтобы 1ц тоже выгрузила их после моих тестов?
Как то так: (:

Код
$dbSales = CSaleOrder::GetList(
    array(
        "ID" => "DESC"
    ),
    array(
        "UPDATED_1C" => "Y"
    )
);

while ($aSales = $dbSales->Fetch()) {
    $arFields = array(
        "UPDATED_1C" => "N"
    );
    CSaleOrder::Update($aSales["ID"], $arFields);
}
Сергей Кондратьев 11.07.2019
Есть обработка для 1С, которая позволяет посмотреть файл заказов: https://infostart.ru/public/1080600/