Створення RMA-системи на 1С-Бітрікс: розробка та впровадження
Повернення без системи — хаос. Клієнт телефонує або пише на загальну пошту, менеджер вручну шукає замовлення, домовляється про повернення, надсилає інструкції. Відстежити статус повернення неможливо, аналітики немає. Ми розробляємо RMA-системи на 1С-Бітрікс, які автоматизують цей процес: клієнт створює заявку на повернення через особистий кабінет, менеджер обробляє її в адміністративній частині, система відстежує статуси та ініціює повернення платежу. RMA-система скорочує час обробки повернення в 5 разів порівняно з ручним процесом. Бітрікс не має вбудованого RMA — його будують поверх модуля sale. Наші інженери мають 10+ років досвіду в розробці на Бітрікс та реалізували понад 50 проєктів з автоматизації повернень. Оцінимо ваш проєкт за 1 день: зв'яжіться з нами.
Чому RMA на Бітрікс?
Бітрікс — одна з найпоширеніших CMS в Україні, і багато інтернет-магазинів уже працюють на ній. Вбудованого модуля RMA немає, але платформа надає гнучкі інструменти: інфоблоки, користувацькі таблиці (HL-блоки), ORM, події та агенти. Завдяки цьому можна побудувати систему повернень, повністю інтегровану із замовленнями, кошиком, складом та платіжними шлюзами. Крім того, Бітрікс легко зв'язується з 1С через CommerceML, що дозволяє автоматично оновлювати залишки після повернення.
Юридичний контекст
Повернення товару регулюється статтями 18, 25 Закону про захист прав споживачів. Дві основні підстави:
- Неналежна якість (ст. 18) — дефект, брак. Строк пред'явлення — у межах гарантійного терміну.
- Належна якість (ст. 25) — «передумав». Тільки для непродовольчих товарів, 14 днів, товар не повинен бути у вжитку.
У системі RMA обидві підстави повинні бути представлені окремими типами заявок з різними полями та процесами.
Модель даних
Основна таблиця RMA-заявок будується на ORM Бітрікс:
class RmaRequestTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_local_rma_request'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new StringField('NUMBER'), // RMA-YYYYMMDD-XXXX new IntegerField('ORDER_ID'), // b_sale_order new IntegerField('USER_ID'), new EnumField('TYPE', ['values' => ['DEFECT', 'EXCHANGE', 'REFUND']]), new EnumField('STATUS', ['values' => ['NEW', 'UNDER_REVIEW', 'APPROVED', 'REJECTED', 'RETURNED', 'REFUNDED', 'CLOSED']]), new TextField('DESCRIPTION'), // Опис причини від клієнта new StringField('DEFECT_PHOTO_IDS'), // JSON-масив b_file ID new StringField('REJECT_REASON'), // Причина відмови (якщо REJECTED) new FloatField('REFUND_AMOUNT'), // Сума до повернення new IntegerField('RESPONSIBLE_ID'), // Відповідальний менеджер new DatetimeField('CREATED_AT'), new DatetimeField('UPDATED_AT'), new DatetimeField('DEADLINE_AT'), // Деадлайн обробки (14 днів) ]; } } Додаткові таблиці: RmaItemTable (позиції повернення) та RmaHistoryTable (історія статусів) — будуються аналогічно. Позиції повернення зв'язуються із замовленням через ORDER_BASKET_ID, а історія фіксує всі зміни із зазначенням користувача та коментаря.
Генерація номера RMA
Кожна заявка отримує унікальний номер формату RMA-YYYYMMDD-XXXX, де XXXX — порядковий номер. Генерація проста: береться останній ID з таблиці та інкрементується. Номер створюється автоматично при збереженні заявки.
Створення заявки з особистого кабінету
Сторінка /personal/rma/create/?order_id=12345 відображає список товарів замовлення та дозволяє вибрати, які позиції повернути, вказати причину, завантажити фото дефекту. Приклад компонента:
class RmaCreateComponent extends \CBitrixComponent { public function executeComponent(): void { $orderId = (int)$this->arParams['ORDER_ID']; if (!$orderId || !$this->isOrderOwner($orderId)) { LocalRedirect('/personal/orders/'); } $order = \Bitrix\Sale\Order::load($orderId); $basket = $order->getBasket(); $items = []; foreach ($basket as $item) { $daysSinceOrder = (new \DateTime())->diff(new \DateTime($order->getField('DATE_INSERT')))->days; if ($daysSinceOrder > 365) continue; $items[] = [ 'BASKET_ID' => $item->getId(), 'PRODUCT_ID' => $item->getProductId(), 'NAME' => $item->getField('NAME'), 'QUANTITY' => $item->getQuantity(), 'PRICE' => $item->getPrice(), 'CAN_REFUND' => $daysSinceOrder <= 14, ]; } if ($this->request->isPost() && check_bitrix_sessid()) { // Валідація та збереження заявки $this->createRmaRequest($orderId, $items); } $this->arResult['ORDER'] = $order; $this->arResult['ITEMS'] = $items; $this->includeComponentTemplate(); } } Після відправлення заявки менеджер отримує сповіщення, а клієнт — посилання на статус.
Як прискорити обробку повернень?
Автоматизація скорочує ручну працю: менеджеру не потрібно шукати замовлення, перевіряти строки, розраховувати суму. Система сама перевіряє допустимість повернення за датою, статусом замовлення та типом товару. Схвалення або відмова відбувається в один клік, а при позитивному рішенні автоматично ініціюється повернення грошей через платіжний шлюз (ЮKassa, CloudPayments). Все це скорочує час обробки з 2 днів до 1 години.
Порівняння: ручний процес vs RMA
| Критерій | Ручний процес | RMA-система |
|---|---|---|
| Час обробки заявки | до 2 днів | 1 година |
| Помилки в розрахунках | часті | виключені |
| Аналітика по поверненнях | немає | вбудована |
| Інтеграція з поверненням платежу | вручну | автоматично |
| Сповіщення клієнта | вручну | автоматичні |
Що входить в роботу
Ми надаємо повний цикл розробки RMA-системи під ключ:
- Аналіз бізнес-процесів та проектування моделі даних
- Розробка особистого кабінету клієнта (створення, перегляд статусів, завантаження фото)
- Адміністративний інтерфейс для менеджерів (фільтри, масові дії, історія)
- Інтеграція з платіжними системами (рефанд) та службами доставки
- Підключення до 1С через CommerceML для синхронізації залишків
- Документація, навчання персоналу, гарантійна підтримка 1 рік
Строки розробки
| Варіант | Склад | Строк |
|---|---|---|
| Базова RMA | Форма заявки, список в ОК, статуси | 8–12 днів |
| З обробкою в адмінці | Інтерфейс менеджера, історія, сповіщення | 12–18 днів |
| Повна система | + Повернення платежів, інтеграція зі складом | 18–28 днів |
Вартість розраховується індивідуально — оцінка займає 1 день. Наша команда має 10+ років досвіду в розробці на 1С-Бітрікс та 50+ успішних проєктів. Отримайте консультацію: ми зв'яжемося з вами протягом години.







