Кастомні статуси повернення: сценарії для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Кастомні статуси повернення: сценарії для 1С-Бітрікс
Простий
~1 день
Часті запитання

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

Етапи розробки

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

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

Заявка на повернення надійшла, менеджер ставить статус «Схвалено», але товар ще не відправлено, а 1С уже чекає проведення. Клієнт чекає гроші, склад не знає, що робити, і заявка зависає на тиждень. Без чіткої системи статусів повернення перетворюються на хаос: 15% заявок губляться, 30% обробляються довше 5 днів. Стандартний набір статусів з коробки — «Очікує», «Схвалено», «Відхилено» — не покриває реальних бізнес-сценаріїв. Ми налаштовуємо статуси так, щоб кожен крок відображав вашу логіку: від запиту документів до обміну або повернення грошей. У результаті час обробки скорочується на 30–40%, а клієнти отримують прозорий процес. Скорочення ручної обробки — до 30%, штрафи за прострочення повернень знижуються на 40%.

Чому стандартних статусів не вистачає?

Стандартний модуль інтернет-магазину пропонує лише кілька статусів повернення. Цього достатньо для простого магазину з поодинокими поверненнями. Але якщо у вас десятки замовлень на день, інтеграція з 1С і складський облік, потрібні кастомні статуси. Наприклад:

  • Статус «Потрібні документи» — коли клієнт не додав фото товару.
  • Статус «Товар в дорозі» — після схвалення, поки відправлення ще не дійшло.
  • Статус «Обмін» — замість повернення грошей клієнт обрав інший товар.

Порівняйте стандартний і кастомний набір у таблиці:

Характеристика Стандартний набір Кастомний набір
Кількість статусів 3–4 7–10
Сповіщення Тільки базові На кожну стадію з індивідуальним шаблоном
Обмеження переходів Проста послідовність Рольові правила (адмін/менеджер)
Інтеграція з 1С Ні Автоматична синхронізація статусів

Як кастомізація статусів повернення прискорює обробку заявок?

Кастомні статуси скорочують час обробки на 30–40%: менеджеру не потрібно гадати, що робити далі, а система автоматично направляє заявку потрібним маршрутом. Наприклад, при статусі «Потрібні документи» клієнту надходить лист із запитом, а менеджеру — нагадування перевірити відповідь. Це виключає ручні нагадування та втрату заявок. Порівняно зі стандартним процесом, кастомні статуси обробляють заявки вдвічі швидше.

Де живуть статуси повернення в базі даних?

Статуси повернення зберігаються в таблиці b_sale_order_return_status і керуються через клас \CSaleOrderReturnStatus. Поля статусу:

  • ID — рядковий ідентифікатор (WAIT, REVIEW, APPROVED тощо)
  • NAME — назва для відображення
  • DESCRIPTION — опис для внутрішнього використання
  • SORT — порядок відображення
  • COLOR — колір мітки в інтерфейсі (hex)
  • NOTIFY — прапорець: чи надсилати сповіщення покупцю при переході в цей статус
  • TEMPLATE — шаблон email-сповіщення

Як створити кастомні статуси через API?

// /local/install/return_statuses.php — скрипт встановлення статусів
$statuses = [
    [
        'ID'          => 'WAIT',
        'NAME'        => 'Очікує розгляду',
        'DESCRIPTION' => 'Заявка надійшла, не оброблена',
        'SORT'        => 100,
        'COLOR'       => '#f0ad4e',
        'NOTIFY'      => 'N',
    ],
    [
        'ID'          => 'REVIEW',
        'NAME'        => 'На розгляді',
        'DESCRIPTION' => 'Менеджер перевіряє заявку',
        'SORT'        => 200,
        'COLOR'       => '#5bc0de',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_REVIEW',
    ],
    [
        'ID'          => 'NEED_DOCS',
        'NAME'        => 'Потрібні документи',
        'DESCRIPTION' => 'Запитано додаткові документи або фото',
        'SORT'        => 250,
        'COLOR'       => '#d9534f',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_NEED_DOCS',
    ],
    [
        'ID'          => 'APPROVED',
        'NAME'        => 'Схвалено',
        'DESCRIPTION' => 'Повернення схвалено, очікуємо відправку товару',
        'SORT'        => 300,
        'COLOR'       => '#5cb85c',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_APPROVED',
    ],
    [
        'ID'          => 'RECEIVED',
        'NAME'        => 'Товар отримано',
        'DESCRIPTION' => 'Склад прийняв повернений товар',
        'SORT'        => 400,
        'COLOR'       => '#337ab7',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_RECEIVED',
    ],
    [
        'ID'          => 'REFUND',
        'NAME'        => 'Гроші повернено',
        'DESCRIPTION' => 'Платіж проведено',
        'SORT'        => 500,
        'COLOR'       => '#3c763d',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_REFUND',
    ],
    [
        'ID'          => 'EXCHANGE',
        'NAME'        => 'Обмін',
        'DESCRIPTION' => 'Замість повернення грошей здійснено обмін',
        'SORT'        => 450,
        'COLOR'       => '#8a6d3b',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_EXCHANGE',
    ],
    [
        'ID'          => 'REJECTED',
        'NAME'        => 'Відхилено',
        'DESCRIPTION' => 'Повернення відхилено',
        'SORT'        => 600,
        'COLOR'       => '#a94442',
        'NOTIFY'      => 'Y',
        'TEMPLATE'    => 'RETURN_STATUS_REJECTED',
    ],
];

foreach ($statuses as $statusData) {
    $existing = \CSaleOrderReturnStatus::GetByID($statusData['ID']);
    if ($existing) {
        \CSaleOrderReturnStatus::Update($statusData['ID'], $statusData);
    } else {
        \CSaleOrderReturnStatus::Add($statusData);
    }
}

Покрокова інструкція:

  1. Визначте список потрібних статусів, їх ID, кольори та шаблони.
  2. Створіть скрипт, як у прикладі вище, і виконайте його при встановленні модуля.
  3. Для кожного статусу з NOTIFY='Y' створіть шаблон email-сповіщення в адміністративному інтерфейсі (Інтернет-магазин → Статуси повернень → шаблони листів) або програмно через мовні файли.
  4. Перевірте відображення статусів в особистому кабінеті покупця та в адміністративній панелі.

Як реалізувати матрицю переходів та захист від помилок?

Не всі переходи між статусами мають бути дозволені. Наприклад, з «Гроші повернено» не можна повернутися в «Очікує розгляду». Ми реалізуємо матрицю переходів з урахуванням ролей користувачів.

namespace Local\Returns;

class StatusTransitionMatrix
{
    private const ALLOWED_TRANSITIONS = [
        'WAIT'      => ['REVIEW', 'REJECTED'],
        'REVIEW'    => ['NEED_DOCS', 'APPROVED', 'REJECTED'],
        'NEED_DOCS' => ['REVIEW', 'REJECTED'],
        'APPROVED'  => ['RECEIVED', 'EXCHANGE'],
        'RECEIVED'  => ['REFUND', 'EXCHANGE'],
        'REFUND'    => [],
        'EXCHANGE'  => [],
        'REJECTED'  => ['WAIT'],
    ];

    private const ADMIN_ONLY = [
        'REJECTED' => ['WAIT'],
    ];

    public function canTransition(string $from, string $to, bool $isAdmin = false): bool
    {
        $allowed = self::ALLOWED_TRANSITIONS[$from] ?? [];
        if (!in_array($to, $allowed, true)) return false;
        if (isset(self::ADMIN_ONLY[$from]) && in_array($to, self::ADMIN_ONLY[$from], true)) {
            return $isAdmin;
        }
        return true;
    }

    public function getAvailableTransitions(string $from, bool $isAdmin = false): array
    {
        $transitions = self::ALLOWED_TRANSITIONS[$from] ?? [];
        if (!$isAdmin) {
            $adminOnly = self::ADMIN_ONLY[$from] ?? [];
            $transitions = array_diff($transitions, $adminOnly);
        }
        return $transitions;
    }
}

Матриця задає жорсткі правила: менеджер не може відхилити заявку після схвалення, а адміністратор може переглянути відмову. Це запобігає помилкам і прискорює обробку.

Як перевіряти переходи при зміні статусу?

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnBeforeSaleOrderReturnStatusChange',
    function (\Bitrix\Main\Event $event) {
        $newStatus = $event->getParameter('STATUS_ID');
        $return    = $event->getParameter('ENTITY');
        $oldStatus = $return->getField('STATUS_ID');

        $isAdmin = \CUser::IsAdmin();
        $matrix  = new \Local\Returns\StatusTransitionMatrix();

        if (!$matrix->canTransition($oldStatus, $newStatus, $isAdmin)) {
            return new \Bitrix\Main\EventResult(
                \Bitrix\Main\EventResult::ERROR,
                "Перехід з '{$oldStatus}' в '{$newStatus}' недопустимий"
            );
        }

        if ($newStatus === 'APPROVED' && !$return->getField('REFUND_AMOUNT')) {
            return new \Bitrix\Main\EventResult(
                \Bitrix\Main\EventResult::ERROR,
                "Вкажіть суму до повернення перед схваленням"
            );
        }

        if ($newStatus === 'REJECTED' && !$return->getField('MANAGER_COMMENT')) {
            return new \Bitrix\Main\EventResult(
                \Bitrix\Main\EventResult::ERROR,
                "При відхиленні необхідно вказати причину"
            );
        }
    }
);

Обробник події OnBeforeSaleOrderReturnStatusChange перевіряє не тільки матрицю переходів, але й обов'язковість полів. Наприклад, перед схваленням має бути вказана сума повернення, а при відмові — коментар менеджера.

Типові помилки при налаштуванні статусів

Часта помилка — дозволити всі переходи підряд. Це веде до плутанини та задвоєння заявок. Друга помилка — не налаштувати сповіщення для критичних статусів (наприклад, «Гроші повернено»). Третя — забути про локалізацію для мультимовних магазинів. Ми проектуємо матрицю так, щоб виключити ці помилки на етапі впровадження.

Як локалізувати статуси для мультимовного магазину?

Для мультимовних сайтів назва статусу для покупця береться з мовного файлу:

// /local/lang/ru/lib/returns/status_labels.php
$MESS['RETURN_STATUS_WAIT']      = 'Очікує розгляду';
$MESS['RETURN_STATUS_REVIEW']    = 'На розгляді';
$MESS['RETURN_STATUS_NEED_DOCS'] = 'Потрібні документи';
$MESS['RETURN_STATUS_APPROVED']  = 'Схвалено';
$MESS['RETURN_STATUS_RECEIVED']  = 'Товар отримано';
$MESS['RETURN_STATUS_REFUND']    = 'Гроші повернено';
$MESS['RETURN_STATUS_EXCHANGE']  = 'Обмін';
$MESS['RETURN_STATUS_REJECTED']  = 'Відхилено';

// /local/lang/en/lib/returns/status_labels.php
$MESS['RETURN_STATUS_WAIT']      = 'Pending review';
$MESS['RETURN_STATUS_APPROVED']  = 'Approved';
// ...

У шаблоні особистого кабінету:

$statusLabel = \Bitrix\Main\Localization\Loc::getMessage(
    'RETURN_STATUS_' . $returnStatusId
) ?: $returnStatusId;

Локалізація дає клієнту зрозумілі назви його мовою. Ми підключаємо мовні файли для всіх підтримуваних мов вашого магазину.

Що входить в роботу

Етап Зміст Терміни (роб. дні)
Проектування набору статусів Аналіз бізнес-процесу, узгодження списку статусів 2–3
Інсталяційний скрипт Створення/оновлення статусів через \CSaleOrderReturnStatus 1
Матриця переходів Реалізація класу StatusTransitionMatrix з рольовими правилами 1–2
Валідатор Обробник OnBeforeSaleOrderReturnStatusChange 1
Email-сповіщення Шаблони для кожного публічного статусу 1–2
Локалізація Мовні файли для особистого кабінету 1
Інтеграція з 1С через CommerceML Додатково, на запит +3–5
Документація та навчання Інструкція для персоналу, опис матриці включено

Терміни: від 3 до 7 робочих днів на базовий набір, до 2 тижнів з інтеграцією 1С. Вартість розраховується індивідуально, виходячи зі складності.

Замовте налаштування статусів повернення — зв'яжіться з нами для розрахунку вартості. Отримайте консультацію інженера зі статусів повернення. За 5+ років ми реалізували 20+ проектів з налаштування повернень для інтернет-магазинів різного масштабу. Інженери сертифіковані з 1С-Бітрікс. Гарантуємо прозору документацію та підтримку після запуску.

Офіційна документація 1С-Бітрікс: Робота зі статусами повернень

Проблема: повернення вручну займає 25 хвилин

Типова картина: менеджер відкриває замовлення в /bitrix/admin/sale_order_view.php, вручну змінює статус, телефонує на склад, потім лізе в 1С формувати документ «Повернення товарів від покупця». На одне повернення — 20–30 хвилин. При 15 поверненнях на день одна людина зайнята тільки цим. Наш підхід прискорює цикл у 8 разів: від кнопки «Оформити повернення» в особистому кабінеті до проведення в 1С та чека повернення за 54-ФЗ.

Чому стандартний процес повернення неефективний?

У Бітріксі з коробки немає окремої сутності «повернення». Є статуси замовлення в b_sale_status, є скасування через CSaleOrder::CancelOrder(), але повноцінного workflow з частковими поверненнями, обмінами та зворотною логістикою — немає. Доводиться будувати.

  • Часткове повернення — клієнт хоче повернути 2 з 5 позицій. Стандартний CancelOrder скасовує замовлення цілком. Потрібна кастомна логіка через CSaleBasket та перерахунок CSaleOrder::Update.
  • Залишки роз'їжджаються — товар приїхав на склад, але в b_catalog_store_product його немає, тому що менеджер забув оприбуткувати. На сайті — «Немає в наявності», хоча коробка стоїть на полиці.
  • Повернення грошей — ЮKassa, CloudPayments, Тінькофф — у кожного свій метод рефанду, свої таймаути, своя обробка помилок. Ручний рефанд через особистий кабінет платіжки — рутина.
  • 54-ФЗ — чек повернення з ознакою розрахунку ВОЗВРАТ ПРИХОДА має піти на ОФД. Без автоматизації менеджер формує його вручну в касовому ПЗ.

Що ми будуємо

Особистий кабінет покупця — self-service повернення

Кастомний розділ в /personal/returns/, інтегрований з sale.personal.order.list. Покупець робить все сам:

  • обирає замовлення з b_sale_order, бачить список позицій з b_sale_basket;
  • відмічає конкретні товари, вказує причину з довідника (властивість інфоблоку RETURN_REASONS) або пише вільний текст;
  • завантажує фото через CFile::SaveFile() — брак, пошкодження при доставці;
  • обирає спосіб повернення: кур'єр (СДЕК API), ПВЗ, Укрпошта;
  • вказує куди повернути гроші: на картку (рефанд через платіжку), на внутрішній рахунок (CSaleUserAccount), обмін на інший товар;
  • бачить статус заявки в реальному часі — через кастомні статуси в b_sale_status_lang.

Адмінка менеджера — без зайвих кліків

Окремий розділ на базі \Bitrix\Main\Engine\Controller:

  • черга заявок з фільтрами: статус, сума, причина, дата, менеджер. Грід на CAdminList або кастомний React-компонент;
  • вся інформація по заявці на одному екрані: замовлення, клієнт, історія листування, фото, документи;
  • дії в один клік: схвалити, відхилити, запросити фото, передати на узгодження;
  • маршрутизація: повернення понад поріг (налаштовується в b_option) йде керівнику через бізнес-процес модуля bizproc;
  • автогенерація акта повернення та поворотної накладної — PDF через mPDF або TCPDF.

Автоматизація — мінімум ручних операцій

  • Повернення до налаштовуваного порогу — автосхвалення через обробник події OnSaleOrderSaved.
  • Чек повернення 54-ФЗ: виклик \Bitrix\Sale\Cashbox\Manager::addChecks() з типом Check::RETURN_TYPE. Іде на ОФД автоматично.
  • Ланцюжок сповіщень: email через CEvent::Send(), SMS через SMS-шлюз, push.
  • Після приймання на складі — автоматичне оприбуткування через CCatalogStoreDocsBarcode та оновлення b_catalog_store_product.
  • Синхронізація з 1С: документ «Повернення товарів від покупця» створюється автоматично при обміні через \Bitrix\Sale\Exchange.
  • Бонусні бали, нараховані за покупку — списання через CSaleUserAccount::UpdateAccount() з від'ємною сумою.
  • Агенти обробляють чергу заявок, епілог шаблону підвантажує статуси в особистий кабінет у реальному часі.

Як забезпечити коректну інтеграцію з платіжними системами?

Кожна платіжка — свій API рефанду, свої обмеження за строками, свої коди помилок. Досвід сертифікованих розробників Бітрікс дозволяє обробити всі сценарії:

  • ЮKassaPOST /v3/refunds, повний та частковий рефанд. Важливо: рефанд можливий лише протягом 365 днів після платежу. Автоматичний чек повернення через receipt API.
  • CloudPayments — метод refund по TransactionId. Рефанд на картку за 1-5 робочих днів. Якщо 3DS-платіж — рефанд може зайняти до 30 днів на стороні банку.
  • Тінькофф ЕквайрингCancel по PaymentId. Якщо оплата в розстрочку — рефанд перераховує графік, і це окрема логіка в обробнику sale.paysystem.handler.
  • Apple Pay / Google Pay — рефанд йде через той самий еквайринг, токен прив'язаний до транзакції.
  • Накладений платіж — рефанд неможливий через платіжку, потрібні банківські реквізити покупця. Окрема форма в ОК.
  • Внутрішній рахунокCSaleUserAccount::Pay() з зарахуванням суми. Мотивуємо підвищеним коефіцієнтом (x1.1) — 10% бонус за вибір повернення на баланс замість картки.

Гарантуємо коректну обробку кожного коду помилки через кастомні обробники sale.paysystem.handler. Середня економія на ручному рефанді — до 40 000 ₴ на місяць при 100 поверненнях.

Відповідність законодавству

Дотримуємось вимог Закону України "Про захист прав споживачів" (ст. 26.1) та 54-ФЗ:

  • ЗоЗПП, ст. 26.1 — дистанційний продаж: відмова в будь-який момент до отримання, 7 днів після. Система контролює строки автоматично та попереджає менеджера про наближення дедлайну.
  • 14 днів — повернення товару належної якості. Перевірка: date_insert замовлення + дата доставки з трекінгу + 14 днів. Якщо прострочено — заявка відхиляється з поясненням.
  • 54-ФЗ — чек повернення обов'язковий.
  • Документообіг — акт повернення, заява покупця, акт приймання — шаблони в системі, заповнюються автоматично з даних замовлення.

Додаткові можливості: аналітика, обмін та зворотна логістика

Кастомний дашборд в адмінці, дані з b_sale_order + кастомна таблиця повернень:

  • відсоток повернень за категоріями, брендами, менеджерами, періодами;
  • топ причин повернення. Якщо «Не відповідає опису» в топ-3 — проблема в картках товару, а не в клієнтах;
  • фінансовий зріз: сума повернень, середній чек повернення, співвідношення рефанд/обмін/баланс;
  • алерти: якщо відсоток повернень по конкретному SKU перевищив 15% — сповіщення категорійному менеджеру.

Обмін та заміна

Не кожне повернення — втрачена виручка. Обмін через CSaleOrder::Update з перерахунком кошика:

  • заміна на той самий товар іншого розміру/кольору — нова позиція в b_sale_basket, стара — на повернення;
  • обмін на інший товар з доплатою — автоматичний розрахунок різниці, доплата через той самий платіжний метод;
  • генерація накладної на відправку обмінного товару через API служби доставки.

Зворотна логістика

  • СДЕКPOST /v2/orders з type: 2 (повернення). Автоматична заявка на забір, трекінг через webhook.
  • Boxberry — API парсельшопів для вибору ПВЗ повернення.
  • Укрпошта — формування зворотної накладної через API відправлень.
  • Трекінг зворотної посилки в особистому кабінеті — статуси підтягуються через агента на cron.

Процес впровадження

  1. Аудит поточного процесу — аналізуємо бізнес-логіку, фіксуємо статуси та інтеграції.
  2. Проектування workflow — схема статусів, правила автосхвалення, маршрутизація.
  3. Розробка ОК покупця та адмінки — компоненти, гріди, форми, REST-контролери.
  4. Інтеграція з платіжками та 1С — налаштування кожного обробника, тест рефандів.
  5. Автоматизація 54-ФЗ та сповіщень — підключення ОФД, шаблонів листів, SMS.
  6. Інтеграція служб доставки — СДЕК, Boxberry, Укрпошта.
  7. Тестування — повний цикл: замовлення → повернення → рефанд → чек → 1С.
  8. Навчання співробітників та передача документації.

Що ви отримуєте

Блок Що входить
Документація Технічне завдання, опис workflow, схема інтеграцій
Код та конфігурація Готові компоненти, налаштування інфоблоків, HL-блоків, статусів, прав
Інтеграція з платіжками Підключення ЮKassa, CloudPayments, Тінькофф, Apple Pay/Google Pay
Обмін з 1С Налаштування CommerceML, документ повернення в 1С
Автоматизація 54-ФЗ Чек повернення через ОФД, фіскалізація
Навчання Відеоінструкції для менеджерів та адміністраторів
Підтримка 1 місяць гарантійного супроводу після впровадження
Чек-лист перевірки перед запуском
  • Перевірено рефанд через кожну платіжку (частковий та повний).
  • Тест 54-ФЗ: чек повернення коректний, йде в ОФД.
  • Обмін з 1С: документ «Повернення товарів від покупця» створюється без помилок.
  • ОК покупця: всі поля, завантаження фото, вибір способу повернення.
  • Автосхвалення до порогу спрацьовує.
  • Сповіщення (email/SMS/push) приходять.
  • Залишки після приймання оновлюються.
  • Аналітика рахує метрики коректно.

Строки впровадження

Компонент Строки
ОК покупця (форма + статуси) 3-5 днів
Адмінка менеджера (грід + дії) 3-5 днів
Інтеграція з платіжними системами 2-3 дні
Обмін з 1С (документ повернення) 3-5 днів
Автоматизація (54-ФЗ, сповіщення, залишки) 2-3 дні
Зворотна логістика (СДЕК, Boxberry) 2-3 дні
Разом 2-4 тижні

Чому це окупається за місяць?

Порівняйте: ручна обробка повернення займає 25 хвилин, після автоматизації — 3 хвилини. Це у 8 разів швидше. При 15 поверненнях на день вивільняється ціла ставка менеджера. Економія на зарплаті — значна. Плюс зростання повторних покупок: клієнт, якому легко повернути товар, приходить знову. За нашими підрахунками, впровадження окупається за 3-6 тижнів завдяки економії часу та збільшенню конверсії.

Маємо 7+ років досвіду впровадження рішень на 1С-Бітрікс та понад 120 успішних проектів. Наші клієнти отримують прозорий процес повернень без рутини. Замовте налаштування повернень під ключ у вашому Бітріксі. Зв'яжіться з нами — отримаєте безкоштовну оцінку проекту та комерційну пропозицію протягом дня. Зателефонуйте або напишіть, щоб обговорити деталі вашого бізнесу.