- Модуль обмена для 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С, отладка синхронизации
Обмен происходит в фоновом режиме, поэтому надо "включить отладку фоновых заданий"
Отладка > Подключения > автоматические подключения > фоновые задания (поставить галку)