Configuring 1C:ERP Enterprise Management and 1C-Bitrix Exchange
A typical scenario: ERP maintains a multi-level item catalog with characteristics, series, batches, and multiple units of measure — and all of this must be transferred to the website so that product cards look reasonable, while prices and stock update without delay. The standard 1C-Bitrix exchange module (bitrix.catalog) with CommerceML 2.08 handles most of this, but 1C:ERP is a non-standard configuration and almost never works correctly out of the box.
Where the Standard ERP Exchange Breaks
Multiple units of measure. In ERP, items can be sold in pieces, packages, and pallets simultaneously. CommerceML transmits the base unit; others are passed via UnitsOfMeasure in the XML. The 1C-Bitrix module reads only the base unit unless the OnIBlockElementAdd / OnIBlockElementUpdate handler has been customized.
Characteristics and variants. In ERP, a "characteristic" is a dimension of an item (color, size, supplier article). In 1C-Bitrix, these are trade offers (SKUs). The standard exchange creates SKUs but loses relationships if characteristics in ERP have nested values, or if a single item has thousands of variants — causing the XML file to grow to several gigabytes and the exchange to time out.
Series and batches. In ERP, serial tracking is a separate subsystem. CommerceML 2.08 has no standard tag for series. They must be transmitted via AdditionalAttributes and read on the 1C-Bitrix side with a custom handler.
Organizational structure. ERP works with multiple organizations and warehouses. 1C-Bitrix expects warehouses as Warehouse with a GUID in the XML. If ERP has multiple warehouses with different stock levels — an explicit mapping table "ERP warehouse → 1C-Bitrix warehouse" is required.
Reliable Exchange Architecture
For an ERP catalog of 50,000+ items, I recommend separating the full and incremental exchange:
| Exchange Type | Frequency | Contents |
|---|---|---|
| Full | Once per day (night) | All items, groups, characteristics |
| Stock + prices | Every 15–30 min | Changed records only |
| Orders (→ ERP) | Every 5 min | New and changed orders from 1C-Bitrix |
The full exchange at night reduces server load. The incremental exchange uses ModifiedDate in the ERP query: only objects changed since the last successful session are exported.
ERP-side configuration. In the ERP web service exchange node (section Site Integration):
- Specify the site URL and authorization credentials
- Configure the item filter (organization, warehouse, price type)
- Enable transmission of characteristics, units of measure, and series
- Set the scheduled task timetable
1C-Bitrix-side configuration. In the 1C Data Exchange module (/bitrix/admin/1c_exchange.php):
- Exchange type: Catalog + Trade Catalog
- Enable "Do not update section binding" (if manual section assignments exist on the site)
- Configure property matching:
AdditionalAttributes→ infoblock properties
Case Study: ERP Integration for a Manufacturing Enterprise
Client — a building materials plant, 120,000 item positions, 4 warehouses. Problem: the full exchange generated a 4.5 GB XML file, and the PHP handler in 1C-Bitrix timed out after 300 seconds.
Three-step solution:
-
On the ERP side, configured the export to transmit only "active" items (filtered by the "Publish on site" attribute). Volume dropped to 800 MB.
-
Enabled streaming file read mode (zip archiving in the exchange node settings): ERP packs the XML into a zip archive, 1C-Bitrix extracts it on the fly. Transfer time dropped by 3x.
-
In
php.inifor the cron process, setmax_execution_time = 0andmemory_limit = 2048M. Full exchange — 18 minutes, incremental — 40 seconds.
Additionally: wrote an OnIBlockElementBeforeUpdate event handler to log conflicts — for cases when a manager manually changed a price on the site and ERP attempted to overwrite it. Conflicts are written to a separate table; a daily report is sent to the production technologist.
Common Errors on the First Run
GUIDs do not match. ERP and 1C-Bitrix identify objects by XML_ID (GUID). If ERP was rebuilt or restored from a backup — GUIDs were regenerated, and 1C-Bitrix will create duplicates instead of updating existing records. Before launching the exchange, cross-reference XML_IDs in b_iblock_element with GUIDs from a test export.
Encoding. ERP exports UTF-8, but older versions of the web service may return windows-1251. 1C-Bitrix expects UTF-8. Symptom: garbled characters in names or an XML parsing error. Check the Content-Type header of the HTTP response.
Large images. ERP may embed images directly in XML (base64). With thousands of items, the file grows to an unacceptable size. Configure ERP to send images as a separate package, or disable image transmission through the exchange and upload them via a separate script.
Project Timeline and Scope
A typical ERP ↔ 1C-Bitrix exchange setup project: 3–8 working days depending on the catalog size and the number of non-standard entities (series, batches, additional attributes). Testing on a database copy before switching to production is handled separately.







