Процедура ВыгрузитьИзображенияНоменклатуры(ПараметрыОбмена, ИмяКаталога, Владелец, лМенеджерВременныхТаблиц, ВыборкаНоменклатуры, ОписаниеФайлов, ВыгруженоКартинок, МассивКартинок)
Запрос = Новый Запрос;
запрос.МенеджерВременныхТаблиц = лМенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ *
|ИЗ
| ВремКартинки КАК ВремКартинки
| ГДЕ ВремКартинки.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ВыборкаНоменклатуры.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
// отото ишем картинку в папке +++
МойКаталог = "\\aroma.local\dfs\Docs\Богатырев\ЖПГ\";
ИмяКартинки = ВыборкаНоменклатуры.Номенклатура.Код;
МойМассивКартинок = НайтиФайлы(МойКаталог, "*.*");
сч=1;
//НайтиФайлы("C:\Users\egor\Desktop\foto\", "*.*").Найти(СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_1");
НайденныеФайлы = НайтиФайлы("\\aroma.local\dfs\Docs\Богатырев\ЖПГ\", "*.*");
ТЗФайлов = новый ТаблицаЗначений;
ТЗФайлов.Колонки.Добавить("Имя");
ТЗФайлов.Колонки.Добавить("Расширение");
Для каждого стр из НайденныеФайлы цикл
НС = ТЗФайлов.Добавить();
нс.Имя = стр.ИмяБезРасширения;
нс.Расширение = стр.Расширение;
КонецЦикла;
//Для каждого Файл Из НайденныеФайлы цикл
//Если Найти(ТЗФайлов, СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_1") > 0 тогда
//Прервать;
//КонецЕсли;
//КонецЦикла;
Пока не ТЗФайлов.Найти(СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_"+сч)=Неопределено цикл
ПоискКартинки = ТЗФайлов.Найти(СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_"+сч);
ПутьНаименованиеКартинки = МойКаталог+СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_"+сч+ПоискКартинки.Расширение;
МоеИмяКартинки =СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_"+сч;
// отото-----------------------------
//Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаКартинок = РезультатЗапроса.Выбрать();
тзнКартинок = Новый ТаблицаЗначений;
тзнКартинок.Колонки.Добавить("Картинка");
тзнКартинок.Колонки.Добавить("НадоВыгружать");
тзнКартинок.Колонки.Добавить("Основная");
ОсновнаяКартинка = ВыборкаНоменклатуры.ОсновноеИзображение;
Пока ВыборкаКартинок.Следующий() Цикл
ТекКартинка = ВыборкаКартинок.ХранилищеСсылка;
МассивКартинок.Добавить(ТекКартинка);
НовСтр = тзнКартинок.Добавить();
НовСтр.Картинка = ТекКартинка;
НовСтр.НадоВыгружать = ВыборкаКартинок.НадоВыгружать;
Если ТекКартинка = ОсновнаяКартинка тогда
НовСтр.Основная = Истина;
иначе
НовСтр.Основная = Ложь;
КонецЕсли;
КонецЦикла;
тзнКартинок.Сортировать("Основная Убыв");
//Для Каждого КартинкаДляВыгрузки Из тзнКартинок Цикл
АдресКартинки = ВыгрузитьКартинку(ПараметрыОбмена, ИмяКаталога, ВыборкаНоменклатуры.Номенклатура,ПутьНаименованиеКартинки,МоеИмяКартинки );//КартинкаДляВыгрузки.Картинка, КартинкаДляВыгрузки.НадоВыгружать);
Если ЗначениеЗаполнено(АдресКартинки) Тогда
ОписаниеКартинки = СокрЛП(ВыборкаНоменклатуры.Номенклатура.Код)+"_"+сч;//СокрЛП(КартинкаДляВыгрузки.Картинка.Наименование);
Владелец.Картинка.Добавить(АдресКартинки);
//Если НЕ ПустаяСтрока(ОписаниеКартинки) И НЕ КартинкаДляВыгрузки.Основная Тогда
ОписаниеФайлов.Вставить(АдресКартинки, ОписаниеКартинки);
//КонецЕсли;
ВыгруженоКартинок = ВыгруженоКартинок + 1;
КонецЕсли;
//КонецЦикла;
//КонецЕсли;
сч= сч+1;
КонецЦикла;
КонецПроцедуры
Процедура ВыгрузитьФайлыНоменклатуры(ПараметрыОбмена, ИмяКаталога, Владелец, лМенеджерВременныхТаблиц, ВыборкаНоменклатуры, Файлы, ОписаниеФайлов, ВыгруженоФайлов, МассивФайлов)
Запрос = Новый Запрос;
запрос.МенеджерВременныхТаблиц = лМенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ *
|ИЗ
| ВремФайлы КАК ВремФайлы
| ГДЕ ВремФайлы.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ВыборкаНоменклатуры.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаФайлов = РезультатЗапроса.Выбрать();
тзнФайлов = Новый ТаблицаЗначений;
тзнФайлов.Колонки.Добавить("Файл");
тзнФайлов.Колонки.Добавить("НадоВыгружать");
Пока ВыборкаФайлов.Следующий() Цикл
ТекФайл = ВыборкаФайлов.ХранилищеСсылка;
МассивФайлов.Добавить(ТекФайл);
НовСтр = тзнФайлов.Добавить();
НовСтр.Файл = ТекФайл;
НовСтр.НадоВыгружать = ВыборкаФайлов.НадоВыгружать;
КонецЦикла;
Для Каждого ФайлДляВыгрузки Из тзнФайлов Цикл
АдресФайла = ВыгрузитьФайл(ПараметрыОбмена, ИмяКаталога, ВыборкаНоменклатуры.Номенклатура, ФайлДляВыгрузки.Файл, ФайлДляВыгрузки.НадоВыгружать);
Если ЗначениеЗаполнено(АдресФайла) Тогда
ОписаниеФайла = СокрЛП(ФайлДляВыгрузки.Файл.Наименование);
Файлы.Добавить(АдресФайла);
Если НЕ ПустаяСтрока(ОписаниеФайла) Тогда
ОписаниеФайлов.Вставить(АдресФайла, ОписаниеФайла);
КонецЕсли;
ВыгруженоФайлов = ВыгруженоФайлов + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция ВыгрузитьКартинку(ПараметрыОбмена, ИмяКаталога, Номенклатура, ПутьНаименованиеКартинки,МоеИмяКартинки)//ХранилищеСсылка, НадоВыгружать)
Результат = НеОпределено;
//Если НЕ ЗначениеЗаполнено(ХранилищеСсылка) Тогда
// Возврат Результат;
//КонецЕсли;
Картинка = новый Картинка(ПутьНаименованиеКартинки);//ХранилищеСсылка.Хранилище.Получить();
Если ТипЗнч(Картинка) <> Тип("Картинка") Тогда
Возврат Результат;
КонецЕсли;
ФорматКартинкиРазрешен = Истина;
РасширениеФайлаКартинки = "";
Попытка
ФорматКартинкиОбъекта = Картинка.Формат();
Исключение
ФорматКартинкиОбъекта = ФорматКартинки.НеизвестныйФормат;
КонецПопытки;
Если ФорматКартинкиОбъекта = ФорматКартинки.НеизвестныйФормат Тогда
ФорматКартинкиРазрешен = Ложь;
Иначе
Если НЕ (ФорматКартинкиОбъекта = ФорматКартинки.GIF
ИЛИ ФорматКартинкиОбъекта = ФорматКартинки.JPEG
ИЛИ ФорматКартинкиОбъекта = ФорматКартинки.PNG) Тогда
Попытка
ФорматКартинкиОбъекта = Картинка.Преобразовать(ФорматКартинки.JPEG);
Исключение
Б_ОбщиеПроцедурыИФункцииОбменаССайтом.СообщитьПодробно("Не удалось преобразовать формат картинки. Номенклатура: " + Номенклатура + ". Преобразование из " + Строка(ФорматКартинкиОбъекта) + " в JPEG", ПараметрыОбмена);
Возврат Результат;
КонецПопытки;
КонецЕсли;
РасширениеФайлаКартинки = Строка(ФорматКартинкиОбъекта);
КонецЕсли;
Если НЕ ФорматКартинкиРазрешен Тогда
Б_ОбщиеПроцедурыИФункцииОбменаССайтом.СообщитьПодробно("Формат основного изображения неизвестен или запрещен. Номенклатура: " + Номенклатура, ПараметрыОбмена);
Возврат Результат;
КонецЕсли;
ИмяПоНоменклатуре = Строка(Номенклатура.УникальныйИдентификатор());
ИмяПоХранилищу = ПутьНаименованиеКартинки;//Строка(ХранилищеСсылка.УникальныйИдентификатор()); //отото
ИмяФайлаКартинки = ИмяПоНоменклатуре+"_"+МоеИмяКартинки + "." + НРег(РасширениеФайлаКартинки);//ИмяПоНоменклатуре + "_" + ИмяПоХранилищу + "." + НРег(РасширениеФайлаКартинки);
КаталогПоИмени = "d3";//Лев(ИмяПоНоменклатуре, 2);
КаталогКартинки = Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ПолучитьПутьДляПлатформы(ПараметрыОбмена.ПлатформаWindows, (ИмяКаталога + "\" + ПараметрыОбмена.ПодкаталогФайлов + "\" + КаталогПоИмени));
НадоВыгружать = истина;
Если НадоВыгружать тогда
СоздатьКаталог(КаталогКартинки);
ПолноеИмяФайлаКартинки = Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ПолучитьПутьДляПлатформы(ПараметрыОбмена.ПлатформаWindows, (КаталогКартинки + "\" + ИмяФайлаКартинки));
Попытка
Картинка.Записать(ПолноеИмяФайлаКартинки);
Исключение
Б_ОбщиеПроцедурыИФункцииОбменаССайтом.СообщитьПодробно("Не удалось записать файл картинки на диск. Номенклатура: " + Номенклатура, ПараметрыОбмена);
Возврат Результат;
КонецПопытки;
КонецЕсли;
Результат = ПараметрыОбмена.ПодкаталогФайлов + "/" + КаталогПоИмени + "/" + ИмяФайлаКартинки;
Возврат Результат;
|