Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите, пожалуйста с загрузкой картинки!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
maxy3d
Добрый день!
Пытаюсь выполнить загрузку из файла 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);
            Продолжить;
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры


Спасибо огромное за помощь!


 ! 

Правила, п.12
 
Petre
В чем заключается проблема? Текст ошибки? Что показывает при отладке?
maxy3d
Цитата(Petre @ 26.02.13, 9:48) необходимо зарегистрироваться для просмотра ссылки
В чем заключается проблема? Текст ошибки? Что показывает при отладке?

Большое спасибо за то, что откликнулись!
Проблему решил!
Писал:
НовыйОбъект.Хранилище     = Новый ХранилищеЗначения(НовыйОбъект, Новый СжатиеДанных);

а нужно было:
НовыйОбъект.Хранилище     = Новый ХранилищеЗначения(ВыбФото, Новый СжатиеДанных);
maxy3d

 ! 

Может таки прочитаете правила форума?
 
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.