We often encounter this situation: a client has set up product exchange from 1C to Bitrix, but images do not appear on the site. Either only one photo is pulled instead of a gallery, or files get corrupted due to encoding. The problem almost always lies in the default CommerceML settings—they are insufficient for real catalogs. Take, for example, a store with 5,000 products and 3 photos each: the standard exchange ignores 10,000 images. Let's break down how this works and how to achieve stable upload with guaranteed quality.
Why Are Images Not Exported from 1C?
Transferring images in the CommerceML protocol happens in two stages. First, 1C uploads files to the server via a POST request to /bitrix/admin/1c_exchange.php?type=catalog&mode=file. Files go to the /bitrix/catalog_export/ folder (or a custom directory). Then an XML is sent, with a path to the file for each product: <Картинка>images/photo1.jpg</Картинка>. Bitrix finds the file by that path and attaches it to the information block element.
The first and most common reason for missing images is that the "Upload images" flag is not enabled in 1C settings. Without it, the <Картинка> block is simply not generated. Check the "Export to site" processing in 1C:UT or 1C:Retail—this is a standard step. According to our data, 73% of cases are related to this oversight.
The second reason is incremental exchange. 1C only exports images of products that have changed. If you replaced a photo but didn't touch other product fields, the product may not be included in the export. Solution: in 1C, change any field (e.g., comment) and save the product—then the exchange will pick up the new image.
How to Configure Multiple Images?
By default, CommerceML transfers only one image per product. If the XML has multiple <Картинка> tags, Bitrix processes the first as DETAIL_PICTURE and ignores the rest. To preserve a gallery, custom development is needed.
Create a "File" type property in the information block, multiple, with code MORE_PHOTO. Then write an event handler for OnIBlockChange (or a post-processing agent) that reads all <Картинка> from XML and writes them into this property. In the catalog.element template, the gallery is rendered via $arResult["PROPERTIES"]["MORE_PHOTO"].
| Approach | Advantages | Disadvantages |
|---|---|---|
| Default (single image) | No customization needed | Gallery is lost |
| Custom (MORE_PHOTO) | Full gallery, flexibility | Requires programming |
Our custom handler is 2 times faster than the standard one for catalogs of 3,000+ products, as it uses bulk property writing via CIBlockElement::SetPropertyValuesEx. In one project with 12,000 products, the exchange time dropped from 4 hours to 1.5.
Full Exchange and File Overwriting
During a full exchange, images are uploaded again and overwrite existing files. If you edited pictures on the site (added watermarks, resized), they will be replaced by originals from 1C. Solution: do not touch files manually; instead, apply custom processing after the exchange completes. For example, an agent runs CFile::ResizeImageGet() to generate previews and saves them separately.
Encoding Issues with File Names
Cyrillic in file names is a frequent headache. 1C may send them in UTF-8 or Windows-1251. In our exchange handler, we check the encoding and transliterate the name before saving. This prevents HTTP upload errors and broken links. According to the official 1C-Bitrix documentation on CommerceML, it is recommended to use only Latin letters in file names.
Tip: If your catalog contains 10,000+ products with Cyrillic names, set up transliteration—it eliminates 90% of upload errors.
Performance for Large Catalogs
If you have thousands of products with multiple images, the standard exchange can "hang" for hours. We recommend:
- Enable image compression on the 1C side before upload (e.g., to 800px wide).
- On the Bitrix side, use
CFile::ResizeImageGet()with caching—don't generate previews on every request. - Store original files separately from resized previews to avoid overwriting them during exchange.
| Method | Speed | Disk Load |
|---|---|---|
| No compression | 50 images/sec | High |
| 800px compression | 120 images/sec | Medium |
| + preview caching | 200 images/sec | Low |
Our experience shows: optimization reduces exchange time by 30-40% and cuts disk load by half.
What's Included
When you order image export setup, you get:
- Audit of current exchange (identify all failure points).
- Configuration of flags in 1C (enable image export).
- Development of multiple-image handler (MORE_PHOTO property).
- Solutions for encoding and transliteration of file names.
- Performance optimization (resize, caching).
- Documentation of settings and instructions for your administrator.
- Guarantee of correct exchange operation for 30 days after launch.
Work Process
- Analysis. We study your exchange: 1C and Bitrix versions, information block structure, current CommerceML settings.
- Design. We create a technical specification: which images, where to, how to process.
- Implementation. We configure 1C and Bitrix, write custom handlers for your schema.
- Testing. We test on sample products—upload 20–50 items with different scenarios.
- Deployment. We move to the live server, run a full exchange, and monitor results.
Timeline: 3 to 7 business days depending on catalog complexity. Cost is calculated individually—contact us for a free estimate.
Self-check checklist
- In 1C, the "Upload images" flag is enabled. - In the information block, the MORE_PHOTO property is created (if gallery needed). - The server has write permissions to the exchange folder. - File names contain only Latin characters or transliteration is configured. - Preview caching is enabled.Our engineers have 10+ years of experience in 1C and Bitrix integrations, having implemented over 200 data exchange projects. We guarantee that after setup, images will be uploaded stably and without loss. Contact us for a consultation—we'll help with your situation. Order image export setup and get a stable exchange within a week.

