К статье
Практический материал

Автоматизация · 11 мин

Как выгрузить картинки из 1С в Битрикс

Как выгрузить картинки товаров из 1С в Битрикс: настройка обмена, типовой модуль, CommerceML, проверка результата и решение типичных ошибок с изображениями.

Выгрузка изображений товаров из 1С в Битрикс — стандартная задача при интеграции учётной системы с интернет-магазином. В большинстве типовых конфигураций (Управление торговлей, Комплексная автоматизация, Управление нашей фирмой) картинки передаются вместе с каталогом через обмен в формате CommerceML, и для базового сценария не требуется программирование.

Проблемы обычно возникают не на этапе «включить обмен», а в деталях: картинки не привязаны к товарам в 1С, выгружается не тот формат файлов, изображения слишком тяжёлые и обмен падает по таймауту, либо на стороне сайта выгрузка попадает не в тот инфоблок. Ниже разобраны рабочие способы, настройки и типичные ошибки.

Как передаются картинки между 1С и Битриксом

Битрикс и 1С обмениваются данными по протоколу CommerceML (CML). Во время сеанса обмена 1С формирует файлы import.xml (каталог товаров) и offers.xml (торговые предложения), а изображения складывает в подкаталог import_files рядом с этими файлами. Внутри XML у каждого товара указывается относительный путь к файлу картинки, и Битрикс при импорте подхватывает файлы и привязывает их к элементам инфоблока.

Передача идёт по HTTP(S): 1С пошагово отправляет архивы на скрипт обмена сайта (обычно /bitrix/admin/1c_exchange.php). Понимание этой схемы важно, потому что большинство сбоев связано именно с транспортом: таймауты веб-сервера, ограничения на размер запроса, права на папку upload на стороне Битрикса.

Подготовка: картинки должны быть корректно прикреплены в 1С

Прежде чем настраивать обмен, проверьте, что изображения действительно хранятся в 1С и связаны с номенклатурой. В типовых конфигурациях картинка добавляется в карточку товара через присоединённые файлы, а одна из них назначается основным изображением. Если у товара нет основного изображения или файл хранится где-то вне карточки (например, просто лежит в сетевой папке), обмен его не увидит.

Откройте выборочно 10–20 карточек товаров из разных групп и убедитесь: картинка отображается в карточке, файл открывается, у части товаров есть несколько изображений (если планируете выгружать галерею). Заодно оцените размер файлов — фотографии по 10–15 МБ замедлят обмен и могут привести к обрывам.

Настройка типового обмена с сайтом в 1С

В типовых конфигурациях перейдите в раздел обмена с сайтом (в УТ 11: «Администрирование → Настройки интеграции → Обмен с сайтами»; в УНФ: «Компания → Интеграция → Обмен с сайтами»). Создайте новый узел обмена и заполните параметры подключения.

Порядок настройки узла обмена
  1. 1
    Укажите адрес сайта вида https://site.ru/bitrix/admin/1c_exchange.php, логин и пароль пользователя Битрикс с правами на обмен
  2. 2
    Проверьте соединение кнопкой «Проверить соединение» — 1С должна получить ответ от сайта
  3. 3
    Настройте отбор товаров: выберите группы номенклатуры, которые нужно выгружать
  4. 4
    На вкладке выгрузки товаров отметьте выгрузку изображений (файлов) и при необходимости дополнительных картинок
  5. 5
    Сохраните узел и выполните обмен вручную, затем настройте расписание регламентного задания

Обратите внимание на пользователя, от имени которого идёт обмен. В Битриксе этой учётной записи нужны права на импорт каталога в конкретный инфоблок. Частая ошибка — обмен настроен под администратором, а потом его перенастроили на ограниченного пользователя без прав на инфоблок: товары выгружаются, а картинки молча пропадают.

Если обмен должен идти регулярно, включите автоматический обмен по расписанию. Учтите, что полная выгрузка большого каталога с картинками — ресурсоёмкая операция; расписание лучше ставить на часы минимальной нагрузки на сайт.

Настройки на стороне Битрикс

В административном разделе Битрикса откройте «Магазин → Настройки → Интеграция с 1С» (в зависимости от редакции путь может отличаться). Здесь задаются ключевые параметры приёма данных: инфоблок, в который загружается каталог, обработка изображений, действия с элементами, отсутствующими в выгрузке.

Проверьте настройки обработки картинок: Битрикс умеет автоматически создавать превью и уменьшенные версии изображений при импорте. Если на сайте настроено ресайзить картинки до разумных размеров, тяжёлые исходники из 1С не испортят скорость страниц каталога. Также убедитесь, что у веб-сервера достаточно лимитов: post_max_size и upload_max_filesize в PHP должны позволять принимать архивы выгрузки, а max_execution_time — обрабатывать их.

Альтернативные способы выгрузки картинок

Типовой обмен подходит не всегда: конфигурация может быть сильно доработана, картинки хранятся в нетиповом регистре, или требуется выгружать изображения отдельно от каталога. В таких случаях есть несколько вариантов.

Способы передать картинки в Битрикс

Типовой обмен CommerceML

Подходит для типовых конфигураций, не требует разработки. Ограничение: картинки идут только вместе с выгрузкой каталога и только те, что прикреплены к номенклатуре.

Модуль обмена от 1С-Битрикс

Расширенный модуль для УТ/КА/ERP с гибкими настройками выгрузки. Подходит, когда типового обмена не хватает, но конфигурация близка к типовой.

Выгрузка файлов + REST API

1С складывает картинки в папку или передаёт на сервер, а Битрикс привязывает их через REST API или скрипт импорта. Гибко, но требует разработки и сопровождения.

Ручная выгрузка из 1С и импорт

Разовый вариант: выгрузить присоединённые файлы обработкой и загрузить через импорт в инфоблок. Только для небольших каталогов и разовых задач.

Для самописных и сильно доработанных конфигураций практичный путь — обработка, которая выгружает картинки в папку с именами файлов по артикулу или коду товара (например, 12345.jpg), после чего на стороне сайта скрипт сопоставляет файлы с элементами инфоблока по тому же полю. Это надёжнее, чем попытки «научить» нетиповую 1С говорить на CommerceML.

bsl
// Пример: выгрузка присоединённых файлов номенклатуры в каталог
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, ВладелецФайла.Артикул КАК Артикул ИЗ Справочник.НоменклатураПрисоединенныеФайлы");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Данные = РаботаСФайлами.ДанныеФайла(Выборка.Ссылка);
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Данные.СсылкаНаДвоичныеДанныеФайла);
    ДвоичныеДанные.Записать(КаталогВыгрузки + Выборка.Артикул + ".jpg");
КонецЦикла;

Проверка результата и типичные ошибки

После первого обмена проверьте результат не только «в целом», но и по конкретным товарам: откройте несколько карточек на сайте, убедитесь, что картинка отображается, соответствует товару и не растянута/не обрезана. Затем сверьте количество: сколько товаров с картинками в отборе 1С и сколько элементов с картинками появилось в инфоблоке.

Контрольные точки

Как проверить результат обмена

Картинка в карточке товара на сайте
Норма

Отображается, соответствует товару, адекватный размер

Тревожный признак

Пустое место, «заглушка» или чужое фото

Журнал обмена в 1С
Норма

«Изменения выгружены», без ошибок передачи файлов

Тревожный признак

Ошибки HTTP, таймауты, «не удалось отправить файл»

Лог импорта в Битрикс
Норма

Элементы созданы/обновлены, картинки привязаны

Тревожный признак

Элементы есть, но поля с изображениями пустые

Типичные ошибки при выгрузке картинок
01
Картинки лежат в сетевой папке, а не прикреплены к номенклатуре — обмен их не видит, на сайте фото не появляются
02
Слишком большие файлы — обмен обрывается по таймауту, часть товаров остаётся без изображений
03
Пользователь обмена без прав на инфоблок — товары обновляются, а картинки молча не записываются
04
В настройках 1С выгружается не та группа товаров или стоит отбор без картинок — каталог на сайте неполный
05
На сайте включено «не изменять картинки при обмене», а в 1С фото обновили — на сайте остаются старые изображения

Если картинки не доходят, диагностируйте по цепочке: сначала журнал обмена в 1С (успешно ли сформированы и отправлены файлы), затем доступность скрипта обмена (откройте адрес обмена в браузере под пользователем обмена), затем лог импорта в Битриксе. Ошибка почти всегда локализуется на одном из этих трёх шагов.

Производительность и регулярный обмен

Картинки — самая тяжёлая часть обмена. Чтобы регулярная выгрузка не мешала работе сайта, используйте режим выгрузки только изменений: 1С передаёт только товары, у которых что-то поменялось, включая новые изображения. Полную выгрузку с картинками имеет смысл делать редко или после массовых изменений.

Полезно заранее привести изображения к разумному размеру ещё в 1С: фотографии с фотоаппарата по 8–15 МБ не нужны ни обмену, ни сайту. Оптимизация исходников ускоряет и выгрузку, и загрузку страниц магазина. Если каталог большой (десятки тысяч позиций с галереями), планируйте первый обмен на ночь и контролируйте свободное место в папке upload на хостинге.

Итог

Что важно запомнить

Базовый путь — типовой обмен CommerceML: картинки, прикреплённые к номенклатуре в 1С, автоматически уходят в инфоблок Битрикса вместе с каталогом. Ключевые условия успеха: корректно прикреплённые изображения, правильные права пользователя обмена, достаточные лимиты сервера и проверка результата по журналам с обеих сторон. Первый обмен — только на тестовой копии или ограниченном отборе.

Частые вопросы

Картинки в 1С есть, но на сайт не выгружаются. С чего начать?

Проверьте три вещи: назначено ли изображение основным в карточке товара, включена ли выгрузка файлов/изображений в настройках узла обмена и есть ли в журнале обмена ошибки отправки файлов. Чаще всего причина — в отключённой опции выгрузки картинок или в том, что файлы не прикреплены к номенклатуре, а хранятся отдельно.

Можно ли выгрузить несколько картинок на один товар?

Да. Все присоединённые к номенклатуре изображения могут передаваться в Битрикс: основное попадает в детальную картинку/анонс, остальные — в галерею (свойство MORE_PHOTO). Убедитесь, что в настройках обмена включена выгрузка дополнительных изображений, а инфоблок настроен на приём галереи.

Обмен обрывается по таймауту именно на картинках. Что делать?

Уменьшите размер пакета передачи в настройках обмена в 1С и интервал одного шага импорта в настройках интеграции в Битрикс. Дополнительно увеличьте max_execution_time и лимиты загрузки в PHP, а сами изображения заранее уменьшите до разумного размера — это снимает большинство обрывов.

Как обновить картинки на сайте, не трогая описания и цены?

Настройте отбор в узле обмена так, чтобы выгружались только нужные товары, а в настройках интеграции на стороне Битрикса проверьте, какие поля обновляются при импорте. Альтернатива — выгрузить картинки отдельной обработкой в папку с именами по артикулу и привязать их на сайте скриптом, если требуется точечное обновление.

Работает ли обмен картинками с Битрикс24, а не с Управлением сайтом?

Интеграция 1С с Битрикс24 построена иначе: там обмен идёт через модуль синхронизации и REST, а не через классический CommerceML-обмен с сайтом. Передача изображений товаров возможна, но настраивается в рамках модуля синхронизации с CRM и имеет свои ограничения — сценарий из этой статьи относится к «1С-Битрикс: Управление сайтом».

Нужно ли что-то программировать для типовой выгрузки?

Нет, для типовых конфигураций (УТ 11, КА 2, ERP, УНФ) и стандартного Битрикса достаточно настройки узла обмена и параметров интеграции. Разработка понадобится только при нетиповом хранении картинок, нестандартных требованиях к именам/форматам файлов или при интеграции через REST API.