Разработка модуля дилерского кабинета 1С-Битрикс

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

Разработка модуля дилерского кабинета 1С-Битрикс

Дилер, который звонит менеджеру чтобы узнать статус своего заказа или попросить выслать счёт — это звонок, который стоит денег. Умноженный на 200 дилеров и 10 заказов в месяц каждый, получаем 2000 ненужных обращений в месяц. Кабинет дилера закрывает эту нагрузку на менеджеров автоматически.

Что входит в кабинет: минимальный состав

Кабинет дилера — не витрина и не CMS-страница. Это функциональный инструмент со своей логикой доступа и данными, специфичными для каждого партнёра. Минимальный набор разделов:

  • Заказы — список с фильтрацией по статусу, дате, сумме. Детальная карточка с позициями, возможностью повтора и скачивания документов
  • Прайс-лист — актуальный прайс с дилерскими ценами, экспорт в 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:

  1. Получаем товары каталога с фильтром по доступным для дилера категориям
  2. Применяем дилерские цены из b_catalog_price по CATALOG_GROUP_ID дилера
  3. Применяем контрактные цены из Highload-блока (если есть, с приоритетом)
  4. Генерируем Excel через PhpSpreadsheet или отдаём CSV

Формат: артикул, название, единица измерения, остаток (опционально), цена. Файл генерируется на лету, не кешируется — цены должны быть актуальными на момент запроса. Если каталог большой (10К+ позиций) — генерируем в фоне через агент и даём ссылку на готовый файл.

Финансовый блок

Данные о кредитном лимите и задолженности не хранятся в Битриксе — они живут в 1С. Синхронизация через агент каждые 2 часа: вызывается REST-сервис 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.

Права доступа внутри компании

Внутри одной дилерской компании разные пользователи имеют разные права. Таблица b_dealer_user_roles:

Роль Заказы Документы Финансы Управление пользователями
owner Все Все Да Да
manager Свои Свои Нет Нет
accountant Все (чтение) Все Да Нет

Проверка прав — через DealerAccessControl::can($action) перед каждым действием. Централизованно, не в шаблонах.

Сроки

Блок Срок
Архитектура модуля, роли и контекст 2-3 недели
Управление заказами 2-3 недели
Документы и синхронизация с 1С 2-4 недели
Финансовый блок 1-2 недели
Экспорт прайса 1-2 недели
Тестирование 2-3 недели

Итого: 10-17 недель. Основная переменная — сложность интеграции с 1С для документов и финансов.