Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 21:52

Вывод картинки на форму

Автор Olgir, 23 мар 2012, 11:33

0 Пользователей и 1 гость просматривают эту тему.

Olgir

Ситуация такая - в базе хранится картинка в виде ХранилищеЗначения. Мне нужно вывести ее на форму.

Как картинка попала в базу:

&НаКлиенте
Процедура ЗаписатьДанные()
МояКартинка = Новый Картинка(ПутьКФайлу);
ЗаписатьНаСервере(МояКартинка, Объект.Наименование);
КонецПроцедуры

&НаСервере
Процедура ЗаписатьНаСервере(МояКартинка, Наименование)
ХранилищеКартинки = Новый ХранилищеЗначения(МояКартинка);
НоваяКартинка = Справочники.Картинки.СоздатьЭлемент();
НоваяКартинка.Наименование = Наименование;
НоваяКартинка.Картинка = ХранилищеКартинки;
НоваяКартинка.Записать();
КонецПроцедуры;


Как я ее оттуда забираю:

&НаКлиенте
Процедура ШапкаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
ШапкаКартинка = ВыбранноеЗначение.Картинка.Получить();
КонецПроцедуры


Где выбранное значение - элемент справочника с картинками, ВыбранноеЗначение.Картинка - реквизит типа ХранилищеЗначения, а ШапкаКартинка - элемнет формы типа Картинка.

После вышеуказанной процедуры ничего не происходит, поле ШапкаКартинка остается пустым. Пробовал делать так:
ИмяФайла = "C:\test.jpg";
ХранилищеКартинки = ВыбранноеЗначение.Картинка.Получить();
ХранилищеКартинки.Записать(ИмяФайла);

Картинка из базы при этом корректно записывается в test.jpg.

Если ставлю на элементе ШапкаКартинка галочку "Гиперссылка", при нажатии на него появляется нужная картинка в новом окне, но на форме в поле по прежнему пусто.

Что я делаю не так? Тапками не бросать - я новичек :). Поясните, пожалуйста, как правильно работать с картинками в базе?

Olgir

Ах да, это управляемая форма

sergejK74

ПолучитьНавигационнуюСсылку(<Объект>, <ИмяРеквизита>, <Индекс>)
ШапкаКартинка = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Картинка");
Объект = элемент справочника с картинками
Картинка - реквизит типа ХранилищеЗначения

Кнопочка Спасибо - слева!

Dethmontt

Пример:
&НаКлиенте
Процедура Команда1(Команда)
               
                Адрес = "";
                Выбфайл = "";
                Если ПоместитьФайл(Адрес,,Выбфайл,,УникальныйИдентификатор) Тогда
                               
                               Элементы.Имя.Видимость = Истина;
                               мФайл = Новый Файл(Выбфайл);
                               имя = мФайл.Имя;
                               СсылкаНа = Адрес;
                               
                               Модифицированность = Истина;
                               
                КонецЕсли;
               
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
               
                Если Объект.ИмяФ <> "" Тогда
                               СсылкаНа = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Файл");
                КонецЕсли;
                               
КонецПроцедуры

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
               
                Если Объект.ИмяФ <> "" Тогда
                               Элементы.Имя.Видимость = Истина;
                КонецЕсли;       
               
КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Olgir

Цитата: sergejK74 от 23 мар 2012, 12:26
ПолучитьНавигационнуюСсылку(<Объект>, <ИмяРеквизита>, <Индекс>)
ШапкаКартинка = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Картинка");
Объект = элемент справочника с картинками
Картинка - реквизит типа ХранилищеЗначения

Что-то не получается. В реквизит ШапкаКартинка попадает строковое значение ссылки, при этом отладчик мне сообщает, что вид картинки - "Пустая". В первоначальном варианте вид картинки - "Абсолютная", но ничего не отображается все равно

Olgir

Отбой, проблема решена! Как оказалось, элемент Поле картинки должен указывать на реквизит вовсе не типа "Картинка", а реквизит типа "Строка". Разработчикам за такое руки оторвать надо, учитывая, что поле создается автоматом при перетаскивании реквизита "Картинка" на форму.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск