Перейти к содержимому

Обмен заказами с 1С - выгрузка на сайт и обратно

Обмен заказами - вторая по объёму задача интеграции после каталога: 303 вопроса из собранных. Здесь собраны решения по ней.

Что общего у этих задач

Заказ ходит в обе стороны. Сайт отдаёт 1С новые заказы, 1С возвращает по ним статус, оплату и отгрузку. Это отличает обмен заказами от обмена каталогом, где поток односторонний, и добавляет главный источник ошибок: два хранилища правят один объект.

Инициатор по-прежнему 1С. Она подключается к тому же 1c_exchange.php, только с типом sale вместо catalog. Запустить выгрузку заказов со стороны сайта нечем, расписание живёт в узле обмена 1С.

Заказ сопоставляется по номеру, товары внутри него - по внешнему коду. Разъехавшийся код товара не ломает заказ целиком: строка приезжает как неопознанная позиция, и заказ в 1С встаёт с ошибкой подбора номенклатуры.

Правки заказа спорят с обменом. Менеджер на сайте и оператор в учётной системе легко меняют один документ одновременно, и правило «чья правка главнее» согласуют до запуска обмена, а не после первой потери данных.

Решения подтемы

Частые вопросы

Почему заказы дублируются в 1С?

Сопоставление идёт по номеру заказа. Если на сайте включена своя нумерация или номер меняется после создания, 1С не находит прежний заказ и заводит новый. Номер должен присваиваться один раз и не меняться.

Можно ли выгружать заказы по одному, а не пачкой?

Размер пачки задаётся настройкой модуля, и минимум равен единице. Но обмен всё равно инициирует 1С: получить заказ на сайте по требованию нельзя, можно только уменьшить объём одного сеанса.

Где лежит лог обмена заказами?

Там же, где лог каталога, в /upload/1c_exchange/, но пишется он только при включённом протоколировании в настройках модуля продаж. По умолчанию лог заказов выключен.

Почему статус заказа не меняется после обмена?

Статусы сопоставляются по внешнему коду, а не по названию. Статус, заведённый на сайте руками, внешнего кода не имеет, и 1С в него не попадает.

Связанные темы

Первоисточники