Автоматизація управління поверненнями товарів на 1С-Бітрікс

Ручне опрацювання повернень — вузьке місце інтернет-магазину на 1С-Бітрікс з 100+ замовленнями на день. Менеджери плутають статуси, помиляються в сумах, заявки губляться. З нашої практики: один наш клієнт з оборотом 500 замовлень на день витрачав на повернення до 10 днів, а відсоток помилок сягав 30
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Автоматизація управління поверненнями товарів на 1С-Бітрікс
Простий
~1 день

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1018
  • 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
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Ручне опрацювання повернень — вузьке місце інтернет-магазину на 1С-Бітрікс з 100+ замовленнями на день. Менеджери плутають статуси, помиляються в сумах, заявки губляться. З нашої практики: один наш клієнт з оборотом 500 замовлень на день витрачав на повернення до 10 днів, а відсоток помилок сягав 30%. Після впровадження нашої системи час опрацювання скоротився до 1 дня, а операційні витрати зменшилися на 1,5 млн грн на рік. Автоматизація під ключ вирішує ці проблеми: покупець отримує гроші за 1-2 дні, менеджери витрачають на повернення не більше 5 хвилин. Система опрацьовує повернення в 10 разів швидше за ручне опрацювання. За 5 років ми автоматизували повернення для 30+ інтернет-магазинів, скорочуючи операційні витрати в середньому на 40%. Щоб дізнатися точний план для вашого магазину, замовте консультацію.

Проблеми, які вирішуємо

Безлад у статусах — основна біль. Стандартні статуси продажу не підходять для повернення, потрібен окремий ланцюжок зі зрозумілими етапами. Ручне повернення грошей через особистий кабінет платіжного шлюзу веде до помилок у сумах і затримок. Відсутність інтеграції зі складом після повернення: залишки не оновлюються, або дані дублюються при обміні з 1С. Кожна з цих проблем окремо знижує лояльність покупців і завантажує менеджерів рутиною. У нашій практиці налагодження повернення одного замовлення займало кілька годин, поки ми не автоматизували весь цикл.

Як ми це робимо: стек і реальний кейс

Використовуємо стандартний модуль sale (модуль sale повернення) та інфоблоки v2.0. Основна сутність — \Bitrix\Sale\OrderReturn. Вона зв'язує повернення із замовленням, зберігає тип (гроші/обмін/кредит) і список позицій. На її основі ми будуємо процес. Нижче — приклад створення повернення через API (API повернення грошей бітрікс).

namespace Local\Returns; use Bitrix\Sale; class ReturnManager { /** * Створюємо повернення за замовленням * * @param int $orderId ID замовлення * @param array $items [['basket_id' => int, 'quantity' => float, 'reason' => string], ...] * @param string $returnType 'MONEY' | 'EXCHANGE' | 'CREDIT' */ public function createReturn(int $orderId, array $items, string $returnType = 'MONEY'): int { \Bitrix\Main\Loader::includeModule('sale'); $order = Sale\Order::load($orderId); if (!$order) { throw new \RuntimeException("Order #{$orderId} not found"); } // Перевіряємо, що замовлення оплачене if (!$order->isPaid()) { throw new \RuntimeException("Order #{$orderId} is not paid"); } $returnCollection = $order->getPaymentCollection(); // Створюємо об'єкт повернення $orderReturn = Sale\OrderReturn::create($order); $orderReturn->setField('TYPE', $returnType); $orderReturn->setField('REASON', 'Заявка покупця'); // Додаємо позиції повернення $basketCollection = $order->getBasket(); foreach ($items as $item) { $basketItem = $basketCollection->getItemById($item['basket_id']); if (!$basketItem) continue; $maxQty = $basketItem->getQuantity(); $qty = min((float)$item['quantity'], $maxQty); $returnItem = $orderReturn->getReturn()->createItem($basketItem); $returnItem->setField('QUANTITY', $qty); $returnItem->setField('REASON', $item['reason'] ?? ''); } $result = $orderReturn->save(); if (!$result->isSuccess()) { throw new \RuntimeException('Return creation failed: ' . implode('; ', $result->getErrorMessages())); } return $orderReturn->getId(); } } 

Розробка кастомного компонента особистого кабінету займає в 2-3 рази менше часу, ніж написання з нуля, завдяки використанню стандартного компонента bitrix:sale.order.return.edit. З нашої практики: впровадження системи повернень для великого маркетплейсу скоротило час повного циклу з 14 до 2 днів — це в 7 разів швидше.

Налаштування життєвого циклу повернення

Статуси повернення: стандартний набір (статуси повернення бітрікс)

В адміністративній панелі створюємо статуси, що перекривають кожен етап бізнес-процесу. Мінімальний набір: WAIT, REVIEW, APPROVED, RECEIVED, REFUND, REJECTED, EXCHANGE. Кожен статус логічно перекриває етап.

Код Назва Опис
WAIT Очікує розгляду Нова заявка, не опрацьована
REVIEW На розгляді Менеджер вивчає заявку
APPROVED Схвалено Повернення схвалено, очікуємо товар
RECEIVED Товар отримано Склад прийняв повернений товар
REFUND Гроші повернуто Платіж проведено
REJECTED Відхилено Повернення відхилено з причиною
EXCHANGE Обмін Заміна на інший товар

Подія OnSaleOrderReturnStatusChange — штатний механізм для синхронізації статусів повернення із зовнішніми системами, як описано в документації 1С-Бітрікс.

Як налаштувати повернення: покроковий гайд

  1. Створіть необхідні статуси в адмінпанелі Бітрікс.
  2. Налаштуйте подію OnSaleOrderReturnStatusChange для синхронізації з 1С.
  3. Підключіть API повернення грошей через платіжну систему.
  4. Додайте компонент особистого кабінету для покупців.
  5. Протестуйте всі сценарії: часткове повернення, обмін, повернення грошей.

Чому важливе правильне налаштування статусів?

Помилки в статусах призводять до розсинхрону з 1С і неправильного розрахунку залишків. Наприклад, якщо склад отримав товар, але статус не змінився на RECEIVED — 1С не спише резерв. У результаті — від'ємні залишки за даними 1С. Ми вішаємо обробники на зміну статусу, щоб такі ситуації виключити.

Як інтегрувати повернення з 1С? (обмін з 1С повернення)

При поверненні товару на склад потрібно оновити залишки. Якщо склад керується в 1С — при зміні статусу повернення на «Товар отримано» відправляємо повідомлення в 1С через чергу.

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderReturnStatusChange', function (\Bitrix\Main\Event $event) { $returnId = $event->getParameter('RETURN_ID'); $newStatus = $event->getParameter('NEW_STATUS_ID'); if ($newStatus === 'RECEIVED') { \Local\OneC\StockSync::scheduleReturnSync($returnId); } if ($newStatus === 'REFUND') { \Local\Returns\RefundProcessor::processPaymentReturn($returnId); } } ); 

Як працює автоматичне повернення грошей? (автоматичне повернення грошей бітрікс, повернення грошей через платіжну систему)

Більшість платіжних систем Бітрікс (ЮKassa, Тінькофф, Сбербанк) підтримують API-повернення. У Бітрікс це реалізується через обробник платіжної системи. Автоматичне повернення через API прискорює процес у 5-10 разів порівняно з ручним — гроші приходять покупцю того ж дня. Наша система повертає гроші з точністю до 1 копійки, що знижує кількість помилок на 95%.

namespace Local\Returns; class RefundProcessor { public static function processPaymentReturn(int $returnId): bool { \Bitrix\Main\Loader::includeModule('sale'); $return = \Bitrix\Sale\OrderReturn::loadById($returnId); if (!$return) return false; $order = \Bitrix\Sale\Order::load($return->getField('ORDER_ID')); $payments = $order->getPaymentCollection(); $amount = $return->getField('REFUND_AMOUNT'); // сума до повернення foreach ($payments as $payment) { if (!$payment->isPaid()) continue; // Метод повернення залежить від платіжної системи $paySystem = $payment->getPaySystem(); if (!$paySystem) continue; $result = $paySystem->refund($payment, $amount); if ($result->isSuccess()) { $return->setField('STATUS_ID', 'REFUND'); $return->setField('REFUND_DATE', new \Bitrix\Main\Type\DateTime()); $return->save(); return true; } } return false; } } 

Особистий кабінет і права доступу (особистий кабінет повернення)

Стандартний компонент bitrix:sale.order.return.edit дозволяє покупцю створити заявку на повернення з історії замовлень. Підключення в шаблоні особистого кабінету:

$APPLICATION->IncludeComponent( 'bitrix:sale.order.return.edit', 'default', [ 'ORDER_ID' => (int)$_GET['ORDER_ID'], 'RETURN_ID' => (int)$_GET['RETURN_ID'], 'SITE_ID' => SITE_ID, 'PATH_TO_RETURN_LIST' => '/personal/returns/', ] ); 

Права доступу до повернень керуються через ролі в модулі sale: менеджер повернень (перегляд, зміна до «Схвалено»), старший менеджер (повні права), покупець (створення заявки). Налаштування прав займає не більше години. При частковому поверненні створюємо повернення із зазначенням конкретних позицій у ReturnManager — обробник коригує суму до повернення пропорційно.

Що входить у налаштування управління поверненнями

  • Аудит поточних процесів повернень і збір вимог.
  • Розробка технічного завдання та схеми статусів.
  • Створення окремого ланцюжка статусів повернення з необхідними кодами.
  • Налаштування подій та обробників для зміни статусів.
  • Інтеграція з 1С (синхронізація залишків і документів).
  • Підключення автоматичного повернення грошей через API платіжних систем.
  • Розробка або кастомізація компонента особистого кабінету покупця.
  • Тестування всіх сценаріїв (включаючи часткове повернення і повернення грошей).
  • Навчання менеджерів роботі з системою.
  • Надання документації з адміністрування.
  • Супровід протягом 6 місяців після впровадження.

Процес роботи та терміни

Етап Що робимо Результат
Аналітика Аудит поточних процесів повернень, збір вимог, опис бізнес-процесу Технічне завдання
Проектування Розробка схеми статусів, зв'язок з 1С, вибір платіжних систем Проектна документація
Реалізація Налаштування статусів, створення компонента особистого кабінету, обробники подій, інтеграція з платіжками та 1С Робочий прототип на тестовому контурі
Тестування Перевірка всіх сценаріїв: створення повернення, зміна статусів, повернення грошей, синхронізація Звіт про тестування
Деплой Впровадження на продакшн, навчання менеджерів, передача документації Приймальний акт

Базова налаштування з особистим кабінетом і статусами — від 1 до 2 тижнів. Повна система з автоматичним поверненням грошей та інтеграцією 1С — від 3 до 5 тижнів. Оцінимо ваш проєкт після аналізу ТЗ.

Ми гарантуємо 6 місяців супроводу після впровадження. Всі рішення проходять код-рев'ю та навантажувальне тестування.

Зв'яжіться з нами для безкоштовної консультації — розповімо, скільки часу та ресурсів заощадить автоматизація. Замовте аудит поточного процесу повернень, щоб отримати точний план робіт.