Создание 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+ успешных проектов. Получите консультацию: мы свяжемся с вами в течение часа.







