Изображения и файлы товаров передаются из 1С в 1С-Битрикс в том же CommerceML-обмене, что и каталог — отдельного протокола для них нет. Картинки лежат внутри выгрузки как относительные пути, а сами файлы кладутся рядом с import.xml. Разберём, как это устроено, куда попадают детальное и превью-изображение, как выгружать дополнительные картинки и произвольные файлы, и почему обмен нередко приходит без картинок.
Как изображения попадают в выгрузку
В протоколе CommerceML картинка не встраивается в XML как base64 — вместо этого 1С кладёт файл в каталог выгрузки, а в import.xml прописывает относительный путь к нему в теге <Картинка> внутри элемента <Товар>. При обмене по HTTP файлы предварительно упаковываются рядом с XML и передаются на сайт отдельными POST-запросами (режим mode=file), а модуль bitrix.xml_import раскладывает их во временную папку.
Физически на сайте всё оседает в каталоге обмена, по умолчанию /upload/1c_catalog/. Внутри — import.xml, offers.xml и подпапки с картинками (часто import_files/). Битрикс читает путь из тега <Картинка>, находит соответствующий файл в этой структуре, регистрирует его в модуле main (таблица b_file) и привязывает к элементу инфоблока.
Детальная картинка и превью
У элемента инфоблока в Битриксе два системных поля под изображения: PREVIEW_PICTURE (анонс) и DETAIL_PICTURE (детальная). Обработка обмена заполняет их по такому правилу:
- первая картинка товара из 1С уходит в детальное изображение (
DETAIL_PICTURE); - превью (
PREVIEW_PICTURE) не приходит из 1С готовым — Битрикс создаёт его сам, если в настройках инфоблока включено автоуменьшение; - остальные картинки (2-я, 3-я и т. д.) складываются в свойство типа «Файл» с множественным значением.
Чтобы превью генерировалось автоматически, в настройках инфоблока (Контент → Инфоблоки → Каталог → вкладка «Поля») для поля «Картинка для анонса» задают размеры уменьшенной копии. Тогда при импорте детальной картинки Битрикс сам создаёт из неё превью нужного размера. Это удобнее, чем гонять два файла из 1С.
Дополнительные изображения (галерея)
Для галереи товара в каталоге заводят пользовательское свойство инфоблока типа Файл с признаком «Множественное». Стандартно оно называется MORE_PHOTO — именно его используют шаблоны Битрикса (bitrix:catalog.element) для вывода дополнительных фото.
Обработка обмена автоматически кладёт все картинки товара, кроме первой, в свойство с кодом MORE_PHOTO, если оно существует в инфоблоке. Отдельной настройки в 1С для этого не требуется — достаточно, чтобы у номенклатуры было присоединено несколько файлов-изображений, а на сайте было создано свойство с нужным символьным кодом.
| Что в 1С | Куда попадает в Битриксе |
|---|---|
| 1-й присоединённый файл-картинка | DETAIL_PICTURE |
| Превью | PREVIEW_PICTURE (генерируется сайтом) |
| 2-й и последующие файлы | Свойство MORE_PHOTO |
MORE_PHOTO в инфоблоке нет, дополнительные картинки просто теряются при импорте — Битрикс не создаёт свойство автоматически. Проверьте его наличие перед первой выгрузкой каталога с галереями.Картинки торговых предложений
Если каталог использует торговые предложения (SKU) — цвета, размеры, варианты — то у каждого предложения может быть своя картинка. В CommerceML предложения выгружаются в отдельный файл offers.xml, и картинки к ним привязываются тем же тегом <Картинка>, но уже внутри элемента <Предложение>.
Импортируются они в инфоблок торговых предложений (SKU-инфоблок), в его собственные поля DETAIL_PICTURE / PREVIEW_PICTURE и свойство MORE_PHOTO этого инфоблока. Частая логика витрины: при выборе варианта на карточке подменяется картинка предложения; если у предложения картинки нет — показывается изображение родительского товара. Чтобы такое поведение работало, картинки должны быть присоединены именно к вариантам номенклатуры (характеристикам) в 1С, а не только к базовому товару.
Произвольные файлы: инструкции, сертификаты, документы
Кроме картинок к товару в 1С можно присоединить любые файлы — PDF-инструкции, сертификаты, паспорта, прайсы. Механизм тот же: CommerceML передаёт их через тег <Картинка> (протокол не различает «картинку» и «файл» по типу — различие только в расширении), и Битрикс складывает их в множественное свойство типа «Файл».
Чтобы документы не смешивались с фотографиями, заводят отдельное свойство инфоблока, например DOCUMENTS или FILES, и настраивают сопоставление на этапе импорта. Стандартная обработка кладёт все файлы в один поток, поэтому разнесение картинок и документов по разным свойствам обычно требует доработки обработчика события OnBeforeIBlockElementUpdate либо расширения импорта на стороне интегратора.
- Расширение имеет значение: по
.jpg/.pngБитрикс понимает, что это изображение; по.pdf/.doc— что это файл. От этого зависит, покажется ли превью. - Размер файлов влияет на объём выгрузки: тяжёлые PDF раздувают пакет обмена и замедляют передачу по HTTP.
Настройки обмена и обновление картинок
На стороне сайта поведение задаётся в мастере настройки обмена (Магазин → Настройки → Интеграция с 1С) и в самом инфоблоке. Ключевые моменты, которые стоит проверить:
- Права на запись в каталог обмена
/upload/1c_catalog/— без них файлы не сохранятся, а картинки «не приедут». - Лимит размера файла на приём: параметры
upload_max_filesizeиpost_max_sizeв PHP, а также ограничение веб-сервера — крупные изображения могут обрезаться. - Дробление файла обмена: если включено ограничение размера пакета, картинки передаются отдельными частями; при обрыве связи возможна потеря части файлов.
Важный нюанс — повторная выгрузка. Битрикс сравнивает картинки по имени и содержимому: если файл в 1С не менялся, при следующем обмене изображение не перезаписывается (это экономит ресурсы). Но если вы поменяли картинку в 1С, а имя файла осталось прежним, обновление иногда не срабатывает — тогда помогает полная выгрузка каталога (сброс флага «выгружать только изменения»).
b_file, раздувая папку /upload/. После крупных перевыгрузок полезно запускать чистку неиспользуемых файлов.Почему обмен приходит без картинок
Самая частая жалоба после настройки — «товары обновляются, а фото нет». Причины почти всегда из короткого списка:
- В 1С нет присоединённых файлов. Картинки хранятся в базе, но не как «файлы номенклатуры», а, например, в дополнительных реквизитах — стандартная обработка их не выгружает.
- Нет прав на запись в
/upload/1c_catalog/— XML приходит, а файлы не сохраняются. - Обрезка по размеру — крупные изображения не проходят лимиты PHP или nginx/Apache.
- Отсутствует свойство
MORE_PHOTO— тогда пропадают все картинки, кроме детальной. - Выгрузка «только изменений» — новые фото к старым товарам не подхватываются без полной выгрузки.
Диагностировать проще всего по содержимому /upload/1c_catalog/: если файлы картинок физически лежат там, но не привязаны — проблема на стороне импорта Битрикса; если их нет вовсе — проблема в выгрузке из 1С. Логи обмена и сам import.xml покажут, есть ли в нём теги <Картинка>.
Итог
Изображения и файлы товаров не требуют отдельного канала — они едут внутри стандартного CommerceML-обмена как относительные пути в import.xml и физические файлы в /upload/1c_catalog/. Первая картинка становится детальной, превью генерирует сам сайт, остальные фото уходят в свойство MORE_PHOTO, а документы — в отдельное файловое свойство. Большинство проблем сводится к трём вещам: нет присоединённых файлов в 1С, не хватает прав на запись или не создано нужное свойство инфоблока.
Мы в B2Bsite настраиваем полную передачу медиа — галереи товаров, картинки торговых предложений, сертификаты и инструкции — с корректным обновлением при повторных выгрузках и без разрастания /upload/. Если картинки «не приезжают» или дублируются, поможем найти причину в связке 1С и Битрикса и довести обмен до стабильной работы.
Частые вопросы
Где физически хранятся картинки после обмена с 1С?
Файлы приходят в каталог обмена, по умолчанию /upload/1c_catalog/, а затем регистрируются модулем main в таблице b_file и раскладываются в стандартную структуру /upload/. В import.xml при этом хранятся только относительные пути, а не сами изображения.
Почему товары обновляются, а картинки не приходят?
Чаще всего в 1С у номенклатуры нет присоединённых файлов-изображений либо у сайта нет прав на запись в /upload/1c_catalog/. Ещё одна причина — режим выгрузки только изменений, при котором новые фото к существующим товарам не подхватываются.
Как выгрузить несколько фотографий в галерею товара?
Присоедините к номенклатуре в 1С несколько файлов-картинок и создайте в инфоблоке множественное свойство типа Файл с кодом MORE_PHOTO. Первая картинка станет детальной, остальные автоматически попадут в это свойство.
Нужно ли выгружать превью-изображение из 1С отдельно?
Нет. Превью (PREVIEW_PICTURE) удобнее генерировать на стороне сайта: в настройках инфоблока задают размер уменьшенной копии, и Битрикс сам создаёт превью из детальной картинки при импорте.
Можно ли передавать PDF-инструкции и сертификаты?
Да, любые присоединённые к номенклатуре файлы передаются тем же механизмом, что и картинки. Чтобы документы не смешивались с фото, заводят отдельное файловое свойство инфоблока и настраивают его заполнение, что обычно требует небольшой доработки обработчика импорта.
Почему изменённая в 1С картинка не обновилась на сайте?
Битрикс сравнивает файлы и не перезаписывает картинку, если считает её неизменной. Если имя файла осталось прежним, обновление может не сработать — помогает полная выгрузка каталога со сбросом флага выгрузки только изменений.
Есть ли у торговых предложений свои картинки?
Да, картинки предложений выгружаются в offers.xml и импортируются в SKU-инфоблок в его поля DETAIL_PICTURE и свойство MORE_PHOTO. Для этого файлы должны быть присоединены к вариантам (характеристикам) номенклатуры в 1С.
Как понять, на чьей стороне проблема с картинками?
Посмотрите содержимое /upload/1c_catalog/ и сам import.xml. Если файлы картинок лежат там и в XML есть теги Картинка, но фото не привязаны — проблема на импорте Битрикса; если файлов и тегов нет — проблема в выгрузке из 1С.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.