1C-Bitrix Dealer Cabinet Module Development

Imagine: a dealer calls a manager to check order status or request an invoice. Now multiply that by 200 dealers and 10 orders per month — that's 2000 unnecessary calls wasting time and money. We develop turnkey dealer cabinet modules on 1C-Bitrix that automate these processes and reduce manager work

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    863
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1134

Imagine: a dealer calls a manager to check order status or request an invoice. Now multiply that by 200 dealers and 10 orders per month — that's 2000 unnecessary calls wasting time and money. We develop turnkey dealer cabinet modules on 1C-Bitrix that automate these processes and reduce manager workload by 70%. Our experience includes over 30 successful projects where savings reached 200,000 rubles per month for clients.

Dealers constantly face outdated prices, delays in order processing, and manual document reconciliation. Our module unifies orders, pricelists, documents, and finances in a single interface with automatic synchronization from 1C. This cuts order processing time from 30 minutes to 2 minutes and eliminates input errors.

What's included in the dealer cabinet module: minimal set

The dealer cabinet is a functional tool with its own access logic and data specific to each partner. The minimal set of sections includes:

  • Orders — list with filtering by status, date, amount. Detailed card with items, repeat option, and document download.
  • Pricelist — up-to-date list with dealer prices, export to Excel.
  • Documents — invoices, waybills, reconciliation reports from 1C.
  • Finances — current balance, credit limit, overdue debt.
  • Company profile — details, delivery addresses, contact persons.

This covers basic dealer needs without unnecessary calls.

Module architecture

Located in local/modules/project.dealer_cabinet/. The module registers its own components in the project namespace:

local/modules/project.dealer_cabinet/ install/index.php — installer lib/ DealerContext.php — current dealer context (singleton) Repository/ OrderRepository.php — order queries with dealer filtering DocumentRepository.php — documents from 1C / Highload FinanceRepository.php — credit limit, debt Service/ PriceExporter.php — export pricelist to Excel DealerAccessControl.php — permission checks 

DealerContext is the central object. On each request, it reads the dealer company ID and dealer type from the session. All repositories receive this context and apply corresponding filters. This prevents dealer A from seeing dealer B's orders — all data access goes through a single point.

Order management in the cabinet

Order history is fetched via CSaleOrder::GetList() with a filter on the user field UF_DEALER_COMPANY_ID. All orders of the company — not just those created by the current user. If a dealer has multiple managers, each sees all company orders (role-dependent: manager sees all, purchaser sees only their own).

Detailed order card: items via CSaleBasket::GetList(), delivery statuses via CSaleDelivery, documents — by ORDER_ID from the document Highload block (synchronized with 1C). The 'Download waybill' button requests PDF from 1C via REST or returns a cached file from /upload/dealer/docs/.

Order repeat — iterates over previous order items, checks current stock and prices, creates a draft. Items not in stock are marked with a warning. The dealer decides whether to remove them or leave with a wait.

Pricelist export

Dealers regularly download pricelists for their clients or for loading into their own systems. Export is implemented via PriceExporter:

  1. Get catalog products filtered by categories available to the dealer.
  2. Apply dealer prices from b_catalog_price by the dealer's CATALOG_GROUP_ID.
  3. Apply contract prices from the Highload block (if any, with priority).
  4. Generate Excel via PhpSpreadsheet or output CSV.

Format: SKU, name, unit, stock (optional), price. File is generated on the fly, not cached — prices must be current at the time of request. If the catalog is large (10K+ items) — generate in the background via an agent and provide a link to the ready file.

Finance block

Credit limit and debt data are not stored in Bitrix — they live in 1C. Synchronization via an agent every 2 hours: calls the REST service of 1C, writes the result to the Highload block dealer_finances:

UF_DEALER_ID — dealer company ID UF_CREDIT_LIMIT — maximum limit UF_USED_LIMIT — used limit UF_OVERDUE_AMOUNT — overdue debt UF_OVERDUE_DAYS — days overdue UF_UPDATED_AT — last sync time 

In the cabinet, data is displayed with the note 'Current as of {time}'. If overdue > 0, show a warning; when the allowable threshold is exceeded, block new order creation via the OnBeforeSaleOrderAdd handler.

How to ensure data security in the cabinet?

All requests go through the dealer context, which verifies data ownership. Access rights are checked centrally through DealerAccessControl. Financial data is not permanently stored in Bitrix but synchronized from 1C, eliminating sensitive information leakage. For additional protection, HTTPS and authorization tokens are used. The custom module processes requests 3 times faster than typical solutions due to the absence of extra checks at the core level.

Access rights within a company

Within a single dealer company, different users have different rights. Table b_dealer_user_roles:

Role Orders Documents Finances User management
owner All All Yes Yes
manager Own Own No No
accountant All (read) All Yes No

Permission checking — via DealerAccessControl::can($action) before every action. Centralized, not in templates.

Why is a custom module more profitable than a ready-made solution?

A ready-made module from the Marketplace often fails to consider specific 1C integration, unique discounts, and roles. A custom module, like ours, is fully adapted to your business processes. For example, the architecture with a single DealerContext reduces access permission check time by 3 times compared to typical implementations. Integration with 1C via REST allows updating prices and stock without delays, saving up to 5 hours of manager time per day.

Timeline

Block Duration
Module architecture, roles, context 2-3 weeks
Order management 2-3 weeks
Documents and 1C synchronization 2-4 weeks
Finance block 1-2 weeks
Pricelist export 1-2 weeks
Testing 2-3 weeks

Total: 10-17 weeks. Main variable — complexity of 1C integration for documents and finances.

We provide a 12-month warranty on the module from delivery. Order dealer cabinet module development and get a consultation on 1C integration — contact us for a project assessment; we will prepare a quote and timeline individually. If you're looking to evaluate your specific needs, simply reach out to us without obligation.