1C-Bitrix Integration with 1C:Enterprise
The standard exchange between 1C-Bitrix and 1C:Enterprise operates via the CommerceML 2.08 protocol — XML files that 1C uploads to the website via HTTP. On paper it looks simple: enable the exchange in the "Online Store" module, configure the publication address in 1C — and products synchronise. In practice, the very first real store with 50,000 SKUs and a non-standard product structure exposes every limitation of the standard mechanism.
How the Standard Exchange Works
The exchange process consists of two independent data flows:
Catalogue export (1C → website):
- 1C generates XML files
import*.xml(catalogue structure, products, properties) andoffers*.xml(prices and stock levels) - Uploads the files to the website via HTTP POST to
/bitrix/admin/1c_exchange.php - The website parses the files and updates the product info block
Order exchange (website → 1C):
- The website generates an XML file with orders for the period
- 1C retrieves the orders and creates "Customer Order" documents
- 1C returns updated order statuses back to the website
The entry point on the website is the 1c_exchange.php script in the admin section. It processes the commands: checkauth, init, file, import.
Website-Side Configuration
Settings → Product Settings → Online Store → 1C-Bitrix: Trade Management:
- Catalogue info block: select the info block into which the product catalogue will be imported
- Price type: which price type from 1C becomes the primary price on the website
- Upload images: enable only if product images are managed in 1C
- Use product offers (SKU): for products with variants (colour, size)
- Allow deletion: a dangerous option — products absent from the export will be deactivated
Critical setting — "Save changes made on the website": when enabled, description and image edits made on the website will not be overwritten at the next exchange. When disabled — every import overwrites content from 1C.
1C-Side Configuration
In the "Trade Management" configuration (UT 10, UT 11) or any configuration with a website exchange subsystem:
Sales → Website Exchange → Sites:
Publication address: https://myshop.ru/bitrix/admin/1c_exchange.php
Login: admin (or a dedicated user)
Password: ***
Exchange type: Data Exchange
Order export period: from the date of last exchange
To test the exchange in 1C: Website Exchange → Run Exchange. Detailed import logs are available in the website logs (/bitrix/modules/iblock/tools/).
Typical First-Run Issues
Timeout with large files. Exporting 50,000 products in a single XML file produces a 200–400 MB file. The server can take up to 30 minutes to parse it — the PHP process dies before that. Solution: in 1C settings, enable "Export files with N products per file" and set the threshold to 1,000–5,000.
Cyrillic characters in filenames. If the export folder path contains Cyrillic characters — files do not arrive. Change the publication path to transliterated Latin characters.
Encoding mismatch. 1C exports UTF-8, but older configurations may export windows-1251. Check the <?xml version="1.0" encoding="UTF-8"?> header in the file.
Product duplication. Each product in 1C has a unique ID identifier in CommerceML. If the 1C database was updated (migration, restructuring) and identifiers changed — all products will be recreated at the next exchange and the old ones deactivated. Result: thousands of duplicates and broken links.
Case Study: Integration for a Construction Materials Store
A building materials store, 80,000 SKUs, UT 11.4. The standard exchange was working, but after each 1C update (~once a month) 3–5% of products received new IDs due to batch re-linking. The website deactivated these products and managers restored them manually.
Solution: a middleware script run before import compares IDs from the new XML against a mapping table {old_id => new_id} generated at each exchange. If the ID changed but the SKU (Артикул) matches — the product is updated rather than recreated. The number of "lost" products dropped to zero. The script was added as a handler for the OnIBlockElementBeforeAdd event.
Access Rights for the Exchange Account
Do not use an administrator account for 1C exchange. Create a dedicated user:
- Group with write permissions to the catalogue info block
- Access to the exchange component in the admin section
- No access to other admin sections
In 1c_exchange.php, rights are verified: the user must belong to a group with iblock_admin permission for the required info block.
Exchange Frequency and Server Load
| Mode | Server Load | Use Case |
|---|---|---|
| Full export once per day | Peak, 5–30 min | Small catalogues (up to 10,000) |
| Full export + delta update | Moderate | Large catalogues |
| Stock and prices only, every hour | Low | Highly volatile warehouses |
| REST API + 1C events | Minimal | Real-time critical data |
For large catalogues — separate the full catalogue synchronisation (at night) from price/stock updates (every hour). This significantly reduces server load during business hours.
Integration Timeline
| Task | Timeline |
|---|---|
| Standard catalogue + order exchange | 1–3 days |
| + Non-standard attribute structure | 3–5 days |
| + Resolving ID issues after database migration | +1–2 days |
| Custom exchange via REST API | 1–3 weeks |







