Передача изображений для разделов (групп) каталога в связке 1С:Управление торговлей 11 и 1С-Битрикс является распространенной задачей, однако стандартный механизм обмена CommerceML по умолчанию поддерживает выгрузку изображений только для элементов справочника Номенклатура. В этой статье мы разберем, какими способами можно реализовать выгрузку картинок групп, чтобы они корректно отображались на вашем сайте.
Наиболее системным подходом является изменение алгоритма формирования XML-файла выгрузки. Поскольку штатный модуль не видит связи между группой товаров и присоединенным файлом изображения, нам необходимо расширить логику обмена.
GUID (идентификатор). Для корректной передачи изображения мы должны привязать файл картинки к группе, используя этот идентификатор.Base64, размещая внутри соответствующего тега раздела в XML.OnBeforeCatalogImport1C. В этом обработчике мы должны перехватить данные о картинке раздела и программно установить их для элемента IBlockSection, используя методы CIBlockSection::Update.Если вы не хотите вносить изменения в типовой модуль обмена, чтобы не создавать проблем при будущих обновлениях конфигурации 1С, рассмотрим вариант параллельной загрузки изображений.
Суть метода заключается в разделении потока данных: XML-обмен отвечает за структуру каталога, а отдельный процесс — за наполнение сайта графикой.
SFTP. Важно, чтобы имена файлов соответствовали GUID групп.GUID из имени файла.Инфоблока в Битриксе по этому GUID.API.Рассмотрим пример логики на стороне PHP, которая может использоваться для обновления картинки раздела после получения файла:
$sectionID = ...; // ID раздела в Битриксе
$imagePath = $_SERVER["DOCUMENT_ROOT"] . "/upload/import_images/" . $guid . ".jpg";
if (file_exists($imagePath)) {
$arFile = CFile::MakeFileArray($imagePath);
$bs = new CIBlockSection;
$fields = array("PICTURE" => $arFile);
$bs->Update($sectionID, $fields);
}
При выборе метода ориентируйтесь на объем ваших данных. Если групп несколько сотен, то доработка XML-обмена может привести к значительному увеличению размера файлов обмена, что негативно скажется на стабильности импорта. В таких случаях вынос картинок во внешний канал (через SFTP или временные файлы) является более производительным решением.
Также важно помнить о следующем:
Расширения конфигурации, а не прямое изменение модулей. Это позволит вам безболезненно обновлять конфигурацию УТ 11 в будущем.Таким образом, автоматизация передачи изображений групп — это задача, требующая кастомизации существующего модуля обмена. Выбирайте путь доработки модуля, если вам важна максимальная консистентность данных при обмене, или путь внешнего скрипта, если вам нужно решение с минимальным вмешательством в типовые механизмы обмена 1С.