Здравствуйте!
Выполняем синхронизацию по документации Обмен заказами в формате CommerceML — Документация docs.cs-cart.ru 4.3.x
1 шаг Старт успешно выполняется. Выполняется запрос ваш_домен/exim_1c?type=catalog&mode=checkauth. Запрос возвращает куки.
2 шаг мы пропускаем, т.к. заказы из 1С не выгружаем.
3 шаг Загрузка заказов в 1С успешно выполняется. Выполняется запрос ваш_домен/exim_1c?type=sale&mode=query. В запросе передаем куки, полученные на первом шаге.
4 шаг передаем строку со словом “success” запросом ваш_домен/exim_1c?type=sale&mode=success. В запросе передаем куки, полученные на первом шаге. Получаем ответ от сайта “success”.
Проблема в том, что если повторно загружать заказы с сайта в 1С, будет загружаться тот же список заказов. Т.е. этот список постоянно растет и увеличивает объем передаваемых с сайта данных. Должен ли список заказов для выгрузки в 1С очищаться после выполнения 4 шага? Или же необходимо выполнить еще какое-то действие для выполнения очистки списка заказов для выгрузки в 1С?
В настройках модуля обмена установите выгрузку заказов “определенных статусов”. Когда 1С отправит новые статусы заказов на сайт, то такие заказы уже не будут выгружены в 1С при следующем запросе.
2 шаг мы пропускаем, т.к. заказы из 1С не выгружаем и статусы из 1С тоже
Значит надо в функции отправки данных сменить статус заказа - например, на “в обработке”. Соответственно, данный статус не выгружать при запросе заказов от 1С.
Примерно так:
в файле RusEximCommerceml.php
…/public_html/app/addons/rus_exim_1c/Tygh/Commerceml/
Найдите функцию exportDataOrders
Найдите там цикл, примерно такой:
foreach ($orders as $k => $data) {
$order_data = fn_get_order_info($data['order_id']);
$xml = self::dataOrderToFile($xml, $order_data, $lang_code);
}
Вставьте в него строку
if ($data['status'] == "O") {
fn_change_order_status($data['order_id'], 'E');
}
Где O - Статус Открыт (или любой другой)
E - статус, который будет выставлен после того, как 1С сделает запрос.
Должно сработать.