Имя: Пароль:
1C
1С v8
Вставка изображения в форму элемента
0 Lavr
 
25.02.12
21:43
Здравствуйте.
Вот код вставки изображения в форму элемента:

Процедура ОсновноеИзображениеНажатие(Элемент)
     
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл с фотографией";
Диалог.ПолноеИмяФайла = "";
Диалог.ПредварительныйПросмотр = Истина;
Диалог.Фильтр =
"Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|"
+ "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат TIFF (*.tif)|*.tif|"
+ "Формат GIF (*.gif)|*.gif|"
+ "Формат PNG (*.png)|*.png|"
+ "Формат icon (*.ico)|*.ico|"
+ "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки

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

Хранилище = Новый ХранилищеЗначения(ЭлементыФормы.ОсновноеИзображение.Картинка.ПолучитьДвоичныеДанные());

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

Картинка отображается но после записи не сохраняется, может кто подскажет что делать?
1 andrewks
 
25.02.12
21:48
моделей учитываете? :)
2 andrewks
 
25.02.12
21:49
может, так?

НовНоменклатура = Справочники.Модель.СоздатьЭлемент();
НовНоменклатура.Наименование = "Менеджер";
// реквизит Изображение имеет тип ХранилищеЗначения
НовНоменклатура.Записать();
НовНоменклатура.Изображение = Хранилище;
НовНоменклатура.Записать();
3 Lavr
 
25.02.12
21:56
моделей учитываете? :)
-   :)

Помощи искал в инете, что нашел пока не изменял все переменные и названия под себя.
Попробовал, не получается.
4 andrewks
 
25.02.12
21:59
а нафига ты создаёшь новый элемент номенклатуры?
5 Lavr
 
25.02.12
21:59
сейчас вот еще УТ смотрю, но это пока дремучий лес для меня.
6 Lavr
 
25.02.12
22:03
а нафига ты создаёшь новый элемент номенклатуры?

т. е. каждый раз при новом добавлении изображения? Подскажите пожалуйста как лучше сделать.
7 andrewks
 
25.02.12
22:04
(6) не, ну ты говоришь, что находишься в форме элемента. зачем создаёшь новый? тебе же с контекстом работать надо, насколько я понимаю
8 Lavr
 
25.02.12
22:08
У меня справочник Сотрудники там необходимо добавлять фото сотрудника в форму сотрудника (элемента), в форме поле картинки - ОсновноеИзображение.
9 catena
 
25.02.12
22:26
А если убрать

НовНоменклатура = Справочники.Модель.СоздатьЭлемент();
НовНоменклатура.Наименование = "Менеджер";
// реквизит Изображение имеет тип ХранилищеЗначения

НовНоменклатура.Изображение = Хранилище;
НовНоменклатура.Записать();

И оставить только

Изображение = Хранилище;

?
10 catena
 
25.02.12
22:27
Эти процедуры - они где расположены?
11 andrewks
 
25.02.12
22:29
(8) у тебя обычное приложения, я так понимаю?
12 Lavr
 
26.02.12
08:34
(10) они в модуле формы элемента, в справочнике Сотрудники.
(11) конфигурацию начал писать с нуля, так сказать практиковаться, сейчас изучаю 1С.
(9) эффект тот же - не сохраняет фото в форме.
13 catena
 
26.02.12
09:23
Не сохраняет или не показывает?

ПоказатьКартинку(НовНоменклатура)

Эта процедура когда вызывается и что получает в НовНоменклатура?
14 andrewks
 
26.02.12
09:26
(12) ну, допустим, с нуля. ты ответь на (11) - обычное, или управляемое приложение?
15 Wobland
 
26.02.12
09:29
цитирую рабочий код:
Процедура ДействияФормыЗагрузить(Кнопка)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.МножественныйВыбор=Ложь;
   Диалог.Фильтр=ПолучитьФильтрИзображений();
   Если Диалог.Выбрать() Тогда
       ВыбраннаяКартинка=Новый Картинка(Диалог.ПолноеИмяФайла);
       Картинка=Новый ХранилищеЗначения(ВыбраннаяКартинка);
       ЭлементыФормы.ПолеКартинки.Картинка=ВыбраннаяКартинка;
   КонецЕсли;
КонецПроцедуры
16 Wobland
 
26.02.12
09:29
ну и
Процедура ДействияФормыСохранить(Кнопка)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Фильтр="Формат jpeg (*.jpg)|*.jpg";
   Если Диалог.Выбрать() Тогда
       ВыбраннаяКартинка=Картинка.Получить();
       ВыбраннаяКартинка.Записать(Диалог.ПолноеИмяФайла);
   КонецЕсли;
КонецПроцедуры
17 andrewks
 
26.02.12
09:30
(15) это будет рабочий код для обычного приложения
18 Wobland
 
26.02.12
09:32
(17) разумеется. а я плохо ветку читал? у автора УФ?
19 Wobland
 
26.02.12
09:33
+(18) один хрен, пущай по аналогии думает
20 andrewks
 
26.02.12
09:36
(19) по аналогии не выйдет
(18) дык я его пытаю, он не отвечает
21 Lavr
 
26.02.12
10:00
Извините за долгий ответ - с ребенком сидел.
У меня обычные приложение, не управляемое. Про управляемое только читал, но не сталкивался.
22 Lavr
 
26.02.12
16:38
Фотография всеравно не отображается, может изображение не сохраняется в хранилище вообще?
Независимо от того, куда вы едете — это в гору и против ветра!