На одном из проектов с 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 недели.
Настройка дропшиппинга на 1С-Битрикс: интернет-магазин без склада
Главная техническая задача дропшиппинг-магазина — не витрина, а синхронизация остатков. Покупатель оформил заказ, а товар закончился у поставщика 10 минут назад — и вы получаете возврат, негативный отзыв и минус к карме на маркетплейсе. Мы строим дропшиппинг-магазины на 1С-Битрикс с автоматизацией всей цепочки: парсинг каталога, синхронизация остатков каждые 5–15 минут, автоматическая передача заказов поставщику, трекинг в личном кабинете. Услуги по настройке дропшиппинга на 1С-Битрикс включают полный цикл: от первого контакта с поставщиком до SEO-оптимизации витрины.
Почему 1С-Битрикс подходит для дропшиппинга?
Платформа даёт готовые инструменты для e-commerce: модуль «Интернет-магазин», корзина, платёжные обработчики, личный кабинет — всё из коробки. Не нужно собирать магазин из плагинов. Обмен через CommerceML с поставщиками на 1С настраивается за пару дней: выгрузка catalog.xml + offers.xml → автоматический импорт.
Мультипоставщик поддерживает один товар от трёх поставщиков с разными ценами. Битрикс через типы цен (b_catalog_group) и мультисклад (b_catalog_store) позволяет вести всё в одной витрине и подставлять лучшее предложение. SEO-блок: bitrix:catalog.seo.filter для индексируемых фильтров, шаблоны мета-тегов с подстановкой свойств инфоблока, автогенерация ЧПУ. Масштабируемость — от 100 до 500 000+ товаров. При правильной настройке фасетного индекса (b_catalog_iblock_index) каталог на полмиллиона SKU работает без деградации.
Архитектура: импорт каталога
Поставщики отдают данные кто как — и к каждому свой подход:
- YML/XML-фиды (формат Яндекс.Маркет) — самый распространённый. Парсим через
XMLReader (не SimpleXML — на больших фидах в 500 МБ он съест всю память)
- CSV/Excel — маппинг полей через конфиг, валидация, обработка кривых кодировок (да, до сих пор поставщики присылают CSV в Windows-1251)
- API поставщика — прямой доступ к каталогу в реальном времени, самый надёжный вариант
- CommerceML — стандартный формат обмена с 1С
| Формат |
Производительность |
Надёжность данных |
Время настройки |
| YML/XML |
Средняя (зависит от объёма) |
Средняя (нужен парсер) |
1–2 дня |
| CSV/Excel |
Низкая (требуется валидация) |
Низкая (ошибки кодировок, типов) |
2–3 дня |
| API |
Высокая (реальное время) |
Высокая |
3–5 дней |
| CommerceML |
Высокая (инкрементальный) |
Высокая |
1–2 дня |
Наш импортёр закрывает рутину:
- Загрузка по расписанию через агент Битрикс (
CAgent::AddAgent) — каждые 15–60 минут, настраивается под поставщика
- Маппинг категорий поставщика → разделы инфоблока каталога. Без ручного перетаскивания — правила задаются один раз
- Скачивание и оптимизация изображений: ресайз через
CFile::ResizeImageGet, сжатие, конвертация в WebP
- Инкрементальное обновление цен и остатков — без пересоздания элементов инфоблока. Обновляем только изменённые поля через
CIBlockElement::SetPropertyValues и CCatalogProduct::Update
- Генерация уникальных описаний — перефразирование или AI-сервисы
- Наценка по правилам: процент, фикс, отдельно по разделам каталога
Без дедупликации появляются дубли товаров — решаем маппингом по артикулу или EAN. Если не настроить алерты при сбоях фида, магазин продаёт несуществующие товары — настраиваем уведомления менеджеру.
Как настроить синхронизацию остатков без потерь?
В дропшиппинге вы не контролируете склад. Расхождение между фидом и реальным наличием — прямые убытки. Настройка синхронизации каждые 5–60 минут (зависит от API/фида поставщика). Автоскрытие товаров с нулевым остатком — CIBlockElement::Update(['ACTIVE' => 'N']). Ни одной «пустой» карточки в catalog.section. Алерты менеджеру при массовых расхождениях — если вдруг 30% каталога обнулилось, это скорее сбой фида, чем реальная распродажа. Мультипоставщик: один товар от нескольких источников — через разные склады в b_catalog_store. Система подставляет предложение с наличием и лучшей ценой.
Обработка заказов и логистика
Автоматическая передача заказов поставщику — без ручного копирования. Отправка через API, email (шаблон из b_event_message) или выгрузку в ЛК поставщика. Распределение позиций между поставщиками — если в sale.basket товары от разных источников, заказ разбивается на отгрузки. Получение трек-номера → запись в свойство заказа → уведомление покупателю через \Bitrix\Sale\Notify. Обработка частичного наличия: товар есть у одного поставщика, нет у другого — автоматическое разбиение заказа.
Доставка в дропшиппинге — зона поставщика, но покупатель видит ваш бренд. Сроки доставки с учётом обработки у поставщика — не только время транспортной компании. Трекинг в личном кабинете через API СДЭК, Boxberry, Почты России. Объединение отправлений от нескольких поставщиков (при наличии промежуточного склада). Возвраты — координация между покупателем и поставщиком через единый интерфейс в админке. Брендированная упаковка по договорённости.
Ценообразование и мультипоставщик
Наценка — то, на чём строится маржа. Процентная: 30% от закупочной на весь каталог. Ступенчатая: до 1000₽ → 50%, 1000–5000₽ → 30%, свыше 5000₽ → 20%. На дешёвых товарах абсолютная маржа минимальна — нужен высокий процент. Категорийная: электроника 15%, аксессуары 60%. Каждая ниша — свои правила. Психологическое округление — 990₽ вместо 987₽ через кастомное правило наценки. Мониторинг конкурентов — парсинг цен и автокорректировка. RRP — рекомендованная розничная цена поставщика как верхний ориентир.
Мультипоставщик расширяет ассортимент и страхует. Объединение каталогов в единую структуру разделов инфоблока. Дедупликация — по артикулу (PROPERTY_ARTICLE) или EAN. Один товар = один элемент инфоблока, несколько предложений в b_catalog_store. Автоматический выбор поставщика: наличие → цена → скорость доставки. Раздельный учёт: закупочные цены в отдельном типе цен (PURCHASE), история заказов, статистика. Панель с рейтингом надёжности — кто срывает сроки, у кого расхождения по остаткам.
Уникализация контента и SEO
Десятки магазинов копируют описания из фида поставщика — и проигрывают в SEO. Уникальные описания для топовых категорий, приносящих основной трафик. Остальное — шаблонная генерация из свойств. Мета-теги по шаблону: title и description через настройки SEO инфоблока: {=this.Name} купить в Минске | {=parent.Name} — цена от {=this.catalog.price.BASE} руб.. UGC — отзывы (iblock.vote), вопросы-ответы, фото от покупателей. Живой контент работает лучше копирайтинга. SEO-фильтры — bitrix:catalog.seo.filter создаёт индексируемые страницы пересечений: «красные кроссовки Nike 42 размер» с уникальными мета-тегами.
Согласно официальной документации 1С-Битрикс, система поддерживает до 20 типов цен и неограниченное количество складов.
Юридические аспекты
Договор комиссии или агентский с поставщиком — юридическая база. Интеграция с ОФД по 54-ФЗ — фискализация чеков через sale.cashbox. Гарантия: перед покупателем отвечаете вы, независимо от отгрузчика. Настройка бизнес-процессов (Bizproc) для автоматизации возвратов.
Как мы запускаем проект: пошаговая схема
-
Аудит поставщиков — собираем спецификации фидов, API, согласовываем маппинг.
-
Настройка импорта — пишем парсер, валидацию, агенты синхронизации.
-
Настройка магазина — дизайн, платёжные шлюзы, службы доставки.
-
Автоматизация заказов — интеграция передачи заказов, трекинг, возвраты.
-
SEO и уникализация — мета-теги, описания, фильтры.
-
Тестирование — контрольные сценарии, нагрузочные тесты.
-
Деплой и мониторинг — запуск, алерты, документация.
Что входит в работу
- Полная документация: настройки интеграций, параметры импорта, API-ключи.
- Передача доступов: админка, хостинг, API.
- Обучение команды: работа с импортом, управление заказами, отчёты.
- Поддержка после запуска: 2 недели безлимитных консультаций, далее по SLA.
Сроки и этапы
| Этап |
Сроки |
| Подключение 1 поставщика (импорт каталога) |
3–5 дней |
| Настройка магазина (дизайн, оплата, доставка) |
1–2 недели |
| Автоматизация заказов |
3–5 дней |
| SEO-настройка и уникализация |
1–2 недели |
| Запуск MVP |
3–4 недели |
| Подключение дополнительных поставщиков |
2–3 дня на каждого |
Запускаем дропшиппинг-магазины с минимальными вложениями и помогаем масштабировать — от одного поставщика до десятков, от сотни SKU до сотен тысяч. Получите консультацию — свяжитесь с нами, оценим задачу и предложим оптимальное решение под ключ. Закажите настройку дропшиппинга на 1С-Битрикс прямо сейчас. Узнайте подробнее о дропшиппинге на Wikipedia.