Imagine: an ERP generates an XML with 120,000 items, 4.5 GB — and the Bitrix PHP handler crashes after 300 seconds. Sound familiar? That's a real case from our client, a construction materials plant. This happens when standard CommerceML cannot handle series, attributes, and multiple units of measurement. Setting up exchange between 1C:ERP and 1C-Bitrix requires deep understanding of both systems; otherwise, synchronizing items, prices, and orders turns into a headache. We specialize precisely in such non-standard integrations, and after 50+ projects we have developed an approach that guarantees stable exchange without data loss.
What problems does the exchange setup solve?
Multiple units of measurement. In ERP, items are sold in pieces, packages, and pallets simultaneously. CommerceML transmits the basic unit, others via ЕдиницыИзмерения in XML. The Bitrix module reads only the basic unit unless the handler OnIBlockElementAdd / OnIBlockElementUpdate is customized.
Attributes and variants. In ERP, an "attribute" is a dimension of an item (color, size, supplier SKU). In Bitrix, these are SKUs. Standard exchange creates SKUs but loses connections for nested values or thousands of variants — the XML file balloons to gigabytes, and the exchange times out.
Series and batches. CommerceML has no tag for series — they must be transmitted via ДополнительныеРеквизиты and processed by a custom handler.
How we set up exchange: step-by-step
- Audit the ERP configuration: determine item structure, presence of series, batches, additional attributes. Check the ERP version and exchange node settings.
- Configure ERP: specify the site URL, authorization parameters, item filter (organization, warehouse, price type), enable transmission of attributes, units, series. Set the scheduled job schedule.
- Configure Bitrix: in the "Data exchange with 1C" module, select the exchange type "Catalog + Trade catalog", enable "Do not update group binding" (if there are manual bindings), map properties:
ДополнительныеРеквизиты→ infoblock properties. - Customize handlers: write event handlers for reading additional fields, logging price conflicts, and excluding duplicates.
- Test on a DB copy: run full and incremental exchanges, verify data correctness.
- Monitoring and support: after switching to production, set up logging and alerts.
Why standard CommerceML exchange is not suitable for ERP?
The standard 1C-Bitrix module (bitrix.catalog) is designed for the typical "1C:Trade Management" configuration. 1C:ERP has many non-standard subsystems: serial accounting, batches, complex organizational structure. As 1C-Bitrix documentation states: "Non-standard configurations require modification of the exchange module." We confirm this in practice — every project requires individual customization.
How to ensure a reliable exchange architecture?
For ERP with a catalog of 50,000+ items, it is recommended to split full and incremental exchanges:
| Exchange type | Frequency | Content |
|---|---|---|
| Full | Once per day (night) | All items, groups, attributes |
| Stock + prices | Every 15–30 min | Only changed records |
| Orders (→ ERP) | Every 5 min | New and changed orders from Bitrix |
Incremental exchange is 30 times faster than full because it transmits only the delta.
What to do with typical errors?
| Error | Cause | Solution |
|---|---|---|
| Duplicate items | GUID mismatch: regenerated after ERP restore | Compare XML_ID in b_iblock_element with GUID from test export |
| Exchange does not start | Encoding: ERP sends windows-1251, Bitrix expects UTF-8 | Check Content-Type header of HTTP response |
| Timeout | Huge XML (4+ GB) | Enable ZIP archiving; set max_execution_time = 0 and memory_limit = 2048M for cron |
Case: ERP integration for a manufacturing enterprise (from our practice)
Our client — a construction materials plant, 120,000 items, 4 warehouses. Problem: full exchange generated a 4.5 GB XML, Bitrix PHP handler crashed after 300 seconds.
Solution in three steps:
-
On the ERP side, we configured transmission of only "active" items (filter by attribute "Publish on site"). Volume dropped to 800 MB.
-
Enabled side file reading mode (ZIP archiving in node settings): ERP packs XML into zip, Bitrix unpacks on the fly. Transfer time dropped 3 times.
-
In
php.inifor the cron process, setmax_execution_time = 0andmemory_limit = 2048M. Full exchange — 18 minutes, incremental — 40 seconds.
Additionally: wrote a handler for the OnIBlockElementBeforeUpdate event to log conflicts — when a manager changed a price manually on the site, and the ERP tries to overwrite it. Conflicts are written to a separate table; a daily report goes to the technologist.
What is included in exchange setup?
- Audit of 1C:ERP configuration
- Setting up the exchange node in ERP and the exchange module in Bitrix
- Customizing event handlers for non-standard fields
- Testing on a DB copy
- Documentation and training for your managers
- Post-launch support (1 month)
Timeline and cost
A typical project takes 3–8 working days. The exact timeline depends on the volume of items and the number of non-standard entities. To evaluate your configuration, contact us — we will analyze the task and propose a solution.
We have 10+ years of experience in 1C and Bitrix integration. We have completed more than 50 projects, from small online stores to large manufacturing enterprises. Order exchange setup, and your data will be synchronized without errors. Contact us for an audit of your configuration — we will prepare an individual solution.

