Налаштування обміну замовленнями між 1С та 1С-Бітрікс
Обмін замовленнями — двосторонній процес: сайт передає нові замовлення в 1С, 1С повертає оновлені статуси. Ключове питання при налаштуванні — маппінг статусів замовлень між системами, який у кожному проекті унікальний. Помилковий маппінг веде до того, що покупець бачить застарілий статус або, що гірше, отримує повідомлення «Замовлення виконано», поки товар ще на складі.
Передача замовлень з сайту в 1С
Замовлення передаються у форматі CommerceML у XML-файлі orders.xml. 1С забирає файл при черговому сеансі обміну. Налаштування на стороні Бітрікс:
Налаштування → Налаштування продуктів → Інтернет-магазин → Обмін замовленнями:
- Вивантажувати замовлення: увімкнути
-
Статуси для вивантаження: вибрати статуси, які повинні потрапляти в 1С. Зазвичай «Новий» (
N) та «Оплачений» (P). Скасовані та завершені замовлення передавати не потрібно — вони створюють зайве навантаження - Період: з дати останнього обміну — найбезпечніший варіант, не передає повторно вже оброблені замовлення
У XML замовлення передаються: реквізити покупця, позиції з кількістю та цінами, обрана доставка, властивості замовлення (адреса, телефон, коментар).
Маппінг статусів
Статуси в 1С та на сайті називаються по-різному і не завжди відповідають один до одного. Стандартний маппінг налаштовується в:
Магазин → Налаштування → Статуси замовлень → [статус] → Ідентифікатор в 1С
Приклад типового маппінгу для УТ 11:
| Статус в 1С | Код статусу Бітрікс | Опис |
|---|---|---|
| В роботі | P |
Прийнято, передано в обробку |
| Підготовлено до відвантаження | D |
Комплектується / Готово |
| Передано кур'єру | F |
Доставляється |
| Виконано | FF |
Доставлено, закрито |
| Скасовано клієнтом | C |
Скасовано |
Без правильного маппінгу 1С при оновленні статусу створить у журналі помилку «Невідомий статус», і оновлення не застосується.
Типові проблеми
Дублювання замовлень. Якщо сеанс обміну перервався після передачі файлу, але до отримання підтвердження від 1С — при наступному сеансі замовлення передадуться повторно. Захист: унікальний ідентифікатор замовлення в XML збігається з ACCOUNT_NUMBER сайту, 1С перевіряє наявність документа перед створенням.
Втрата властивостей замовлення. Нестандартні властивості (UTM-мітки, промокод, тип клієнта) не передаються через стандартний XML. Додаються через обробник події OnSaleOrderExport1C. Після додавання властивості переконатися, що в 1С реквізити для їх зберігання створені.
Розбіжність сум. 1С перераховує знижки за своїми правилами та отримує іншу підсумкову суму. Рішення: передавати підсумкові ціни позицій вже з урахуванням знижки, а знижку — як окремий рядок у позиціях замовлення.
Обмін замовленнями в реальному часі через події
Якщо потрібно, щоб замовлення потрапляло в 1С одразу при оформленні (без очікування наступного сеансу обміну) — використовувати REST API 1С або HTTP-запит в обробнику події OnSaleOrderSaved:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderSaved',
function(\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
if ($order->isNew()) {
\MyProject\Exchange\OrderPusher::push($order->getId());
}
}
);
Терміни налаштування
Налаштування обміну замовленнями з маппінгом статусів — 4–8 годин. З нестандартними властивостями та обробниками — 1–2 дні. З push-відправленням замовлень у реальному часі — +1 день.







