Добрый день!
Пытаюсь выполнить загрузку из файла excel в спр. номенклатура. В колонке excel есть имя картинки (название jpg файла) - фото товара (потом к имени фалйла добавляется адрес). Проблема возникает, когда пытаюсь установить ОсновноеИзображение! Помогите пожалуйста! Вот модуль:
Перем тФото;
Функция ЗарузитьИзображение(ОбъектВладелец)
ВыбФото = Новый Картинка("d:\#Test\#NEW\Photo\"+тФото+".jpg", ложь);
НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
НовыйОбъект.Хранилище = Новый ХранилищеЗначения(НовыйОбъект, Новый СжатиеДанных);
НовыйОбъект.Объект = ОбъектВладелец;
НовыйОбъект.ИмяФайла = тФото;
НовыйОбъект.Записать();
Возврат НовыйОбъект.Ссылка;
КонецФункции
Процедура КнопкаСформироватьНажатие(Кнопка)
// Вставить содержимое обработчика.
ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогФыбораФайла.Фильтр = "Файл данных (*.xlsx)|*.xlsx";
ДиалогФыбораФайла.Заголовок = "Выберите файл";
ДиалогФыбораФайла.ПредварительныйПросмотр = Ложь;
ДиалогФыбораФайла.Расширение ="xlsx";
ДиалогФыбораФайла.ИндексФильтра = 0;
//ДиалогФыбораФайла.ПолноеИмяФайла = ИмяФайла.Значение;
ДиалогФыбораФайла.ПолноеИмяФайла = "";
//ДиалогФыбораФайла.ПроверятьСуществованиеФайла = ПроверятьСуществование;
Если ДиалогФыбораФайла.Выбрать() Тогда
ИмяФайла = ДиалогФыбораФайла.ПолноеИмяФайла;
КонецЕсли;
Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
Возврат;
КонецЕсли;
Попытка
ExcelПриложение = новый COMОбъект("Excel.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Excel." + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;
Попытка
// Открытие файла Microsoft Excel
Состояние("Открытие файла Microsoft Excel...");
ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
Исключение
Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
Попытка
// Обработка файла Microsoft Excel
Состояние("Обработка файла Microsoft Excel...");
// Читаем данные первого листа книги
ExcelЛист = ExcelФайл.Sheets(1);
// Определить количество строк и колонок выбранного листа книги Excel
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
Исключение
Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
// Закрыть COM соединение для экономии памяти
ExcelПриложение.Quit();
КонецПопытки;
КодГруппы = "000000292";
ПоискПоПолномуКоду = Ложь; // значение по умолчанию
Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду);
Спр = Справочники.Номенклатура;
СпрХ = Справочники.ХранилищеДополнительнойИнформации;
Для Строка = 1 По ExcelПоследняяСтрока Цикл
// Обработка нажатия Ctrl + Break
ОбработкаПрерыванияПользователя();
КодTyre = Число(ExcelЛист.Cells(Строка, 1).Value);
тФото = СокрЛП(Лев(Прав(Строка(ExcelЛист.Cells(Строка, 16).Value),14),10));
НайденнаяСсылка = спр.НайтиПоРеквизиту("КодTyre",КодTyre);
Если НайденнаяСсылка = Спр.ПустаяСсылка() Тогда
Элемент = Спр.СоздатьЭлемент();
Элемент.Родитель = Группа.Ссылка;
Элемент.Наименование = СокрЛП(Строка(ExcelЛист.Cells(Строка, 4).Value));
Элемент.КодTyre = Число(ExcelЛист.Cells(Строка, 1).Value);
Элемент.Производитель = СокрЛП(Строка(ExcelЛист.Cells(Строка, 2).Value));
Элемент.Модель = СокрЛП(Строка(ExcelЛист.Cells(Строка, 3).Value));
Элемент.Ширина = СокрЛП(Строка(ExcelЛист.Cells(Строка, 5).Value));
Элемент.Высота = СокрЛП(Строка(ExcelЛист.Cells(Строка, 6).Value));
Элемент.Радиус = СокрЛП(Строка(ExcelЛист.Cells(Строка, 7).Value));
Элемент.Сезонность = СокрЛП(Строка(ExcelЛист.Cells(Строка, 12).Value));
Элемент.Применяемость = СокрЛП(Строка(ExcelЛист.Cells(Строка, 13).Value));
Элемент.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("001", ПоискПоПолномуКоду);
Элемент.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000021", ПоискПоПолномуКоду);
Если ЗначениеЗаполнено(тФото) = Истина Тогда
Элемент.ОсновноеИзображение = ЗарузитьИзображение(Элемент.Ссылка);
Иначе
Элемент.ОсновноеИзображение = СпрХ.ПустаяСсылка();
КонецЕсли;
Элемент.Записать();
Сообщить(" *"+Элемент.Наименование);
Состояние("Обработка файла Microsoft Excel : " + "строка " + Строка + " из " + ExcelПоследняяСтрока);
Иначе
Если ЗначениеЗаполнено(тФото) = Истина Тогда
Элемент.ОсновноеИзображение = ЗарузитьИзображение(Элемент.Ссылка);
Иначе
Элемент.ОсновноеИзображение = СпрХ.ПустаяСсылка();
КонецЕсли;
Сообщить("Уже существует "+СокрЛП(Строка(ExcelЛист.Cells(Строка, 4).Value))+ " с кодом tyer: "+КодTyre);
//Сообщить("Фото "+СокрЛП(Строка(ExcelЛист.Cells(Строка, 4).Value))+ " с кодом tyer: "+КодTyre);
Продолжить;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Спасибо огромное за помощь!
Сообщение отредактировал logist - 26.02.13, 9:49