- Модуль обмена для 1С с Битрикс24, он обменивается по rest api
- Модуль обмена для 1С с интернет-магазином (ИМ) Битрикс, он обменивается xml файлами
Чтобы посмотреть какие запросы отправляет 1С и что получает в ответ, необходимо включить отладку на стороне 1C.
- Синхронизация с Битрикс24 > Общие настройки
- Поставить галочку "Режим отладки"
Посмотреть файлы xml выгрузки из 1С (для ИМ)
Файлы xml выгрузки из 1С загружаются в папку на сайте /upload/1c_catalog/
Перед каждым этапом (итерации) обмена данная папка очищается и вней создаются новые файлы.
В файле /bitrix/php_interface/dbconn.php объявляем константу
define("BX_CATALOG_IMPORT_1C_PRESERVE", true); |
Посмотреть файл экспорта заказов в 1С (для ИМ)
удобный скрипт, взят тут https://dev.1c-bitrix.ru/support/forum/forum6/topic99247/
сохранить себе на сервер
на странице скрипта выбираем нужный заказ, и скачивается xml, которая передается в 1с
<?php define("NO_AGENT_CHECK", true); define("NO_KEEP_STATISTIC", true); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if ( !$GLOBALS['USER']->IsAdmin() ) { die("Доступно только для администратора."); } CModule::IncludeModule('sale'); $arErrors = array(); if ( isset($_REQUEST['ORDER_ID']) || isset($_REQUEST['ORDER_ID_TEXT']) ) { $nOrder = ( (int)$_REQUEST['ORDER_ID_TEXT'] > 0 ? (int)$_REQUEST['ORDER_ID_TEXT'] : (int)$_REQUEST['ORDER_ID'] ); if ( $nOrder && CSaleOrder::GetByID($nOrder) ) { ob_end_clean(); header('Content-Type: text/html; charset=utf-8'); header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache'); header('Content-transfer-encoding: binary'); header('Content-Disposition: attachment; filename=order-'.$nOrder.'.xml'); header('Content-Type: application/x-unknown'); ob_start(); CSaleExport::ExportOrders2Xml(array('ID' => $nOrder)); $sXml = ob_get_clean(); echo strtr($sXml, array('encoding="windows-1251"' => 'encoding="utf-8"')); exit(); } else { $arErrors[] = "Заказ №{$nOrder} не найден."; } } $arOrdersID = array(); $dbOrders = CSaleOrder::GetList(array("ID" => "DESC"), array(), false, array('nTopCount' => 200), array('ID', 'DATE_INSERT')); while ($arOrder = $dbOrders->Fetch()) { $arOrdersID[] = $arOrder; } ?> <!DOCTYPE html> <html> <head> <title>Просмотр XML выгрузки для заказа</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style> html, body { position: relative; height: 100%; } body { background: #f1f1f1; padding: 0; margin: 0 } .content-table { position: relative; width: 100%; height: 100%; } .content-cell { position: relative; text-align: center; vertical-align: middle; } .center-content { position: relative; box-shadow: 0 0 2px #555; padding: 20px; border-radius: 4px; background: #fff; display: inline-block; text-align: left; } </style> </head> <body> <table class="content-table"> <tr> <td class="content-cell"> <div class="center-content"> <?//echo '<pre>'.var_export($_REQUEST, 1).'</pre>';?> <form action="" method="post" style="line-height: 24px;"> Форма генерирует XML файл заказа, такой же как при экспорте <br />заказов с сайта в 1C, но в кодировке utf-8 для просмотре в браузере <br /><br /> <?if ( $arErrors ){//Ошибки echo implode('<br />', $arErrors).'<br />'; }?> Выберите из списка (200 последних ID): <select name="ORDER_ID" style="cursor: pointer;"> <option value="">Выберите номер заказа</option> <?foreach ( $arOrdersID as $arOrder ){ echo '<option value="'.$arOrder['ID'].'">'.$arOrder['ID'].' ('.$arOrder['DATE_INSERT'].')</option>'; }?> </select> <br />Или введите номер заказа вручную: <input type="text" name="ORDER_ID_TEXT" value="" /> <br /><button type="submit" name="SUBMIT" value="Y" style="cursor: pointer;">Сгенерировать XML</button> <br /><br />* Полученный XML файл можно открыть в Google Chrome, <br />файл будет открыт с XML форматированием. </form> </div> </td> </tr> </table> </body> </html> |
Конфигуратор 1С, отладка синхронизации
Обмен происходит в фоновом режиме, поэтому надо "включить отладку фоновых заданий"
Отладка > Подключения > автоматические подключения > фоновые задания (поставить галку)