Розробка multi-vendor маркетплейсу на 1С-Бітрікс

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

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

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

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

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

Розробка multi-vendor маркетплейса на 1С-Бітрікс

З коробки 1С-Бітрікс — це інструмент для одного продавця. Перетворити його на маркетплейс, де сотні незалежних продавців управляють своїми товарами, замовленнями та виплатами — завдання, яке потребує серйозної архітектурної надбудови. Готових рішень класу «нажми кнопку й отримай Wildberries» не існує. Є кілька модулів від сторонніх розробників, які беруть на себе частину роботи, та кастомна розробка поверх них.

Що потрібно побудувати

Multi-vendor маркетплейс відрізняється від звичайного інтернет-магазину кількома принциповими речами:

Ізоляція даних продавців. Продавець A не повинен бачити товари, замовлення та аналітику продавця B. У базовому Бітрікс інфоблоки та каталог — спільні. Потрібно додати шар розмежування: або окремий інфоблок на кожного продавця (масштабується погано), або спільний інфоблок із полем VENDOR_ID та фільтрацією на всіх рівнях.

Незалежне управління. У кожного продавця — особистий кабінет для управління своїми товарами, замовленнями, цінами. Це не стандартний /personal/ Бітрікс, а кастомний розділ з кастомними компонентами.

Розділення замовлень. Покупець кладе в корзину товари від трьох продавців. У Бітрікс це одне замовлення в b_sale_order. Потрібно розбивати його на суб-замовлення, кожне з яких бачить тільки відповідний продавець.

Комісії та виплати. Платформа бере комісію з кожної продажі. Потрібен розрахунок комісій за правилами та механізм виплат продавцям (вручну або автоматично через API платежів).

Архітектура зберігання даних продавців

Найпрактичніший підхід — додати ідентифікатор продавця на рівні інфоблока каталогу. Продавець реєструється як користувач Бітрікс у групі «Продавці», його USER_ID використовується як VENDOR_ID.

Структура зберігання товарів:

Основний інфоблок каталогу розширюється UF-полем UF_VENDOR_ID (посилання на b_user.ID). Усі компоненти каталогу при виборці додають фільтр по UF_VENDOR_ID. У особистому кабінеті продавця — тільки елементи з його UF_VENDOR_ID.

Альтернатива для великих маркетплейсів: HighLoad-інфоблок як проміжний шар, який зберігає маппінг PRODUCT_ID → VENDOR_ID та використовується для швидких перевірок прав.

Таблиця продавців (додаткова, через HL-інфоблок або кастомну):

Поле Описання
UF_USER_ID ID користувача в b_user
UF_COMPANY_NAME Назва юрособи
UF_INN IПН
UF_STATUS pending / active / blocked
UF_COMMISSION_RATE % комісії (якщо індивідуальний)
UF_PAYMENT_DETAILS Реквізити для виплат (JSON)
UF_RATING Рейтинг (float)
UF_RATING_COUNT Кількість оцінок

Розділення замовлень

Це найтехнічно складна частина. У b_sale_order замовлення єдине. Варіанти реалізації розділення:

Варіант 1: Суб-замовлення як дочірні записи. Створюється додаткова таблиця mp_sub_orders з полями ORDER_ID, VENDOR_ID, STATUS, TOTAL, COMMISSION. При створенні замовлення триггер (або обробник OnAfterOrderAdd) автоматично створює суб-замовлення, групуючи позиції корзини по UF_VENDOR_ID товарів. Продавець бачить тільки свої суб-замовлення.

Варіант 2: Окремі корзини. Корзина на сайті розділяється по продавцах візуально, і при оформленні створюється окремий b_sale_order на кожного продавця. Технічно простіше, але ускладнює UX для покупця (кілька платежів або один агрегований).

Варіант 3: Атрибути позицій замовлення. VENDOR_ID зберігається в b_sale_basket як кастомна властивість через b_sale_basket_props_value. При перегляді замовлення продавець бачить тільки свої позиції. Суб-замовлення не створюється, статус управляється на рівні позиції.

Для більшості проектів оптимальні варіант 1 або 3 — варіант 2 незручний для покупця при змішаній корзині.

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

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

  • Управління товарами: додавання/редагування/деактивація. Використовується стандартний API інфоблоків з примусовим підставленням UF_VENDOR_ID = $USER->GetID() при додаванні та фільтрацією при виборці
  • Управління замовленнями (суб-замовленнями): список, зміна статусу, друк накладної
  • Управління остатками та цінами: масове оновлення через CSV-загрузку або AJAX-редагування
  • Аналітика: продажи за період, топ товарів, повернення. Дані з суб-замовлень з агрегацією
  • Профіль та реквізити: документи, платіжні дані, статус верифікації
  • Фінанси: нараховані комісії, історія виплат, баланс

Кабінет реалізується як окремий розділ сайту з шаблоном, компонентами та AJAX-обробниками. Права: користувач у групі «Продавці» + перевірка UF_VENDOR_ID на кожен запит.

Система комісій

Комісії розраховуються у момент створення суб-замовлення або при його переходу в фінальний статус (оплачено). Логіка:

// Спрощений псевдокод
$commissionRate = $vendor['UF_COMMISSION_RATE']
    ?? $categoryRate[$product['IBLOCK_SECTION_ID']]
    ?? $defaultRate;

$commission = $subOrder['TOTAL'] * $commissionRate / 100;

// Зберігаємо в таблицю фінансових операцій
MpFinanceTable::add([
    'VENDOR_ID' => $vendor['ID'],
    'ORDER_ID'  => $orderId,
    'TYPE'      => 'commission',
    'AMOUNT'    => -$commission,
    'STATUS'    => 'pending',
]);

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

Модерація товарів

Товари продавців перед публікацією проходять модерацію. Технічно це статус елемента інфоблока: при додаванні товар продавцем встановлюється ACTIVE = N та спеціальний статус UF_MODERATION_STATUS = 'pending'. Модератор (користувач у групі «Модератори») бачить чергу на модерацію, перевіряє, встановлює ACTIVE = Y або відхиляє з коментарем.

Сповіщення продавця при результаті модерації — через CEvent::Send() або вбудовані сповіщення Бітрікс.

Технічний стек та готові компоненти

На маркетплейсі є кілька готових multi-vendor рішень: Marketplace Builder (від різних студій), Multi-Vendor модулі. Вони беруть на себе реєстрацію продавців, базовий кабінет, розділення замовлень. Кастомна розробка потрібна для специфічної логіки комісій, нестандартного кабінету, складних інтеграцій.

Рекомендований підхід: взяти готовий модуль як основу, кастомізувати через события та шаблони. Це швидше, ніж з нуля, але дорожче, ніж «просто налаштувати».

Терміни розробки

Компонент Термін
Архітектура + реєстрація продавців + профілі 3–4 тижні
Розділення замовлень та суб-замовлення 3–5 тижнів
Особистий кабінет продавця (базовий) 4–6 тижнів
Система комісій та фінансовий модуль 3–5 тижнів
Модерація товарів 1–2 тижні
Аналітика продавця 2–3 тижні
Система виплат (ручна + API) 2–4 тижні
Разом повнофункціональний MVP 18–29 тижнів

Терміни для розробки з нуля. Використання готового multi-vendor модуля як основи скорочує до 10–16 тижнів на кастомізацію.