Configuring Product Line Exchange between Bitrix24 and 1C
When a manager creates a commercial proposal or invoice in Bitrix24, they select products from the CRM catalog. This catalog is a separate entity, not connected to 1C by default. Current prices, stock, new items — all need to be synchronized manually or set up for automatic exchange.
Products catalog in Bitrix24 CRM
The CRM catalog is stored in b_crm_product tables (line items) and b_crm_product_section (sections). This is not the same catalog used in the sale internet store module — it's a separate structure, specific to CRM. Access via REST: crm.product.list, crm.product.get, crm.product.add, crm.product.update.
Each product has fields: NAME, PRICE, CURRENCY_ID, DESCRIPTION, XML_ID. The XML_ID field is key for synchronization: this is how correspondence is established between a CRM item and 1C nomenclature.
Exchange direction
Usually exchange is one-way: 1C → Bitrix24. 1C is the master system for nomenclature and prices, CRM receives updates. Reverse exchange (manager added product to CRM — appears in 1C) is rare and requires additional business logic.
What is transmitted from 1C to Bitrix24:
| Data | Comment |
|---|---|
| Product name | How it displays in proposal and invoice |
| Product code / XML_ID | Identifier for matching |
| Price (one or multiple price types) | Retail, wholesale, dealer |
| Unit of measure | pc, kg, m, etc. |
| Section/group | Catalog structure |
| Activity indicator | Products removed from sale |
Stock balances are typically not transmitted to CRM catalog — they're needed in the internet store catalog, not CRM.
Synchronization mechanism
Option 1: REST API. A script or service on the 1C side (via external exchange component) calls Bitrix24 methods:
-
crm.product.listwithXML_IDfilter — check if product exists. -
crm.product.update— update price and existing data. -
crm.product.add— add new product.
Batch operations are performed via REST API batch requests (up to 50 methods in one request), which speeds up large catalog synchronization.
Option 2: Standard 1C-Bitrix24 module. Uses CommerceML export from 1C. In this case, the internet store catalog is synchronized (if it exists), and CRM catalog can be populated from it via additional script — exchange component creates/updates records in b_crm_product based on data from b_iblock_element.
Price types
If 1C has multiple price types (retail, wholesale), Bitrix24 CRM can also store multiple prices via product properties or price lists. For CRM deals, only base product price is used — the manager changes it manually in the line item. If automatic price types are needed in CRM, additional customization is required.
Exchange frequency
- Catalog and prices — daily is sufficient for most businesses. If prices change several times a day — every 1-2 hours.
-
Execution — via Bitrix agents (
\CAgent::AddAgent) or cron.
Setting up product line exchange takes 4-8 hours with a clean catalog with correct XML_ID in 1C.







