Личный кабинет поставщика для дропшиппинга на 1С-Битрикс

На одном из проектов с 60 поставщиками каждый день менеджер тратил 3 часа на синхронизацию остатков через Excel. После внедрения кабинета поставщика время сократилось до 10 минут. Такая же боль — у многих дропшиппинговых магазинов: поставщики не видят свои заказы, обновляют цены через письма, а ошиб
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Личный кабинет поставщика для дропшиппинга на 1С-Битрикс
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1017
  • 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
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1161

На одном из проектов с 60 поставщиками каждый день менеджер тратил 3 часа на синхронизацию остатков через Excel. После внедрения кабинета поставщика время сократилось до 10 минут. Такая же боль — у многих дропшиппинговых магазинов: поставщики не видят свои заказы, обновляют цены через письма, а ошибки при ручном вводе достигают 12%. Разработка отдельного личного кабинета для каждого поставщика на 1С-Битрикс решает эти проблемы: изолированные права, собственные товары и заказы, массовая загрузка CSV. Мы автоматизируем рутину так, что поставщик тратит 15 минут вместо 4 часов — и ошибки стремятся к нулю.

Наш опыт: более 10 лет разработки на Битрикс, 50+ проектов в e-commerce. Гарантируем стабильную работу кабинета при нагрузке до 100 одновременно активных поставщиков. Оценим ваш проект за 2 дня: свяжитесь с нами для консультации.

Как организовать разграничение прав для поставщиков?

В Битрикс разграничение прав реализуется через группы пользователей. Создаём группу «Поставщики» через API:

$groupId = CGroup::Add([ 'ACTIVE' => 'Y', 'NAME' => 'Поставщики', 'STRING_ID' => 'SUPPLIERS', ]); 

Привязка конкретного поставщика к его товарам — через HL-блок SupplierProduct или свойство инфоблока SUPPLIER_ID типа «Привязка к пользователю» (E). Раздел кабинета поставщика закрывается через проверку группы:

if (!$USER->IsAuthorized() || !$USER->IsInGroup($supplierGroupId)) { LocalRedirect('/auth/?backurl=' . urlencode($_SERVER['REQUEST_URI'])); } 

Подробнее о группах пользователей — в документации.

Состав кабинета: товары, заказы, цены

Что входит в блок «Мои товары»?

Список товаров поставщика с текущим остатком и ценой. Запрос через CIBlockElement::GetList с фильтром по SUPPLIER_ID:

$userId = $USER->GetID(); $res = CIBlockElement::GetList( ['NAME' => 'ASC'], [ 'IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y', 'PROPERTY_SUPPLIER_ID' => $userId, ], false, false, ['ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'PROPERTY_SUPPLIER_ID'] ); 

Для каждого товара показываем текущий остаток из b_catalog_store_product и цену из b_catalog_price. Каждый поставщик имеет свой склад (b_catalog_store) — это позволяет отслеживать остатки независимо.

Как поставщик обновляет цены и остатки?

Поставщик отправляет AJAX-запрос из формы. Обработчик проверяет принадлежность товара и выполняет обновление:

// /local/ajax/supplier-update.php $productId = (int)$_POST['product_id']; $newPrice = (float)$_POST['price']; $newQty = (int)$_POST['quantity']; $ownerCheck = CIBlockElement::GetProperty( CATALOG_IBLOCK_ID, $productId, 'sort', 'asc', ['CODE' => 'SUPPLIER_ID', 'VALUE' => $USER->GetID()] ); if (!$ownerCheck->Fetch()) { echo json_encode(['error' => 'Доступ запрещён']); die(); } $priceRow = CCatalogPrice::GetList( [], ['PRODUCT_ID' => $productId, 'CATALOG_GROUP_ID' => BASE_PRICE_GROUP_ID] )->Fetch(); if ($priceRow) { CCatalogPrice::Update($priceRow['ID'], ['PRICE' => $newPrice, 'CURRENCY' => 'RUB']); } else { CCatalogPrice::Add([ 'PRODUCT_ID' => $productId, 'CATALOG_GROUP_ID' => BASE_PRICE_GROUP_ID, 'PRICE' => $newPrice, 'CURRENCY' => 'RUB', ]); } $storeProductRow = CCatalogStoreProduct::GetList( [], ['PRODUCT_ID' => $productId, 'STORE_ID' => getSupplierStoreId($userId)] )->Fetch(); if ($storeProductRow) { CCatalogStoreProduct::Update($storeProductRow['ID'], ['AMOUNT' => $newQty]); } else { CCatalogStoreProduct::Add([ 'PRODUCT_ID' => $productId, 'STORE_ID' => getSupplierStoreId($userId), 'AMOUNT' => $newQty, ]); } echo json_encode(['success' => true]); 

Как поставщик видит свои заказы?

Поставщик видит только те заказы, в которых есть его товары. Прямой запрос к b_sale_order не подходит — нужна связь через корзину:

$supplierId = $USER->GetID(); $connection = \Bitrix\Main\Application::getConnection(); $orders = $connection->query(" SELECT DISTINCT o.ID, o.DATE_INSERT, o.PRICE, o.STATUS_ID, o.USER_ID, u.NAME, u.LAST_NAME, u.EMAIL FROM b_sale_order o JOIN b_sale_basket b ON b.ORDER_ID = o.ID JOIN b_iblock_element_property ep ON ep.IBLOCK_ELEMENT_ID = b.PRODUCT_ID AND ep.IBLOCK_PROPERTY_ID = " . SUPPLIER_PROP_ID . " AND ep.VALUE_NUM = {$supplierId} LEFT JOIN b_user u ON u.ID = o.USER_ID WHERE o.DATE_INSERT >= DATE_SUB(NOW(), INTERVAL 90 DAY) ORDER BY o.DATE_INSERT DESC LIMIT 100 "); 

В детальной странице заказа поставщик видит только свои позиции корзины.

Подтверждение отгрузки и статусы

Поставщик подтверждает отгрузку своей части заказа через интерфейс. Статус фиксируется в HL-блоке SupplierShipment с полями: UF_ORDER_ID, UF_SUPPLIER_ID, UF_STATUS (pending/confirmed/shipped/delivered), UF_TRACKING, UF_DATE_SHIPPED. Когда все поставщики заказа установили статус shipped, агент автоматически меняет статус заказа Битрикс на «Отправлен».

Массовая загрузка через CSV

Для поставщиков с большим ассортиментом (5000+ позиций) предусмотрена форма загрузки CSV-файла с колонками: артикул, цена, остаток. PHP-обработчик находит товар по CML2_ARTICLE, проверяет принадлежность поставщику, и если всё корректно — обновляет цену и остаток. Лимит на количество строк (до 5000) исключает таймаут PHP. Для более крупных партий используем фоновые агенты.

Сравнение подходов к управлению поставщиками

Подход Ручное управление Наш кабинет поставщика
Время на обновление 100 товаров 2 часа 5 минут
Риск ошибок 12% <1%
Доступ к данным Полный к админке Только свои товары и заказы
Масштабирование До 10 поставщиков До 100+ поставщиков

Этапы разработки

Этап Длительность Результат
Аналитика 1–2 дня Требования, прототипы, ролевая модель
Проектирование 2–3 дня Архитектура БД, структура компонентов
Реализация 5–10 дней Готовый функционал: компоненты, AJAX, интеграции
Тестирование 2–3 дня Проверка прав, нагрузка до 100 сессий
Деплой и документирование 1–2 дня Установка, кэширование, обучение менеджеров

Общие сроки: от 1 до 4 недель в зависимости от сложности (базовый кабинет — 1–1.5 недели, полноценный со складом и CSV — 2–3 недели, мультиязычный с аналитикой — 3–4 недели).

Почему стандартный личный кабинет не подходит?

Встроенный модуль my в Битрикс ориентирован на покупателей: корзина, история заказов, личные данные. Для поставщика нужны другие сущности — управление остатками, массовая загрузка, отслеживание отгрузок. Кроме того, без дополнительных настроек поставщик не может быть ограничен только своими товарами. Поэтому требуется разработка отдельного компонентного решения с собственной системой прав.

Типичные ошибки, которые мы предотвращаем

  • Отсутствие проверки прав на AJAX-запросах — злоумышленник может обновлять чужие цены. Все обработчики проверяют SUPPLIER_ID.
  • Нет тегированного кэширования — при 100 поставщиках страница грузится более 10 секунд. Используем кэш с тегами пользователя.
  • Склад поставщика не создаётся автоматически — остатки всех поставщиков смешиваются. Мы создаём склад при регистрации поставщика через событие OnBeforeUserRegister.

Преимущества автоматизации

Автоматический обмен данными с поставщиками в 5 раз быстрее ручного ввода. Ошибки при ручном обновлении случаются в 12% транзакций — с нашим кабинетом этот показатель стремится к нулю. Каждый поставщик экономит минимум 3 часа в день на сверке остатков.

Получите консультацию по архитектуре кабинета — опишите вашу ситуацию, и мы предложим оптимальное решение. Закажите разработку кабинета поставщика под ключ и начните принимать заказы через 1–2 недели.