Настройка раздельных корзин по продавцам на маркетплейсе 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка раздельных корзин по продавцам на маркетплейсе 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1167
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    563
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка раздельных корзин по продавцам на маркетплейсе 1С-Битрикс

Когда покупатель добавляет товары от разных продавцов, возникает вопрос: как оформить заказ? Единый заказ (как на Wildberries) или несколько отдельных (как на Авито)? Оба варианта реализуемы на Битрикс, но требуют разных подходов.

Вариант 1: Визуально раздельные корзины, один платёж

Корзина b_sale_basket единая в БД, но интерфейс группирует позиции по UF_VENDOR_ID товара. Покупатель видит секции «Продавец А» и «Продавец Б» с отдельными суммами. Оплата — один платёж общей суммой.

При оформлении создаётся один b_sale_order, но в фоне генерируются суб-заказы для каждого продавца (таблица mp_sub_orders). Продавцы видят только свои суб-заказы.

Реализация визуального разделения в шаблоне компонента sale.basket.basket: в template.php группируем $arResult['ITEMS'] по UF_VENDOR_ID перед отображением:

$itemsByVendor = [];
foreach ($arResult['ITEMS'] as $item) {
    $vendorId = CIBlockElement::GetByID($item['PRODUCT_ID'])->GetNext()['UF_VENDOR_ID'];
    $itemsByVendor[$vendorId][] = $item;
}

Плюсы: один платёж, лучший UX для покупателя. Минусы: сложнее разбивать суммы при частичной отмене.

Вариант 2: Отдельные заказы для каждого продавца

При оформлении система создаёт отдельный b_sale_order на каждого продавца. Покупатель получает несколько подтверждений заказа и совершает несколько оплат (или одну через агрегатор с расщеплением).

Реализация через кастомный обработчик оформления заказа: стандартный флоу CSaleOrder::Add() заменяется кастомным, который разбивает корзину по UF_VENDOR_ID и создаёт несколько заказов в цикле.

Плюсы: каждый заказ независим, проще управлять статусами и возвратами. Минусы: неудобно для покупателя при большом количестве продавцов.

Доставка при раздельных корзинах

При единой корзине с несколькими продавцами доставка усложняется: у каждого продавца могут быть свои способы и стоимость. Возможные подходы:

  • Единая доставка силами маркетплейса (платформа агрегирует все товары)
  • Раздельный выбор доставки для каждого продавца (покупатель выбирает отдельно)
  • Самовывоз из точки маркетплейса (общей)

Настройка доставки под конкретную схему — отдельная задача.

Сроки

Визуальное разделение корзины без изменения логики заказов — 3–5 дней. Полное разделение с созданием отдельных заказов — 1–2 недели. С кастомной логикой доставки по продавцам — до 3 недель.