Бывают ситуации, когда при обмене 1С с сайтом Битрикс в логе появляются ошибки - "Файл не является графическим", и обмен проходит не полностью.
Данная ситуация возникает в следующих случаях:
- Имена файлов в базе имеют служебные символы (,),!,@,#,?
- Файл битый по внутренней структуре
- Файл имеет неверное расширение. К примеру файл - webp, а расширение jpg
- Файл имеет неверный тип: png, gif, jpeg
Очень сложно отловить, в какой конкретно номенклатурной позиции находится некорректный файл.
Лично я, столкнувшись с данной ситуацией - перелопатил кучу логов, но внятного списка номенклатуры с ошибками так и не получил. В итоге родилось следующее решение.
Моя обработка выбирает все товары, у которых есть присоединенные графические файлы. Далее по списку файлов в каждой номенклатурной позиции происходит обработка по алгоритму:
- Файл сохраняется на диск во временную папку
- Файл конвертируется в формат jpg
- Файл переименовывается. (наименование - GUID номенклатуры хозяина + индекс)
- Файл записывается в базу 1С
- Исходный файл помечается на удаление
- Если удаленный файл был основной картинкой товара, то ссылка на картинку замещается ссылкой на новый файл
- Номенклатура сохраняется
Возможны ситуации, когда конвертер (IrfanView) не может обработать файл, тогда появляется сообщение об ошибке и в окне сообщение появляется описание ошибки и название номенклатуры владельца. После окончания работы обработки данные товары надо обработать вручную (удалить или перезаписать файл)
Режимы в которых работает обработка:
- Все графические файлы, кроме jpg
- Все графические файлы
- Все графические файлы, кроме уже обработанных
Примечание: Опция "Только новые" работает, только если у номенклатуры не больше 9 присоединенных графических файлов.
После окончания работы обработки следует удалить помеченные на удаление присоединенные файлы, чтобы уменьшить объем информации хранимой в базе.
После исправления всех графических файлов выгрузка на сайт проходит без ошибок.
Тестировалось на версии: Платформа 8.3.17.1091, Конфигурация Управление торговлей, редакция 11 (11.4.6.230)
Upd: добавлена доработанная версия от krein. Заменен "вызов общего модуля "ПрисоединенныеФайлы" на аналогичный "РаботаСФайламиСлужебныйВызовСервера""