Уважаемые коллеги, приветствую.
Возникла задача по загрузке изображений с сайта в УТ 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. Посмотрел обработку штатную - она почему-то работает только во справочником ВерсииФайлов, тогда как картинки лежат в ПрисоединенныхФайлах. Что делать непонятно.
Прошу помощи.