Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс

01.04.23

Интеграция - Сайты и интернет-магазины

Согласно выбранному режиму конвертирует присоединенные графические файлы номенклатуры в jpg и переименовывает их, избавляясь от служебных символов. Upd: добавлена доработанная версия от krein. Заменен "вызов общего модуля "ПрисоединенныеФайлы" на аналогичный "РаботаСФайламиСлужебныйВызовСервера""

Скачать исходный код

Наименование Файл Версия Размер
Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс v2 (УНФ):
.epf 591,90Kb
24
.epf 591,90Kb 24 Скачать
Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс:
.epf 591,42Kb
58
.epf 1 591,42Kb 58 Скачать

Бывают ситуации, когда при обмене 1С с сайтом Битрикс в логе появляются ошибки - "Файл не является графическим", и обмен проходит не полностью.

Данная ситуация возникает в следующих случаях:

  • Имена файлов в базе имеют служебные символы (,),!,@,#,?
  • Файл битый по внутренней структуре
  • Файл имеет неверное расширение. К примеру файл - webp, а расширение jpg
  • Файл имеет неверный тип: png, gif, jpeg

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

Лично я, столкнувшись с данной ситуацией - перелопатил кучу логов, но внятного списка номенклатуры с ошибками так и не получил. В итоге родилось следующее решение.

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

  • Файл сохраняется на диск во временную папку 
  • Файл конвертируется в формат jpg
  • Файл переименовывается. (наименование - GUID номенклатуры хозяина + индекс)
  • Файл записывается в базу 1С
  • Исходный файл помечается на удаление
  • Если удаленный файл был основной картинкой товара, то ссылка на картинку замещается ссылкой на новый файл
  • Номенклатура сохраняется

Возможны ситуации, когда конвертер (IrfanView) не может обработать файл, тогда появляется сообщение об ошибке и в окне сообщение появляется описание ошибки и название номенклатуры владельца. После окончания работы обработки данные товары надо обработать вручную (удалить или перезаписать файл)

Режимы в которых работает обработка:

  • Все графические файлы, кроме jpg
  • Все графические файлы
  • Все графические файлы, кроме уже обработанных

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

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

После исправления всех графических файлов выгрузка на сайт проходит без ошибок.

Тестировалось на версии: Платформа 8.3.17.1091, Конфигурация Управление торговлей, редакция 11 (11.4.6.230)

 

Upd: добавлена доработанная версия от krein. Заменен "вызов общего модуля "ПрисоединенныеФайлы" на аналогичный "РаботаСФайламиСлужебныйВызовСервера""

Обработка битрикс картинки

См. также

API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3

Сайты и интернет-магазины Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Беларусь Россия Управленческий учет Платные (руб)

Модуль для интеграции с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress. При помощи расширения поддерживаются следующие методы: обмен остатками товаров, обмен ценами, обработка заказов, печать стикеров, загрузка отчетов комиссионеров по API (в том числе Я.Маркет). Подходит для конфигураций Беларуси. Поддержка искусственного интелекта GigaChat

59990 руб.

05.09.2023    8468    128    74    

82

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15958    13    18    

13

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    1619    13    3    

11

Обмен данными с сайтом. БП 3.0

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 руб.

18.03.2019    31559    112    100    

64

Универсальный парсер интернет-магазинов

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Управляемые формы 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

С того времени, как я начал парсить сайты, прошло много лет. За это время я спарсил более 100 сайтов и записал эти товары в 1С. В итоге на свет появился универсальный парсер, который поможет Вам спарсить интернет-магазин и при этом не написать ни строчки кода.

9600 руб.

19.10.2018    52264    220    101    

112

Sync1C: Синхронизация 1С и OpenCart

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка для обмена данными с интернет-магазином OpenCart. Позволяет быстро наполнить магазин товарами, затем обновлять цены и добавлять новые товары. Далее можно средствами OpenCart настраивать и дополнять карточки товаров как надо для магазина, при этом связь товаров с 1С не теряется.

3840 руб.

30.03.2018    43794    81    137    

85
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ribolovmax 22.03.21 23:46 Сейчас в теме
Здравствуйте. Ваша обработка поддерживает если хранение графических файлов в томах, а не в базе 1с?
2. Sandmansss 24 23.03.21 13:59 Сейчас в теме
Не могу сказать. Я ее писал и тестировал для файлов хранящихся в базе.
Но в принципе кто мешает ее изменить?
В общем получается меняется только способ сохранения и записи конечного файла, а остальной алгоритм остается прежним.
3. ribolovmax 23.03.21 18:00 Сейчас в теме
Не дождался вашего ответа и приобрел вашу обработку. Из за хранения в томах пишет ошибку при открытии Ошибка инициализации модуля: ВнешняяОбработка.ИсправлениеКартинокПоТоварам.МодульОбъекта
по причине:
{ВнешняяОбработка.ИсправлениеКартинокПоТоварам.МодульОбъекта(144,10)}: Переменная не определена (ПрисоединенныеФайлы)
Адр = <<?>>ПрисоединенныеФайлы.ПолучитьДанныеФайла(Выборка.Ссылка, "ljbevf349ty";).СсылкаНаДвоичныеДанныеФайла;
{ВнешняяОбработка.ИсправлениеКартинокПоТоварам.МодульОбъекта(155,25)}: Переменная не определена (ПрисоединенныеФайлы)
ПрисоединенныйФайл = <<?>>ПрисоединенныеФайлы.ДобавитьФайл(Номенклатура,ФайлДокумента.ИмяБезРасширения,СтрЗаменить(ФайлДокумента.Расширение,".","";),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,Номенклатура.Наименование);

У вас будет возможность поправить обработку?
4. Sandmansss 24 24.03.21 11:52 Сейчас в теме
Извините, но я Вам ответил - "23.03.21 13:59"
Обработка поставляется "как есть". Работы в томах в описании не заявлено.
Да и у меня нет такой тестовой базы, где файлы бы хранились в томах, для тестирования.
Поправьте код в местах скачивания и записи файла с учетом особенности хранения и все заработает.
stepani4; +1 Ответить
5. sladnn 27.10.21 16:19 Сейчас в теме
Здравствуйте
В 1с КА2 обработка работает?
6. sladnn 27.10.21 16:52 Сейчас в теме
Здравствуйте, обработка выдает
"Внешняя Обработка.Исправление Картинок По Товарам.МодульОбъекта(144.10):переменная не определена (ПрисоедененныеФайлы)"
Прикрепленные файлы:
7. kaplan 12.11.21 09:53 Сейчас в теме
(6)
обработка

Такая же проблема
8. Sandmansss 24 23.11.21 11:39 Сейчас в теме
Если кто сможет дать скинуть мне базу (или на выгрузку из нее) то я посмотрю в чем может проблема
9. Scott_Slim_Summers 02.02.22 09:37 Сейчас в теме
Здравствуйте. Тестировал вашу обработку на платформе 8.3.19.1467, конфигурация УТ 11.4.13.280. Обработка зависает. Пробовал оставлять на 1,5, примерно, но безрезультатно. Может быть есть версия, которая тестировалась на более свежих релизах, нежели тот, что вы указали в описании?
10. Sandmansss 24 02.02.22 12:52 Сейчас в теме
Да в общем нет. Я свою задачу решил и выложил. И больше не использовал.
Но повторюсь в принципе я могу глянуть что и к чему, но мне нужна проблемная база.
Если сможете дать выгрузку - гляну на ней почему может зависать и почему.
11. ZmeyG 24.02.22 21:24 Сейчас в теме
12. stepani4 28.11.22 16:17 Сейчас в теме
Нормальная обработка, поправил для УНФ (заменил ПрисоедененныеФайлы на модуль в УНФ) и все работает.
13. krein 63 15.01.23 12:32 Сейчас в теме
(12) спасибо за дельный комментарий, а то после предыдущих всех даже думал, скачивать или нет вообще

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

2. В УНФ заменил вызов общего модуля "ПрисоединенныеФайлы" на аналогичный "РаботаСФайламиСлужебныйВызовСервера"
3. Изменил в запросах отборы файлов, т.к. например на моей базе попали файлы MP4, если исключать перечисление, вместо исключения сделал явное указание графических форматов.
4. При записи новой картинки дополнительно присвоил от старой значения Автор, Изменил и обе даты
5. Если картинка была в незаконченном редактировании, то не удалялась, поправил.

Если 2 и 5 обязательно надо добавить, то 3,4 - уже от базы самой зависит.
Автору свою версию отредактированную отправлю, если он будет не против, то наверно добавит файл к своей публикации. Еще раз благодарность от меня и плюс.
14. krein 63 15.01.23 12:34 Сейчас в теме
Но если есть доступ к админке сайта, то проще конечно найти конкретную картинку и поправить её. Для этого:
В файле /bitrix/modules/main/classes/general/file.php перед каждым
return GetMessage("FILE_BAD_FILE_TYPE");
вставляем:
print_r($arFile)

вот тут эта инструкция: https://tichiy.ru/wiki/bitriks-obmen-s-1s/ и + еще способ включения обхода таких ошибок в принципе (тоже на стороне сайта)
15. stepani4 16.01.23 12:53 Сейчас в теме
Проще сделать лог загрузки, в который писать УИД кривых файлов, потом по этому логу редактировать точечно.
16. user1014118 13.09.23 21:07 Сейчас в теме
День добрый! где можно скачать
17. user1014118 13.09.23 21:07 Сейчас в теме
Upd: добавлена доработанная версия от krein. Заменен "вызов общего модуля "ПрисоединенныеФайлы" на аналогичный "РаботаСФайламиСлужебныйВызовСервера""
18. Mitsi 10.11.23 18:14 Сейчас в теме
Доброго времени суток. Столкнулся с ошибкой:
1С:Предприятие 8.3 (8.3.22.2175)
Управление торговлей, редакция 11 (11.5.13.82)


Ошибка инициализации модуля: Обработка.ИсправлениеКартинокПоТоварам.МодульОбъекта
по причине:
{Обработка.ИсправлениеКартинокПоТоварам.МодульОбъекта(144,10)}: Переменная не определена (ПрисоединенныеФайлы)
Адр = <<?>>ПрисоединенныеФайлы.ПолучитьДанныеФайла(Выборка.Ссылка, "ljbevf349ty").СсылкаНаДвоичныеДанныеФайла;
{Обработка.ИсправлениеКартинокПоТоварам.МодульОбъекта(155,25)}: Переменная не определена (ПрисоединенныеФайлы)
ПрисоединенныйФайл = <<?>>ПрисоединенныеФайлы.ДобавитьФайл(Номенклатура,ФайлДокумента.ИмяБезРасширения,СтрЗаменить(ФайлДокумента.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,Номенклатура.Наименование);
19. Sandmansss 24 10.11.23 19:15 Сейчас в теме
(18) Вы не ту версию обработки скачали.

У вас последняя версия конфигурации, а в ней теперь вместо общего модуля ПрисоединенныеФайлы используется общий модуль РаботаСФайлами.
Вам нужна версия обработки v2 (УНФ):

Или же просто перепишите этот кусок вызова.
20. Mitsi 10.11.23 19:22 Сейчас в теме
Принял. Меня смутило УНФ в названии файла)
21. mad_maksim 87 20.12.23 17:30 Сейчас в теме
Уточните, работает ли обработка, если файлы хранятся в томах?
после запуска вышло некоторое количество ошибок, но их меньше, чем обработанных файлов.
22. Sandmansss 24 20.12.23 18:15 Сейчас в теме
А нет разницы. Во второй версии используется служебный метод РаботаСФайламиСлужебныйВызовСервера.
А ему все равно где лежат файлы, в базе или в томах.
БСП наше все))
23. DLYuniton 21.02.24 10:38 Сейчас в теме
Добрый день. Скачал версию "Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс v2 (УНФ) ". 1 раз исправили проблемы с файлами.
Сейчас снова пытаюсь воспользоваться обработкой. Зависает намертво. Оставлял на длительный срок(1-2) дня. Процесс 1С зависает и всё. Подскажите, как можно исправить данную проблему?
25. Sandmansss 24 21.02.24 12:54 Сейчас в теме
24. Sandmansss 24 21.02.24 12:52 Сейчас в теме
Добрый день.
Честно говоря даже не могу предположить.
Там же просто цикл перебирающий номенклатурные позиции и работающий с прикрепленными файлами.
Наверное для начала я бы в консоли запросов сделал выборку из справочника НоменклатураПрисоединенныеФайлы с сортировкой по типу, а потом по размеру. И посмотрел бы что там. Если ничего в глаза бросающегося бы не обнаружилось, попробовал бы запустить обработку в режиме отладки и посмотрел на каком моменте все виснет.
Самые длительные операции это запись/чтение с диска, вот скорее всего в этом проблема, но понять можно будет только в отладчике.
Оставьте свое сообщение