Картинки товара при обмене - детальная, дополнительные, разделы
Разбираемся, как картинки товаров приезжают из учётной системы и что нужно завести на сайте, чтобы приехали все.
Решение
Смотрим, что вообще приехало в папку обмена:
# файлы обмена лежат рядом с каталогом, картинки - отдельными файламиls -lh /home/bitrix/www/upload/1c_catalog/ | head -20find /home/bitrix/www/upload/1c_catalog/ -name '*.jpg' | wc -lПустая папка означает, что до картинок дело не дошло вовсе: выгрузка либо не настроена на них, либо оборвалась раньше. Разбирать настройки сайта в этом случае бесполезно.
Заводим свойство для дополнительных картинок:
$prop = new CIBlockProperty();$prop->Add([ 'IBLOCK_ID' => 5, 'NAME' => 'Картинки', 'CODE' => 'MORE_PHOTO', // код известен обмену, менять его нельзя 'PROPERTY_TYPE' => 'F', // тип «файл» 'MULTIPLE' => 'Y', // без множественности приедет одна]);Первое изображение из выгрузки становится детальной картинкой товара, остальные идут в это свойство. Пока свойства нет, они отбрасываются при импорте молча, без записи в журнал обмена.
Проверяем, что записалось у товара:
$res = CIBlockElement::GetList([], ['IBLOCK_ID' => 5, 'ID' => $elementId], false, false, ['ID', 'NAME', 'DETAIL_PICTURE', 'PREVIEW_PICTURE', 'PROPERTY_MORE_PHOTO']);while ($row = $res->GetNext()) { printf("детальная=%s доп=%s\n", $row['DETAIL_PICTURE'] ?: '-', $row['PROPERTY_MORE_PHOTO_VALUE'] ?: '-');}В полях лежат идентификаторы файлов, а не пути. Пустая детальная картинка при непустой папке обмена означает, что ссылка в файле каталога не совпала с именем файла на диске.
Смотрим, сколько места занимают загруженные изображения:
du -sh /home/bitrix/www/upload/iblock/ # картинки, разложенные по товарамdu -sh /home/bitrix/www/upload/1c_catalog/ # временные файлы обменаfind /home/bitrix/www/upload/1c_catalog/ -mtime +30 | wc -l # и старше месяцаВременные файлы удаляются после успешного импорта. Растущая папка обмена - верный признак того, что импорт обрывается и начинается заново с каждой попыткой.
Размер и вес изображений задаются на стороне выгрузки. Сайт принимает файлы как есть и уменьшать их не будет: ограничение на размер загружаемого файла в настройках PHP просто оборвёт импорт. Поэтому картинки готовят в учётной системе, а на сайте следят только за свободным местом.
Повторный импорт добавляет картинки, а не заменяет их. Сайт сравнивает файлы по имени, и выгрузка с новыми именами на каждой выгрузке приводит к тому, что у товара накапливаются десятки одинаковых изображений. Лечится это на стороне учётной системы, а накопившиеся дубли убирают отдельным скриптом.
Картинки разделов приезжают отдельной настройкой выгрузки, и по умолчанию она часто выключена. Отсутствие изображения у раздела почти никогда не означает ошибку импорта: сначала проверяют, выгружаются ли они вообще.
Типичные проблемы
У товаров приехала только одна картинка.
В инфоблоке нет множественного свойства с кодом дополнительных изображений. Остальные картинки отбрасываются при импорте.
Товары приехали, картинок нет вовсе.
Файлы изображений не доехали в папку обмена. Сайт разбирает ссылки на файлы, и без самих файлов создаёт товар без картинки.
После каждого обмена картинки дублируются.
Файлы приезжают с новыми именами. Сайт считает такое изображение новым и добавляет его к уже привязанным.
Импорт обрывается на больших изображениях.
Файл не проходит по ограничению на размер загрузки или по времени выполнения. Размер картинок уменьшают на стороне выгрузки.
Картинки разделов не появляются.
Их выгрузка отключена в настройках учётной системы. На стороне сайта эта настройка отсутствует.
Частые вопросы
Можно ли выгрузить картинки в другом формате?
Сайт принимает распространённые форматы изображений, но учётная система обычно отдаёт их в одном. Формат меняют на стороне выгрузки, а не при импорте.
Как отключить приём дополнительных картинок?
Убрать множественное свойство с известным обмену кодом. После этого приезжает только детальная картинка, остальные отбрасываются.
Куда попадают картинки после импорта?
В папку загрузок инфоблоков, разложенные по подкаталогам. В полях элемента хранятся идентификаторы файлов, а не пути.
Почему картинка есть в 1С, но не приехала?
Она не попала в выгрузку: у номенклатуры может быть несколько видов присоединённых файлов, и выгружается только основной. Проверяют это в настройках обмена на стороне учётной системы.
Смежное
- Картинки при обмене - оглавление подтемы
- Не выгружаются картинки из 1С - разбор причин
- Выгрузка товаров из 1С на сайт - как приезжает сам каталог
- Обмен с 1С и HTTP - устройство обмена целиком
- Картинки товара: загрузка, размеры и вывод галереи - что происходит с картинками на сайте
- Папка загрузок растёт: дубли картинок и лишние файлы - когда дубли уже накопились
- Картинки торговых предложений: смена при выборе варианта - картинки вариантов из обмена
- Картинки при обмене изнутри - что происходит с прежними файлами при повторной выгрузке