Сквозная интеграция возвратов между 1С и Битрикс: полный обмен

Интеграция возвратов с 1С 1С-Битрикс
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Сквозная интеграция возвратов между 1С и Битрикс: полный обмен
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    734
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

Интеграция возвратов с 1С 1С-Битрикс

Мы разрабатываем и интегрируем системы обработки возвратов, которые автоматизируют взаимодействие между Битриксом и 1С. Когда покупатель оформляет возврат на сайте, в бэк-офисе нужно создать несколько связанных документов: сторнирование реализации, акт о расхождении, корректировочный счёт-фактура. Если Битрикс и 1С работают независимо — всё это делается вручную, а вероятность расхождений остатков и взаиморасчётов растёт с каждой неделей, влияя на прибыльность бизнеса.

Мы реализуем интеграцию возвратов как отдельный контур внутри обмена 1С–Битрикс, потому что стандартный модуль sale обменивается заказами, а не корректировочными документами. Их нужно описывать отдельно и явно. За более чем 10 лет опыта мы реализовали сотни таких интеграций для магазинов разного масштаба.

Как устроен возврат в Битрикс

Возврат в Битрикс — объект класса \Bitrix\Sale\Payment\PaymentReturn в контексте платежа или \Bitrix\Sale\Shipment\ShipmentReturn в контексте отгрузки. С точки зрения БД это записи в таблицах:

  • b_sale_order_return — заявка на возврат
  • b_sale_order_return_item — позиции возврата
  • b_sale_order_return_shipment — связь с отгрузкой

Статусы возврата (RETURN_STATUS): NEW, PROCESSED, COMPLETED, REJECTED. Триггером для передачи в 1С должен служить переход в COMPLETED — до этого момента данные могут меняться.

Схема обмена

Стандартный модуль bitrix.1c передаёт заказы через sale.order в CommerceML 2. Возвраты в CommerceML не описаны — это кастомный узел, который нужно добавить в схему самостоятельно.

Битрикс: возврат переходит в COMPLETED → Обработчик события OnSaleReturnComplete → Формирование XML-узла <Возврат> → Запись в очередь обмена (b_agent / кастомная таблица) → Следующий сеанс обмена с 1С → 1С создаёт документ "Возврат товаров от покупателя" → Подтверждение из 1С → статус возврата обновляется 

Используйте событие OnSaleReturnComplete из модуля sale:

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleReturnComplete', function (\Bitrix\Main\Event $event) { $return = $event->getParameter('ENTITY'); ReturnExchangeQueue::push($return->getId()); } ); 

XML-структура для передачи в 1С

1С работает с CommerceML, но возвраты удобнее передавать отдельным узлом внутри <КоммерческаяИнформация>:

<Возврат> <Ид>RETURN-{return_id}</Ид> <НомерДокумента>R-{return_id}</НомерДокумента> <Дата>{date}</Дата> <ЗаказИд>{order_id}</ЗаказИд> <Контрагент> <Ид>{user_id}</Ид> <Наименование>{user_name}</Наименование> </Контрагент> <Товары> <Товар> <Ид>{product_id}</Ид> <Наименование>{product_name}</Наименование> <Количество>{qty}</Количество> <ЦенаЗаЕдиницу>{price}</ЦенаЗаЕдиницу> <Сумма>{sum}</Сумма> </Товар> </Товары> <СуммаВозврата>{total}</СуммаВозврата> <Причина>{reason}</Причина> </Возврат> 

На стороне 1С в конфигурации описывается обработчик, который читает этот узел и создаёт документ «Возврат товаров от покупателя» с правильной привязкой к исходной реализации по ЗаказИд.

Синхронизация остатков после возврата

После успешного проведения возврата в 1С остатки обновляются. Важно, чтобы Битрикс получил этот сигнал и обновил b_catalog_store_product. Стандартный обмен остатками (offers.xml) это сделает при следующем сеансе, но если сеансы редкие — нужен отдельный запрос:

// 1С вызывает URL после проведения возврата // /bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth&return_confirm=Y&return_id=123 $returnId = (int)$_GET['return_id']; ReturnSyncService::updateStocksFromReturn($returnId); 

В updateStocksFromReturn — прямое обновление b_catalog_store_product через \Bitrix\Catalog\StoreProductTable с вызовом \Bitrix\Catalog\StoreBatchService при необходимости пересчёта партий.

Обратная передача статуса

После создания документа в 1С необходимо вернуть в Битрикс подтверждение:

Ситуация Статус в Битрикс
Документ проведён в 1С COMPLETED, флаг 1C_SYNCED = Y
Позиций нет в наличии для сторно ERROR_1C, уведомление менеджеру
Возврат отклонён в 1С REJECTED, комментарий из 1С

Обновление статуса на стороне Битрикс:

$return = \Bitrix\Sale\OrderReturn::load($returnId); $return->setField('STATUS', 'COMPLETED'); $return->setField('COMMENTS', '1С: документ #' . $doc1cId); $return->save(); 

Кейс: оптовый поставщик, 150+ возвратов в месяц

Клиент — дистрибьютор строительной химии. Возвраты приходили двумя путями: через ЛК дилера на сайте и напрямую от логистики. Проблема: бухгалтерия 1С не видела возвраты из сайта, проводила документы вручную с опозданием 3–5 дней. Это вело к неверным остаткам на складах Битрикс и конфликтам при последующих заказах.

Реализовали следующие шаги:

  1. Событие OnSaleReturnComplete пишет возврат в очередь local_1c_return_queue.
  2. Агент (каждые 10 минут) формирует XML и передаёт в конечную точку 1С через HTTP-запрос к стандартному обработчику обмена.
  3. 1С проводит документ, обновляет остатки, шлёт подтверждение на /api/1c/return-confirm/{returnId}.
  4. Вебхук в Битрикс обновляет статус возврата и переоценивает b_catalog_store_product для затронутых SKU.
Метрика До После
Задержка отражения возврата в 1С 3–5 дней < 15 минут
Расхождение остатков (еженедельная сверка) 8–12 позиций 0–1 позиция
Ручных операций в 1С ~150/мес < 5/мес (исключения)

Состав работ

  • Анализ конфигурации 1С: тип документа «Возврат товаров от покупателя», поля привязки к заказу
  • Разработка XML-схемы и PHP-генератора для Битрикс
  • Обработчик события OnSaleReturnComplete, очередь обмена
  • Вебхук-эндпоинт для подтверждения из 1С
  • Обновление остатков в Битрикс после подтверждения
  • Тестирование на нескольких сценариях: частичный возврат, возврат без отгрузки, возврат с несколькими складами

Сроки: базовая интеграция (передача возвратов, подтверждение) — 3–4 недели. С синхронизацией остатков в реальном времени и обработкой нештатных сценариев — 6–8 недель.

Наш подход к решению

Каждая задача требует индивидуального анализа и тщательного планирования. Мы не используем шаблонные решения — каждый проект адаптируется под конкретные требования и существующую инфраструктуру. Наша команда имеет опыт работы с проектами разного масштаба: от небольших магазинов до высоконагруженных платформ с миллионами операций в день.

Гарантии и поддержка

Мы даём гарантию на выполненную работу сроком на 12 месяцев. В течение этого периода исправляем любые возникающие проблемы бесплатно. После завершения проекта предоставляем полную документацию и обучение для вашей команды. Техническая поддержка доступна в течение 30 дней после запуска — мы поможем устранить любые вопросы и консультации.

Преимущества нашего подхода

Мы обеспечиваем комплексное решение, а не отдельные исправления. Каждый проект включает документирование, тестирование и обучение команды. Нашим клиентам нравится, что мы не просто выполняем работу, но и объясняем каждый шаг процесса, давая возможность вашей команде в будущем самостоятельно поддерживать систему. Со своей стороны, мы гарантируем помощь в течение года после завершения проекта.

Контакты и следующие шаги

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