Имя: Пароль:
1C
1С v8
Как программно записать картинку
0 Xsander
 
02.09.12
17:19
Как программно записать картинку в эл.справочника номенклатура из файла?
1 Капитан О
 
02.09.12
17:19
подсмотреть в типовой религия не позволяет?
2 Капитан О
 
02.09.12
17:20
я свои картинки писал так:
Процедура ДействияФормыЗагрузить(Кнопка)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.МножественныйВыбор=Ложь;
   Диалог.Фильтр=ПолучитьФильтрИзображений();
   Если Диалог.Выбрать() Тогда
       ВыбраннаяКартинка=Новый Картинка(Диалог.ПолноеИмяФайла);
       Картинка=Новый ХранилищеЗначения(ВыбраннаяКартинка);
       ЭлементыФормы.ПолеКартинки.Картинка=ВыбраннаяКартинка;
   КонецЕсли;
КонецПроцедуры
3 Xsander
 
02.09.12
17:25
Через диалог безспорно срабатывает, а если я перебираю програмно 100 картинок из указанной директории и хочу их присвоить эл. справочника номенклатура - вот здесь как быть?
4 Xsander
 
02.09.12
17:27
Вот такой код пишу:

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

При выполнении открывается форма картинки и по нажатию "Ок" устанавливается картинка, а как обойтись без нажатия на "Ок" - 100 раз жмакать не хотца
5 Капитан О
 
02.09.12
17:27
(3) вознести молитву святому Циклу
6 Xsander
 
02.09.12
17:28
если блок снять на  //ФормаИзображения.Закрыть(); - картинка вообще не устанавливается
7 Xsander
 
02.09.12
17:28
Святому циклу молитву я уже написал
8 Капитан О
 
02.09.12
17:29
(4) не вызывать форму уже пробовал?
9 Капитан О
 
02.09.12
17:29
(8) держу пари, форма к хранению картинки не имеет отношения
10 Xsander
 
02.09.12
17:34
(4) - Пробовал
(8) - пробовал оставлять только :

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

По идее этого должо быть достаточно, что может быть не так?
Остальное уже из справочника брал т.к. не срабатывает
11 Капитан О
 
02.09.12
17:38
(10) вот я как и ты, наверное, второй-третий раз вижу, что картинка у номенклатуры лежит в ОсновноеИзображение и имеет тип Справочники.ХранилищеДополнительнойИнформации. с учётом этого возникает естественная мысль присвоить туда что-нибудь, например твой НовыйОбъект. логично?
12 Капитан О
 
02.09.12
17:39
+(11) и это только в УТ10, я ещё ЗУП не открывал
13 Xsander
 
02.09.12
18:08
(11) Эл.ОсновноеИзображение = НовыйОбъект;
Эл.Записать();

я после вышенаписанного уже писал
14 Wobland
 
02.09.12
18:14
(13) и не работает?
15 Wobland
 
02.09.12
18:16
делаю первый раз. вот почему у меня получается, а у тебя нет? я как-то непонятно в (11) изложил?
Процедура КнопкаВыполнитьНажатие(Кнопка)
   мТекущееОсновноеИзображение = Новый Картинка("C:\temp\Comix_01.jpg");
   НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
   НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
   НовыйОбъект.Хранилище = Новый ХранилищеЗначения(мТекущееОсновноеИзображение, Новый СжатиеДанных);
   НовыйОбъект.Объект = Номенклатура;
   НовыйОбъект.Записать();
   
   об=Номенклатура.ПолучитьОбъект();
   об.ОсновноеИзображение=НовыйОбъект.Ссылка;
   об.Записать();
КонецПроцедуры
Ошибка? Это не ошибка, это системная функция.