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

01.04.23

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс v2 (УНФ):
.epf 591,90Kb
40
40 Скачать (1 SM) Купить за 1 850 руб.
Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс:
.epf 591,42Kb ver:1
79
79 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

См. также

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 3.0. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер). Интегрировано в Чек ККМ, Рабочее место кассира (РМК)

24000 руб.

02.11.2024    1181    8    0    

7

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

22440 руб.

19.12.2023    7054    44    11    

40

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

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

36000 руб.

03.08.2020    19173    23    22    

20

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

Склад Вашего магазина онлайн в Telegram. С картинками, ценами, описанием и характеристиками. Используйте Telegram как торговую площадку и увеличивайте продажи.

54000 руб.

10.09.2024    1321    3    4    

3

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

Внешняя обработка адаптирована для 1C: УТ 11, предназначена для наполнения вашей базы данных товарами и сопутствующей информацией, предоставляемой b2b.4tochki.ru, обновления остатков и цен.

8160 руб.

31.01.2020    32344    17    7    

16

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

Данный модуль предоставляет возможность выгружать заказы из 1С: Управление торговлей 11 версии в "MEASOFT" (ранее "Курьерская служба 2008").

9600 руб.

27.04.2022    11823    21    3    

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

У вас будет возможность поправить обработку?
4. Sandmansss 28 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 28 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 28 02.02.22 12:52 Сейчас в теме
Да в общем нет. Я свою задачу решил и выложил. И больше не использовал.
Но повторюсь в принципе я могу глянуть что и к чему, но мне нужна проблемная база.
Если сможете дать выгрузку - гляну на ней почему может зависать и почему.
11. ZmeyG 24.02.22 21:24 Сейчас в теме
12. stepani4 28.11.22 16:17 Сейчас в теме
Нормальная обработка, поправил для УНФ (заменил ПрисоедененныеФайлы на модуль в УНФ) и все работает.
VyacheslavShilov; krein; +2 Ответить
13. krein 63 15.01.23 12:32 Сейчас в теме
(12) спасибо за дельный комментарий, а то после предыдущих всех даже думал, скачивать или нет вообще

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

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

Если 2 и 5 обязательно надо добавить, то 3,4 - уже от базы самой зависит.
Автору свою версию отредактированную отправлю, если он будет не против, то наверно добавит файл к своей публикации. Еще раз благодарность от меня и плюс.
VyacheslavShilov; +1 Ответить
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 28 10.11.23 19:15 Сейчас в теме
(18) Вы не ту версию обработки скачали.

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

Или же просто перепишите этот кусок вызова.
VyacheslavShilov; +1 Ответить
20. Mitsi 10.11.23 19:22 Сейчас в теме
Принял. Меня смутило УНФ в названии файла)
21. mad_maksim 88 20.12.23 17:30 Сейчас в теме
Уточните, работает ли обработка, если файлы хранятся в томах?
после запуска вышло некоторое количество ошибок, но их меньше, чем обработанных файлов.
22. Sandmansss 28 20.12.23 18:15 Сейчас в теме
А нет разницы. Во второй версии используется служебный метод РаботаСФайламиСлужебныйВызовСервера.
А ему все равно где лежат файлы, в базе или в томах.
БСП наше все))
23. DLYuniton 21.02.24 10:38 Сейчас в теме
Добрый день. Скачал версию "Переконвертация графических файлов в 1С для корректной выгрузки на сайт Битрикс v2 (УНФ) ". 1 раз исправили проблемы с файлами.
Сейчас снова пытаюсь воспользоваться обработкой. Зависает намертво. Оставлял на длительный срок(1-2) дня. Процесс 1С зависает и всё. Подскажите, как можно исправить данную проблему?
VyacheslavShilov; +1 Ответить
25. Sandmansss 28 21.02.24 12:54 Сейчас в теме
24. Sandmansss 28 21.02.24 12:52 Сейчас в теме
Добрый день.
Честно говоря даже не могу предположить.
Там же просто цикл перебирающий номенклатурные позиции и работающий с прикрепленными файлами.
Наверное для начала я бы в консоли запросов сделал выборку из справочника НоменклатураПрисоединенныеФайлы с сортировкой по типу, а потом по размеру. И посмотрел бы что там. Если ничего в глаза бросающегося бы не обнаружилось, попробовал бы запустить обработку в режиме отладки и посмотрел на каком моменте все виснет.
Самые длительные операции это запись/чтение с диска, вот скорее всего в этом проблема, но понять можно будет только в отладчике.
VyacheslavShilov; +1 Ответить
26. AleSSandre 37 11.11.24 23:06 Сейчас в теме
(24) Зависает не обработка (там зависать нечему), зависает сам IrfanView на конвертации каких-то изображений. Достаточно через диспетчер задач убить процесс "IrfanView" и обработка "оживёт"
VyacheslavShilov; +1 Ответить
27. SuperEmboser 15 25.11.24 19:10 Сейчас в теме
(26) да оживает но ненадолго, тк вызов идет в цикле и через одну две итерации опять висит
может есть еще решения?
28. Sandmansss 28 26.11.24 10:45 Сейчас в теме
(27) Можете прислать мне выгрузку из базы я посмотрю в чем может быть проблема.
29. SuperEmboser 15 26.11.24 11:08 Сейчас в теме
(28) нет, не могу. может конечно с самим файлом в базе что то не так .. могу доступ дать на свой комп (тогда в личку напишите)
30. Sandmansss 28 26.11.24 11:52 Сейчас в теме
(29) Не, на чужом компьютере нет времени копаться. Так бы я вечерком когда освобожусь, глянул бы.
Давайте так, я в течении пары дней найду время и переделаю обработку на более свежую версию irfanview. У себя проверю и отпишусь. Если все ок, дадите email и я скину свежую версию
31. SuperEmboser 15 26.11.24 11:53 Сейчас в теме
Оставьте свое сообщение