Загрузка изображений с сайта в УТ 11 по данным из файла выгрузки (с сайта).

1. MaCCapAkIII 20.02.17 14:54 Сейчас в теме
Уважаемые коллеги, приветствую.
Возникла задача по загрузке изображений с сайта в УТ 11.2. Информацию для загрузки получаю в виде csv следующего формата:

В строке есть наименование, УИД для поиска в базе и, собственно, адрес изображения на сервере.
Разбираю файл и следующей процедурой записываю изображения в БД:
&НаСервереБезКонтекста
Процедура ПрисоединитьКартинкиКТоварам(ТЗФайл);
	
	Соединение = Новый HTTPСоединение("здесь адрес хоста");
	Обработано = 0;
	НеОбработано404 = 0;
	Сообщить("Время начала загрузки: " + Формат(ТекущаяДата(),"ДЛФ=T"));
	
	Для каждого стрТЗФайл Из ТЗФайл Цикл
		Попытка
			Соединение.Получить(СтрЗаменить(стрТЗФайл.АдресКартинки, "и здесь адрес хоста","/"), "C:\temp\image.gif");
		Исключение
			Сообщить("Не удалось загрузить картинку: " + стрТЗФайл.АдресКартинки);
			НеОбработано404 = НеОбработано404 + 1;
		КонецПопытки;
		
		МояКартинка = Новый Картинка("C:\temp\image.gif");
		
		ХранилищеКартинки = Новый ХранилищеЗначения(МояКартинка); 
		ДвоичныеДанныеКартинки = МояКартинка.ПолучитьДвоичныеДанные();
		товарОбъект = стрТЗФайл.СсылкаНаОбъект.ПолучитьОбъект();
		товарОбъект.Описание = стрТЗФайл.Описание;
		     				         			
		СсылкаНового = Справочники.НоменклатураПрисоединенныеФайлы.ПолучитьСсылку();
		ПрисоединенныйФайл = Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();    
		ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНового);    			
		ПрисоединенныйФайл.ВладелецФайла	= стрТЗФайл.СсылкаНаОбъект;  			
		ПрисоединенныйФайл.ДатаМодификацииУниверсальная = ТекущаяДата();
		ПрисоединенныйФайл.ДатаСоздания		= ТекущаяДата();
		ПрисоединенныйФайл.Описание			= "";
		//ПрисоединенныйФайл.ПодписанЭЦП		= Ложь;    
		ПрисоединенныйФайл.Наименование		= "image";
		
		Если СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"jpg") = 1 Тогда
			Расширение = "jpg";
		ИначеЕсли СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"png") = 1 Тогда
			Расширение = "png";
		ИначеЕсли СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"gif") = 1 Тогда
			Расширение = "gif";
		ИначеЕсли СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"jpeg") = 1 Тогда
			Расширение = "jpeg";
		КонецЕсли; 
		
		ПрисоединенныйФайл.Расширение		= Расширение;
		ПрисоединенныйФайл.ТипХраненияФайла = ФайловыеФункцииСлужебный.ТипХраненияФайлов();			
		ПрисоединенныйФайл.Размер = ДвоичныеДанныеКартинки.Размер(); 
		ПрисоединенныйФайл.ФайлХранилище = ХранилищеКартинки;
		ПрисоединенныйФайл.ИндексКартинки = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); 
		
		ПрисоединенныеФайлыСлужебный.ЗаписатьФайлВИнформационнуюБазу(СсылкаНового, ДвоичныеДанныеКартинки);
			
		Попытка
			ПрисоединенныйФайл.Записать();
			ПрисоединенныеФайлыСлужебный.ЗаписатьФайлВИнформационнуюБазу(ПрисоединенныйФайл.Ссылка, ДвоичныеДанныеКартинки); 	
			товарОбъект.ФайлКартинки = ПрисоединенныйФайл.Ссылка;
			товарОбъект.Записать(); 
		Исключение    				
			КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
			ТекстСообщения = НСтр("ru = 'Ошибка при добавлении файла ""%1"": '") + КраткоеПредставлениеОшибки;
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, товарОбъект.Наименование + "." + Расширение);
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); 								
			Возврат;
		КонецПопытки;
		
		Обработано = Обработано + 1;
	КонецЦикла;
	
	Сообщить("Обработано " + Строка(Обработано) + " объектов.");
	Сообщить("Не обработано из-за ошибки на сайте " + Строка(НеОбработано404) + " объектов.");
	Сообщить("Время окончания загрузки: " + Формат(ТекущаяДата(),"ДЛФ=T"));
	
КонецПроцедуры
Показать

Из особенностей - временная папка C:\Temp используется для скачивания изображения на диск (своеобразная буферизация) и последующей записи в БД. Наименование файла изображения для всех товаров одно и то же "image" с расширением, определяемым в коде выше.

Собственно вопрос - после загрузки 15к изображений в БД (БД файловая) размер файла увеличивается примерно вдвое и начинаются жуткие тормоза. При переводе на SQL обстановка неменяется.
Пробовал изменить том хранения в настройках работы с файлами. Там вообще интересно. Количество файлов к переносу указывается 0, хотя количество загруженных изображений более 15000. Посмотрел обработку штатную - она почему-то работает только во справочником ВерсииФайлов, тогда как картинки лежат в ПрисоединенныхФайлах. Что делать непонятно.
Прошу помощи.
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот