Настройка выгрузки изображений товаров из 1С в 1С-Битрикс
Изображения передаются из 1С в Битрикс в составе стандартного обмена CommerceML. В import.xml для каждого товара блок <Картинка> содержит относительный путь к файлу изображения. Файлы передаются отдельно — загружаются на сервер до отправки XML или в том же HTTP-сеансе обмена.
Как работает передача изображений
В протоколе CommerceML изображения выгружаются в два этапа:
-
Загрузка файлов. Через
POST /bitrix/admin/1c_exchange.php?type=catalog&mode=file1С заливает изображения в папку/bitrix/catalog_export/(или настраиваемую папку обмена). -
Загрузка XML.
import.xmlсодержит ссылки на файлы:<Картинка>images/photo1.jpg</Картинка>. При разборе XML Битрикс находит файл по пути и привязывает к элементу инфоблока.
В инфоблоке изображение попадает в PREVIEW_PICTURE (превью) или DETAIL_PICTURE (детальное). Дополнительные изображения — в свойство типа «Файл» или через \Bitrix\Iblock\PropertyTable если используется несколько фотографий.
Настройка в 1С
В обработке «Выгрузка на сайт» (1С:УТ, 1С:Розница и др.) должен быть включён параметр «Выгружать картинки». Без этого флага XML формируется без блоков <Картинка>, и изображения не передаются.
Важно: 1С выгружает изображения только тех товаров, которые изменились (при инкрементальном обмене). Если изображение добавили к товару впервые — оно попадёт при ближайшем обмене. Если изображение поменяли, а другие данные товара не менялись — 1С может не включить товар в выгрузку. Решение: при обновлении изображения в 1С вручную «трогать» запись товара (изменить любое поле и сохранить).
Множественные изображения
По стандарту CommerceML для нескольких изображений можно передавать несколько тегов <Картинка>. Битрикс по умолчанию обрабатывает первое изображение как DETAIL_PICTURE, остальные теряются — если свойство «Дополнительные изображения» в инфоблоке не настроено.
Для поддержки галереи изображений:
- В инфоблоке создаётся свойство типа «Файл», множественное, например с кодом
MORE_PHOTO. - В обработчике события
OnIBlockChange(или агенте постобработки) дополнительные изображения из XML записываются в это свойство. - В шаблоне компонента
catalog.elementвыводим галерею через$arResult["PROPERTIES"]["MORE_PHOTO"].
Повторная выгрузка изображений
При полном обмене изображения заново загружаются на сервер и перепривязываются к элементам. Это означает, что при каждом обмене файлы перезаписываются. Если изображения редактировались на стороне сайта (ресайз, ватермарк) — они будут перезаписаны оригиналами из 1С.
Решение: при необходимости кастомной обработки — применять её через агент после обмена, а не вручную редактировать файлы.
Проблемы с кодировкой имён файлов
Если имена файлов содержат кириллицу — возможны проблемы при передаче через HTTP. 1С иногда передаёт имена файлов в UTF-8, иногда в Windows-1251. В обработчике Битрикс проверяем кодировку имени файла и при необходимости транслитерируем его при сохранении.
Размер изображений и производительность
При большом каталоге (тысячи товаров с несколькими изображениями) загрузка изображений в процессе обмена может занимать значительное время. Рекомендации:
- Включить сжатие изображений на стороне 1С перед выгрузкой (или использовать внешнюю обработку ресайза)
- На стороне Битрикс — ресайз через
CFile::ResizeImageGet()с кешированием, а не при каждом обращении - Хранить оригинальные файлы отдельно от отресайзенных превью







