Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите, пожалуйста с загрузкой картинки! , Загрузка ОсновногоИзображение в спр.Номенклатура из файла          
maxy3d Подменю пользователя
сообщение 26.02.13, 8:57
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день!
Пытаюсь выполнить загрузку из файла 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
 


Сообщение отредактировал logist - 26.02.13, 9:49

Petre Подменю пользователя
сообщение 26.02.13, 9:48
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2907
Из: Київ, Україна
Спасибо сказали: 1148 раз
Рейтинг: 1230.2

В чем заключается проблема? Текст ошибки? Что показывает при отладке?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

maxy3d Подменю пользователя
сообщение 26.02.13, 10:16
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 26.02.13, 9:48) *
В чем заключается проблема? Текст ошибки? Что показывает при отладке?

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

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


Сообщение отредактировал Vofka - 26.02.13, 10:36

maxy3d Подменю пользователя
сообщение 02.03.13, 22:11
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 0 раз
Рейтинг: 0


 ! 

Может таки прочитаете правила форума?
 


Сообщение отредактировал logist - 02.03.13, 22:24

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.06.24, 21:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!