Не выгружаются заказы в 1С - разбор причин
Заказы приходят на сайт, а в учётной системе не появляются. Разбираем причины в порядке убывания частоты.
С чего начать
Смотрим, какие заказы вообще подпадают под выгрузку:
use Bitrix\Sale\Internals\OrderTable;// признак выгрузки хранится у самого заказа, а не в журнале обмена
$rows = OrderTable::getList([ 'select' => ['ID', 'DATE_INSERT', 'STATUS_ID', 'PAYED', 'UPDATED_1C', 'VERSION_1C'], 'order' => ['ID' => 'DESC'], 'limit' => 20,])->fetchAll();foreach ($rows as $row) { printf("%-6s %-12s статус=%-3s выгружен=%s\n", $row['ID'], $row['DATE_INSERT']->format('d.m.Y'), $row['STATUS_ID'], $row['VERSION_1C'] ?: 'нет');}Пустой признак выгрузки означает, что заказ в учётную систему ещё не уезжал. Заполненный - что уезжал, и повторно его отдадут только при изменении.
Проверяем точку обмена и её ответ:
# заказы забирает та же точка обмена, но с другим типомcurl -s -u exchange1c:PASSWORD \ 'https://example.com/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth' | head -3curl -s -o /dev/null -w '%{http_code} %{size_download}\n' -u exchange1c:PASSWORD \ 'https://example.com/bitrix/admin/1c_exchange.php?type=sale&mode=query'Нулевой размер ответа при коде 200 - типичная картина пустого отбора: сайт отвечает, но отдавать ему нечего. Отказ по коду означает, что дело в правах или в закрытом адресе.
Снимаем признак выгрузки, чтобы отдать заказ повторно:
use Bitrix\Sale\Internals\OrderTable;
// пустая версия - заказ снова считается невыгруженнымOrderTable::update($orderId, ['VERSION_1C' => '', 'UPDATED_1C' => 'N']);// после этого ближайший обмен заберёт его как новый// правку делают точечно по одному заказу, а не пачкой по всей таблицеПризнак выгрузки - единственное, что отделяет уже отданный заказ от нового. Ручное снятие признака решает случаи, когда документ потерялся на стороне учётной системы, а сайт считает его отданным.
Причины
-
Заказы не подпадают под отбор выгрузки примерно 30% случаев
ПризнакСайт отвечает пустым документом, свежие заказы в нём отсутствуют.
ПроверкаСмотрим настройку отбора в узле обмена: статус, дату начала выгрузки, признак оплаты.
Что делатьРасширяем отбор в учётной системе: дата начала выгрузки и список статусов задаются именно там.
-
Заказ уже помечен выгруженным примерно 25% случаев
ПризнакОдин и тот же заказ не приходит повторно, хотя в учётной системе его нет.
ПроверкаСмотрим признак выгрузки у заказа: заполненная версия означает, что сайт его уже отдавал.
Что делатьСнимаем признак выгрузки у нужных заказов и повторяем обмен: сайт отдаст их заново.
-
Обрыв соединения на большом ответе примерно 20% случаев
ПризнакУчётная система сообщает о неполном файле, часть заказов приходит, часть нет.
ПроверкаСмотрим время выполнения и размер ответа: обрыв виден по журналу веб-сервера.
Что делатьСужаем период выгрузки и поднимаем предел времени выполнения на стороне сайта.
-
У пользователя обмена нет прав на заказы примерно 15% случаев
ПризнакКаталог выгружается нормально, заказы не приходят вовсе.
ПроверкаПроверяем роль пользователя обмена в модуле продаж: права на каталог её не заменяют.
Что делатьВыдаём группе пользователя обмена роль с доступом к заказам.
-
Обмен идёт только вручную примерно 10% случаев
ПризнакПри ручном запуске заказы приходят, по расписанию - нет.
ПроверкаСмотрим задание расписания на стороне учётной системы и его журнал.
Что делатьНастраиваем автоматический обмен в учётной системе: сайт сам инициировать выгрузку не умеет.
Частые вопросы
Как заставить сайт отдать заказ повторно?
Снять у него признак выгрузки. После этого ближайший обмен отдаст заказ заново, как новый.
Почему при обмене дублируются заказы?
Учётная система не находит соответствие по идентификатору и создаёт новый документ. Обычно это следствие переноса базы или смены узла обмена.
Кто инициирует выгрузку заказов?
Учётная система: она обращается к сайту и забирает документ. Сайт по своей инициативе ничего не отправляет.
Как выгрузить заказы с двух сайтов в одну базу?
Отдельными узлами обмена с разными адресами. Идентификаторы заказов при этом пересекаются, и различать их приходится по узлу.
Смежное
- Обмен заказами с 1С - оглавление подтемы
- Обмен заказами с 1С: выгрузка на сайт и возврат статусов - как это работает штатно
- Настройка обмена с 1С: точка обмена, доступ, порядок шагов - доступ и права обмена
- Обмен с 1С и HTTP - устройство обмена целиком
- Статусы заказа при обмене: возврат из 1С - обратное направление обмена
- Журнал обмена: как читать и что означают его сообщения - те же журналы для заказов
- Состав заказа и контрагенты при обмене: позиции, покупатели, дубли - когда заказ уехал, но собрался неверно
- Направления и режимы обмена заказами: кто кому и когда отдаёт - проверка направлений и режима обмена
- Обмен заказами изнутри: документ, связь, перезапись - что везёт документ и чем он опознаётся