Версия для печати темы (https://pro1c.org.ua/index.php?s=ebfdfd37915d9a7ce504e20fba8aedbc&showtopic=50775)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Установка Основного изображения

Автор: Tseka 02.03.19, 18:12

1С:Предприятие 8.3 (8.3.8.2027)

"Управление торговлей для Украины", редакция 2.3.

Есть код :

Для Каждого Стр Из ТаблицаДанныхВрем Цикл
        
        
        Сообщить(Стр[3]);
        Товар = Справочники.Номенклатура.НайтиПоКоду(Стр[3]);
        
        Если ПустаяСтрока(Стр[4]) Тогда
            Продолжить;
        КонецЕсли;
        НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
        Сообщить("Загрузка в "+Товар+"...");
        ВыбранноеИзображение = Новый Картинка(ИмяКаталогаИмяФайл, Ложь);
        
        НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
        НовыйОбъект.Хранилище = Новый ХранилищеЗначения(ВыбранноеИзображение, Новый СжатиеДанных);
        НовыйОбъект.Объект = Товар;
        Попытка
            НовыйОбъект.Записать();
            Стр.Статус = Истина;
            
            ОбъектИзображения = Товар.ПолучитьОбъект();
            ОбъектИзображения.ОсновноеИзображение = НовыйОбъект.Ссылка;
            ОбъектИзображения.ОсновноеИзображение.ИмяФайла = НовыйОбъект.Ссылка;
            ОбъектИзображения.Записать();
        Исключение
        КонецПопытки;
        
    КонецЦикла;


Картинку загружает к товару , но не устанавливает основным изображением .

Что в этом коде добавить чтобы осуществить установку основного изображения товара ? Картинку загружает к товару , но не устанавливает основным изображением .


Автор: nik389 02.03.19, 19:32

вроде как все правильно..

у меня для УТП-шки вот такой код нормально срабатывал:

Процедура УстановитьОсновнуюКартинку(ИмяКартинки,КартинкаДляЗаливки,ОбъектТовар)
    Если КартинкаДляЗаливки = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Хранилище = новый ХранилищеЗначения(КартинкаДляЗаливки);

    // получаем новый элемент ХранилищеДополнительнойИнформации
    ХранилищеДопИнф = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();

    // устанавливаем свойства элемента ХранилищеДополнительнойИнформации
    ХранилищеДопИнф.Наименование = ИмяКартинки;
    ХранилищеДопИнф.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;    
    ХранилищеДопИнф.Объект = ОбъектТовар.Ссылка;
    ХранилищеДопИнф.Хранилище = Хранилище;

    // сохраняем новый элемент в базу
    Попытка
        ХранилищеДопИнф.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
        
    ОбъектТовар.ОсновноеИзображение = ХранилищеДопИнф.Ссылка;    
КонецПроцедуры


Автор: pablo 05.03.19, 12:11

ОбъектИзображения.ОсновноеИзображение.ИмяФайла = НовыйОбъект.Ссылка;

В этой строке генерируется исключительная ситуация

Автор: Tseka 05.03.19, 16:21

Цитата(pablo @ 05.03.19, 12:11) *
В этой строке генерируется исключительная ситуация



Исправил , но всё равно не устанавливается основным , просто записывается в изображение .

Процедура КнопкаЗагрузитьКартинкиНажатие(Элемент)
    ИндикаторОбработки = 0;
    ЭлементыФормы.ИндикаторОбработки.МаксимальноеЗначение = ТаблицаДанныхВрем.Количество();
    ВыбранноеИзображение = Новый Картинка(ИмяКаталогаИмяФайл, Ложь);

    Для Каждого Стр Из ТаблицаДанныхВрем Цикл
        
        Сообщить(Стр[3]);
        Товар = Справочники.Номенклатура.НайтиПоКоду(Стр[3]);
        
        НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
        Сообщить("Загрузка в "+Товар+"...");
        ВыбранноеИзображение = Новый Картинка(ИмяКаталогаИмяФайл, Ложь);
        НовыйОбъект.Наименование = Товар.Код;
        НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
        НовыйОбъект.Хранилище = Новый ХранилищеЗначения(ВыбранноеИзображение, Новый СжатиеДанных);
        
        
        НовыйОбъект.Объект = Товар;
        Попытка
                
            НовыйОбъект.Записать();
                
            
            ОбъектИзображения = Товар.ПолучитьОбъект();
        
            ОбъектИзображения.ОсновноеИзображение = НовыйОбъект;
            
            ОбъектИзображения.Записать();
        Исключение
                Сообщить(ОписаниеОшибки());
        КонецПопытки;
    
        ИндикаторОбработки = ИндикаторОбработки + 1;
        
    КонецЦикла;

    
КонецПроцедуры


Tseka @ Сегодня, 15:39 * ,
Как можно получить список картинок у Товара ?

Автор: Tseka 06.03.19, 13:53

Процедура КнопкаУдалитьИзображениеНажатие(Элемент)
    Для Каждого Стр Из ТаблицаДанныхВрем Цикл
        
        Сообщить(Стр[3]);
        Товар = Справочники.Номенклатура.НайтиПоКоду(Стр[3]);
        
        
        ИзображениеНом = Товар.ОсновноеИзображение;
        ИзображениеНом = ИзображениеНом.Ссылка.ПолучитьОбъект();
        ИзображениеНом.Удалить();

        Сообщить(" удалена картинка "+Товар);
        

    КонецЦикла;

    КонецПроцедуры


{ВнешняяОбработка.ГрупповаяУстановкаОсновногоИзображения.Форма.Форма.Форма(1380)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
ИзображениеНом = ИзображениеНом.Ссылка.ПолучитьОбъект();
по причине:
Элемент не выбран!

47046430.gif Что я делаю не так ? Там шесть картинок ... Как их удалить ?

Автор: pablo 06.03.19, 17:21

1. Вместо

ОбъектИзображения.ОсновноеИзображение = НовыйОбъект;
нужно
ОбъектИзображения.ОсновноеИзображение = НовыйОбъект.Ссылка;
2.
 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: п. 6
 

Автор: Tseka 06.03.19, 18:46

Спасибо. Картинку записывает , но не ставит основным изображением . 64000000.gif



В ручную удалил все картинки . А потом с помощью этого кода загрузил одну и она появилась как основная . 32000000.gif


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua