Загрузка картинок из интернета

1. Briss 20.11.20 21:58 Сейчас в теме
Коллеги, доброго дня. Сделал обработку, которая заполняет номенклатуру по табличному документу. В строку табличного документа так же входит ссылка на его изображение (Пример: https://instrument.ru/wa-data/public/shop/products/68/14/31468/images/47797/47797.750x0.jpg)

Конфигурация: УНФ (одна из последних).

есть процедура, которая должна добавить это изображение к номенклатуре. (код брал в интернете, немного менял под себя):

ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
	СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки); 
	
	КартинкаСсылка = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
	ТоварКартинка = Неопределено;
	Если Не ТоварКартинка = Неопределено или не ТоварКартинка = "" Тогда
		Если КартинкаСсылка.Пустая() Тогда
			//КартинкаСсылка = Справочники.НоменклатураПрисоединенныеФайлы.НайтиПоНаименованию(НоменклатураОбъект.Код);
		КонецЕсли;
		Если КартинкаСсылка.Пустая() Тогда
			КартинкаОбъект = Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();
			КартинкаОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;            
			КартинкаОбъект.Наименование  = НоменклатураОбъект.Код;
			КартинкаОбъект.ВладелецФайла = НоменклатураОбъект.Ссылка;
			КартинкаОбъект.ДатаСоздания  = ТекущаяДата();
			Соединение = Новый HTTPСоединение(СсылкаНаКартинку);
			ИмяВременногоФайла=ПолучитьИмяВременногоФайла(".jpg");
			
			Запрос = Новый HTTPЗапрос;
			Запрос.АдресРесурса = "/";
			
			Соединение.Получить(Запрос, ИмяВременногоФайла);
			
			К1 = Новый Картинка(ИмяВременногоФайла, истина);
			КартинкаОбъект.ФайлХранилище = Новый ХранилищеЗначения(К1.ПолучитьДвоичныеДанные());
			
			КартинкаОбъект.Расширение = "jpg";
			КартинкаОбъект.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен;
			ФайлК = Новый Файл(ИмяВременногоФайла);            
			КартинкаОбъект.Размер = ФайлК.Размер();
			
			
			КартинкаОбъект.Записать();
			КартинкаСсылка = КартинкаОбъект.Ссылка; 
			
			КартинкаСохранить = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьНаборЗаписей();
			КартинкаСохранить.Отбор.Файл.Установить(КартинкаОбъект.Ссылка);
			НовыйФайл = КартинкаСохранить.Добавить();
			НовыйФайл.Файл = КартинкаСсылка;
			НовыйФайл.ДвоичныеДанныеФайла = КартинкаОбъект.ФайлХранилище;
			КартинкаСохранить.Записать();
		КонецЕсли;
		
		НоменклатураОбъект.ФайлКартинки = КартинкаСсылка;
	
	КонецЕсли;
Показать


По итогу: код проходит. Файл создается и присоединяется в карточку номенклатуры. Но скорей всего есть проблема в самом изображении, поэтому встречаю ошибки (присоединяю файлы - картинки с ошибками в архиве).

В чем может быть ошибка, как можно исправить?

И второй момент, сейчас создается файл временный я так понимаю и само изображение будет храниться в базе. Насколько это опасно, учитывая, что работаем в файловой базе. Какой вариант решения, чтобы база не лопнула, помимо перехода в серверный режим работы (он планируется, но позже)

Заранее большое спасибо!
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. uno-c 235 23.11.20 12:37 Сейчас в теме
(1)
В чем может быть ошибка, как можно исправить?
Посмотрите URLы тех картинок, которые с ошибками присоединяются. Может расширение другое не jpg, а может и сама картинка по этому URLу испорченная.
В УНФ - смотрите настройки для хранения присоединенных файлов в томах на диске - отдельно от базы. В базе, тем более файловой - конечно лучше не хранить. И в конфигурации есть готовые экспортные процедуры, которые автоматом поймут настройки томов и сохранят как надо присоединенный файл. См. например в общем модуле РаботаСФайлами Функция ДобавитьФайлСДиска(ВладелецФайлов, ПутьКФайлуНаДиске) Экспорт
2. VladimirB 16 21.11.20 11:03 Сейчас в теме
(1) Храни в базе только имя файла. А саму картинку на диске. Иначе от большого количества картинок база будет быстро распухать
3. ipoloskov 162 22.11.20 23:56 Сейчас в теме
В УНФ должна быть возможность хранения файлов в томах на дисках.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)