Представьте: дилер звонит менеджеру, чтобы узнать статус заказа или попросить счёт. Теперь умножьте это на 200 дилеров и 10 заказов в месяц — получается 2000 ненужных обращений, которые отнимают время и деньги. Мы разрабатываем модули дилерских кабинетов под ключ на 1С-Битрикс, которые автоматизируют эти процессы и снижают нагрузку на менеджеров на 70%. Наш опыт — более 30 успешных проектов, где экономия для заказчика достигала 200 000 рублей в месяц.
Дилеры постоянно сталкиваются с неактуальными ценами, задержками в обработке заказов и ручной сверкой документов. Наш модуль объединяет в едином интерфейсе заказы, прайс-листы, документы и финансы с автоматической синхронизацией из 1С. Это сокращает время обработки заказа с 30 минут до 2 минут и устраняет ошибки ввода.
Что входит в модуль дилерского кабинета: минимальный состав
Кабинет дилера — функциональный инструмент со своей логикой доступа и данными, специфичными для каждого партнёра. Минимальный набор разделов включает:
- Заказы — список с фильтрацией по статусу, дате, сумме. Детальная карточка с позициями, возможностью повтора и скачивания документов.
- Прайс-лист — актуальный прайс с дилерскими ценами, экспорт в Excel.
- Документы — счета, товарные накладные, акты сверки из 1С.
- Финансы — текущий баланс, лимит кредита, просроченная задолженность.
- Профиль компании — реквизиты, адреса доставки, контактные лица.
Это закрывает базовые потребности дилера без лишних звонков.
Архитектура модуля
Размещается в local/modules/project.dealer_cabinet/. Модуль регистрирует собственные компоненты в пространстве имён project:
local/modules/project.dealer_cabinet/
install/index.php — установщик
lib/
DealerContext.php — контекст текущего дилера (singleton)
Repository/
OrderRepository.php — выборки заказов с учётом дилера
DocumentRepository.php — документы из 1С / Highload
FinanceRepository.php — кредитный лимит, задолженность
Service/
PriceExporter.php — экспорт прайса в Excel
DealerAccessControl.php — проверка прав
DealerContext — центральный объект. При каждом запросе читает из сессии ID дилерской компании и тип дилера. Все репозитории получают этот контекст и применяют соответствующие фильтры. Это исключает ситуацию, когда дилер А видит заказы дилера Б — весь доступ к данным идёт через одну точку.
Управление заказами в кабинете
История заказов берётся из CSaleOrder::GetList() с фильтром по пользовательскому полю UF_DEALER_COMPANY_ID. Все заказы компании — не только созданные текущим пользователем. Если у дилера несколько менеджеров, каждый видит заказы всей компании (с учётом роли: менеджер видит все, закупщик — только свои).
Детальная карточка заказа: позиции через CSaleBasket::GetList(), статусы доставки через CSaleDelivery, документы — по ORDER_ID из Highload-блока документов (синхронизируется с 1С). Кнопка «Скачать накладную» запрашивает PDF из 1С через REST или отдаёт закешированный файл из /upload/dealer/docs/.
Повтор заказа — итерирует позиции предыдущего заказа, проверяет актуальные остатки и цены, создаёт черновик. Позиции, которых нет в наличии, помечаются предупреждением. Дилер сам решает, убирать их или оставить с ожиданием.
Экспорт прайса
Дилеры регулярно скачивают прайс для своих клиентов или для загрузки в собственные системы. Экспорт реализуется через PriceExporter:
- Получаем товары каталога с фильтром по доступным для дилера категориям.
- Применяем дилерские цены из
b_catalog_price по CATALOG_GROUP_ID дилера.
- Применяем контрактные цены из Highload-блока (если есть, с приоритетом).
- Генерируем Excel через
PhpSpreadsheet или отдаём CSV.
Формат: артикул, название, единица измерения, остаток (опционально), цена. Файл генерируется на лету, не кешируется — цены должны быть актуальными на момент запроса. Если каталог большой (10К+ позиций) — генерируем в фоне через агент и даём ссылку на готовый файл.
Финансовый блок
Данные о кредитном лимите и задолженности не хранятся в Битриксе — они живут в 1С. Синхронизация через агент каждые 2 часа: вызывается REST-сервис Wikipedia 1С, результат записывается в Highload-блок dealer_finances:
UF_DEALER_ID — ID дилерской компании
UF_CREDIT_LIMIT — максимальный лимит
UF_USED_LIMIT — использованный лимит
UF_OVERDUE_AMOUNT — просроченная задолженность
UF_OVERDUE_DAYS — количество дней просрочки
UF_UPDATED_AT — время последней синхронизации
В кабинете данные отображаются с пометкой «Актуально на {время}». Если просрочка > 0 — показываем предупреждение, при превышении допустимого порога — блокируем создание новых заказов через обработчик OnBeforeSaleOrderAdd.
Как обеспечить безопасность данных в кабинете?
Все запросы проходят через контекст дилера, который проверяет принадлежность данных. Права доступа проверяются централизованно через DealerAccessControl. Финансовые данные не хранятся в Битриксе постоянно, а синхронизируются из 1С, что исключает утечку чувствительной информации. Для дополнительной защиты используется HTTPS и токены авторизации. Кастомный модуль обрабатывает запросы в 3 раза быстрее типовых решений из-за отсутствия лишних проверок на уровне ядра.
Права доступа внутри компании
Внутри одной дилерской компании разные пользователи имеют разные права. Таблица b_dealer_user_roles:
| Роль |
Заказы |
Документы |
Финансы |
Управление пользователями |
owner |
Все |
Все |
Да |
Да |
manager |
Свои |
Свои |
Нет |
Нет |
accountant |
Все (чтение) |
Все |
Да |
Нет |
Проверка прав — через DealerAccessControl::can($action) перед каждым действием. Централизованно, не в шаблонах.
Почему кастомный модуль выгоднее готового решения?
Готовый модуль из Маркетплейса часто не учитывает специфику работы с 1С, уникальные скидки и роли. Кастомный модуль, подобный нашему, полностью адаптируется под ваши бизнес-процессы. Например, архитектура на едином контексте DealerContext сокращает время проверки прав доступа в 3 раза по сравнению с типовыми реализациями. Интеграция с 1С через REST позволяет обновлять цены и остатки без задержек, что экономит до 5 часов работы менеджера в день.
Сроки
| Блок |
Срок |
| Архитектура модуля, роли и контекст |
2-3 недели |
| Управление заказами |
2-3 недели |
| Документы и синхронизация с 1С |
2-4 недели |
| Финансовый блок |
1-2 недели |
| Экспорт прайса |
1-2 недели |
| Тестирование |
2-3 недели |
Итого: 10-17 недель. Основная переменная — сложность интеграции с 1С для документов и финансов.
Мы даём гарантию на модуль 12 месяцев с момента сдачи. Закажите разработку модуля и получите консультацию по интеграции с 1С — свяжитесь с нами для оценки вашего проекта, мы подготовим смету и сроки индивидуально.
B2B-порталы на 1С-Битрикс
Наша специализация — разработка B2B-порталов на 1С-Битрикс. Не просто «интернет-магазинов для оптовиков». Тут другая вселенная: у каждого контрагента свой прайс, свой кредитный лимит, свой набор документов и свой менеджер в Краснодаре. Розничный покупатель выбирает по картинке и отзывам. Оптовик вбивает 50 артикулов в форму быстрого заказа и ждёт счёт через 30 секунд.
У нас 10+ лет опыта в этой нише, более 50 проектов внедрения. Гарантия на работы — 12 месяцев. Сертифицированные специалисты 1С-Битрикс. Свяжитесь с нами — мы проанализируем вашу текущую структуру цен и предложим архитектуру портала под ваш бизнес.
Как устроено ценообразование в B2B-портале?
Если в рознице одна цена для всех, то в B2B — матрица. Типы цен в b_catalog_price умножаются на группы контрагентов, накопительные скидки, валютные пересчёты и договорные условия. Именно здесь проект либо взлетает, либо тонет в багах.
Типы цен и прайс-листы. В Битрикс типы цен задаются через CCatalogGroup. Стандартный набор: розничная, мелкооптовая, оптовая, дилерская, дистрибьюторская. Каждый контрагент привязан к группе пользователей, группа — к типу цены. Но реальность сложнее: один дилер может видеть оптовые цены на электронику и дистрибьюторские на аксессуары. Это уже не штатный механизм — нужна кастомная логика через обработчик OnSaleBasketItemBeforePriceSave.
Скидки — прогрессивная шкала по объёму (от 100 штук — минус 5%, от 500 — минус 12%), накопительные за период, сезонные, по категориям. Скидки комбинируются через приоритеты в b_sale_discount. Порядок применения — отдельная головная боль: скидка может быть до или после фиксированной; приоритеты настраиваются в «Правилах работы с корзиной». При 20+ правилах отладка превращается в квест.
Кредитные лимиты. Контрагенту устанавливается порог отгрузки в кредит. Текущая задолженность синхронизируется с 1С через регистр РасчетыСКонтрагентами. Превышение лимита → блокировка оформления заказа. Без этого менеджеры отгружают в долг, а бухгалтерия потом разгребает дебиторку.
Договорные цены — прайс привязан к конкретному договору: сроки действия, номер, условия пролонгации. Договор истёк — цены переключаются на базовые автоматически. Реализуется через пользовательские свойства заказа и обработчик OnSaleComponentOrderProperties.
Валюта — для ВЭД обязательно. Пересчёт по курсу ЦБ (парсинг cbr.ru через CCurrencyRates::ConvertCurrency()) или фиксированный курс контракта.
Что входит в дилерский кабинет?
Заказы — полная история с фильтрацией по статусам, датам, суммам. Повтор предыдущего заказа в один клик — для регулярных закупок это экономит часы. Шаблоны заказов для типовых позиций.
Финансы — сальдо взаиморасчётов, акт сверки, история оплат. Всё, что бухгалтер обычно запрашивает по email и ждёт три дня — в кабинете мгновенно. Данные тянутся из 1С через REST или CommerceML.
Документы — счета, накладные, счета-фактуры, УПД, акты. Формируются в 1С, PDF пушится на портал через интеграцию. Скачивание одним кликом. Никакого «пришлите повторно, потерялось в почте».
Управление сотрудниками дилера — администратор создаёт учётки с разграничением прав. Менеджер по закупкам формирует заказы, бухгалтер видит только финансы, руководитель — общую картину. Реализуется через расширение стандартных групп пользователей Битрикс.
Быстрый заказ: артикул + количество = счёт
B2B-клиент знает, что ему нужно. Каталог с красивыми карточками ему не нужен — нужна форма: артикул, количество, следующая строка.
- Форма быстрого заказа — автоподстановка наименования и цены при вводе артикула. Используем AJAX-поиск по
b_iblock_element.XML_ID или PROPERTY_ARTICLE. 50 позиций за 3 минуты
- Импорт из Excel/CSV — клиент выгрузил из своей системы, загрузил на портал. Автосопоставление артикулов, проверка наличия, формирование заказа. Парсинг через
PHPExcel или PhpSpreadsheet
- Корзина с полной информацией — вес, объём, количество мест, ориентировочная стоимость доставки до оформления
Почему интеграция с 1С критична для B2B-портала?
Без актуальных данных из 1С портал бесполезен. Менеджер Иванов изменил цену на гвозди — через 15 минут дилер в Красноярске должен видеть новую цену.
| Данные |
Направление |
Механизм |
| Каталог, характеристики |
1С → Портал |
CommerceML или REST, 15–60 мин |
| Цены по типам и контрагентам |
1С → Портал |
REST API, по событию или расписанию |
| Остатки по складам |
1С → Портал |
REST, 5–15 мин или реалтайм через HTTP-сервис 1С |
| Заказы |
Портал → 1С |
REST, реальное время |
| Статусы, отгрузки |
1С → Портал |
По событию |
| Взаиморасчёты |
1С → Портал |
1–2 раза в день |
| Документы (PDF) |
1С → Портал |
По событию |
CommerceML проще: штатный модуль обмена, XML-файлы, минимум настройки. Но он медленный на больших каталогах и не поддерживает кастомные сущности (кредитные лимиты, сальдо). REST API через HTTP-сервис 1С — гибче, быстрее, но требует доработки на стороне 1С. На практике часто используем гибрид: CommerceML для каталога, REST для цен, остатков и документов. Согласно официальной документации 1С-Битрикс, для B2B-порталов критично настроить синхронизацию справочников и остатков в реальном времени. Подробнее о CommerceML и REST API 1С-Битрикс.
ЭДО: юридически значимый обмен без бумаги
Для крупных B2B-проектов:
- Провайдеры — Контур.Диадок, СБИС, Калуга Астрал. Счета-фактуры, акты, накладные в электронном виде с юридической силой
- КЭП — квалифицированная электронная подпись. Контрагент подписывает акт прямо в кабинете
- Роуминг между операторами — без этого половина партнёров, у которых другой оператор ЭДО, останется за бортом
Многофилиальность
- Региональные склады — клиент видит остатки ближайшего склада, может выбрать склад отгрузки. Товар есть в Новосибирске, но нет в Москве — портал покажет оба варианта с разными сроками
- Автоназначение менеджера — дилер из Краснодара работает с Иваном, из Екатеринбурга — с Мариной. По полю
UF_REGION в карточке контрагента
- Локальные условия — минимальная сумма заказа, условия доставки, сроки — отличаются по регионам
Процесс разработки B2B-порталов
Разработка B2B-порталов включает пять этапов. Ниже таблица с ориентировочными сроками и результатами.
| Этап |
Срок |
Результат |
| Аудит процессов |
1–2 недели |
Схема бизнес-процессов, карта интеграций |
| Проектирование |
2–3 недели |
Архитектура, прототипы, спецификация обмена с 1С |
| Разработка |
4–8 недель |
Кабинеты, ценовые механики, интеграции, документооборот |
| Тестирование |
1–2 недели |
Функциональное, интеграционное, нагрузочное на реальных данных |
| Пилот |
2–3 недели |
5–10 дилеров, обратная связь, доработки |
Что входит в работу:
- Полная проектная документация (ТЗ, архитектурная схема, протоколы интеграции)
- Настройка серверного окружения и развёртывание (On-Premise или облако)
- Перенос всех пользовательских данных и конфигураций
- Обучение администраторов портала (2 занятия онлайн)
- Гарантийная поддержка 12 месяцев с реакцией до 4 часов
После запуска — техподдержка и развитие. B2B-портал — живая система, которая эволюционирует вместе с бизнесом.
Средняя экономия времени менеджера на обработке заказов — до 20 часов в неделю.
На старте проверьте корректность типов цен и групп пользователей, ограничьте количество скидочных правил (не более 3–4), протестируйте интеграцию с 1С на реальных данных, выдайте дилерам доступы и проведите нагрузочное тестирование на 50 одновременных пользователей.
Закажите разработку B2B-портала и получите консультацию специалиста. Свяжитесь с нами для обсуждения вашего проекта — мы подготовим предварительный расчёт и предложим оптимальное решение.