|
Загрузка и просмотр картинки (ХранилищеЗначений) | ☑ | ||
---|---|---|---|---|
0
queit
04.07.13
✎
07:04
|
В общем хочется загрузить картинку из файла и вывести её на просмотр.
Делаю справочник "Файлы", реквизит "ХранимыйФайл" - тип "ХранилищеЗначения". Команда загрузить: &НаСервере Процедура СоздатьФайлНаСервере(АдресФайла, ИмяФайла) ХранилищеКартинки = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресФайла)); ОбФормы = РеквизитФормыВЗначение("Объект"); ОбФормы.Наименование = ИмяФайла; ОбФормы.ХранимыйФайл = ХранилищеКартинки; ЗначениеВРеквизитФормы(ОбФормы, "Объект"); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьФайл() // Создание из файла ПолноеИмяФайла = ""; РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами(); ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ВыборФайла.МножественныйВыбор = Ложь; ВыборФайла.Заголовок = НСтр("ru = 'Выбор файла'"); ВыборФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); Результат = ВыборФайла.Выбрать(); ПолноеИмяФайла = ВыборФайла.ПолноеИмяФайла; Если НЕ Результат Тогда Возврат; КонецЕсли; АдресФайла = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВыборФайла.ПолноеИмяФайла), УникальныйИдентификатор); Файл = Новый Файл(ВыборФайла.ПолноеИмяФайла); ИмяФайла = Файл.Имя; СоздатьФайлНаСервере(АдресФайла, ИмяФайла); КонецПроцедуры &НаКлиенте Процедура ВыбратьФайл(Команда) ЗагрузитьФайл(); КонецПроцедуры потом создаю реквизит формы "АдресКартинки" - тип "Строка" Помещаю на форму элемент "АдресКартинки" вид - "Поле картинки" затем В при создании на сервере пишу: АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ХранимыйФайл"); и картинка не выводится =( Подскажите что я делаю не так? |
|||
1
Cyberhawk
04.07.13
✎
07:18
|
Я через ЗапуститьПриложение открываю картинки:
&НаКлиенте Процедура ОткрытьФайл(Индекс) Экспорт Если ПустаяСтрока(Объект.Вложения[Индекс].ИмяФайлаИсточника) Тогда Предупреждение(НСтр("ru = 'Имя не задано'", "ru")); Возврат; КонецЕсли; Адрес = АдресХранилища(Индекс); Файл = Новый Файл(Объект.Вложения[Индекс].ИмяФайлаИсточника); #Если ВебКлиент тогда ПолучитьФайл(Адрес,Файл.Имя, Истина); #Иначе ПутьКФайлу = КаталогВременныхФайлов()+Файл.Имя; ПолучитьФайл(Адрес,ПутьКФайлу, ЛОжь); ЗапуститьПриложение(ПутьКФайлу); #КонецЕсли КонецПроцедуры |
|||
2
Cyberhawk
04.07.13
✎
07:19
|
Объект.Вложения - табличная часть с файлами
|
|||
3
queit
04.07.13
✎
07:26
|
Как вариант можно и так, но все таки хочется чтобы на форме показывалась картинка.
Вообще ни понимаю как это сделать. |
|||
4
Cyberhawk
04.07.13
✎
07:26
|
Так посмотри как это сделано в УТ 11
|
|||
5
Cyberhawk
04.07.13
✎
07:26
|
Для номенклатуры
|
|||
6
queit
04.07.13
✎
07:30
|
(4) дык посмотрел как в УНФ, так и делается как я написал :-)
Все проходит без ошибок, в хранилище записывается, вот только в элементе на форме не отображается. |
|||
7
cw014
04.07.13
✎
07:32
|
А сделать отдельный реквизит с типом "Картинка" и туда помещать твою картинку из ХранилищеЗначений никак?
|
|||
8
cw014
04.07.13
✎
07:32
|
ОбФормы = РеквизитФормыВЗначение("Объект");
ОбФормы.Наименование = ИмяФайла; ОбФормы.ХранимыйФайл = ХранилищеКартинки; ЗначениеВРеквизитФормы(ОбФормы, "Объект"); 1 и 4 строка в контексте формы бессмыслены |
|||
9
queit
04.07.13
✎
07:33
|
(8) тогда как поместить данные в реквизит?
|
|||
10
cw014
04.07.13
✎
07:34
|
(9) Если в реквизит объекта, то напрямую
Объект.ХранимыйФайл = ХранилищеКартинки; |
|||
11
queit
04.07.13
✎
07:36
|
(10) и где это строчка должна выполняться?
|
|||
12
cw014
04.07.13
✎
07:37
|
(11) Вместо всего хлама, указанного в (8)
|
|||
13
queit
04.07.13
✎
07:40
|
(12) вообще-то, "Объект" - это "ДанныеФормыСтруктура", в этой структуре у меня нет реквизита "ХранимыйФайл". У него тип "ХранилищеЗначений". Ничего не путаете?
|
|||
14
cw014
04.07.13
✎
07:49
|
(13) Ладно, верю. Но имхо зачем тебе "АдресКартинки" в виде строки?
|
|||
15
cw014
04.07.13
✎
07:50
|
Добавь в реквизиты формы реквизит с типом "Картинка", помести его на форму да и закидывай туда свою картинку
|
|||
16
queit
04.07.13
✎
07:58
|
(15) такой вариант пробовал:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Картинка = Новый Картинка(Объект.Ссылка.ХранимыйФайл.Получить()); КонецПроцедуры все равно пусто :-( |
|||
17
cw014
04.07.13
✎
08:04
|
Значит что то где то не так делаешь
|
|||
18
queit
04.07.13
✎
08:09
|
(17) вот в этом-то и вопрос. В отладчике останавливаюсь - в реквизите "ХранимыйФайл" есть двоичные данные.
Значит картинка загружается. Почему не выводится - вопрос остается открытым |
|||
19
Лодырь
04.07.13
✎
08:10
|
О, видать топикстартер штурмует ЦАН.
|
|||
20
Лодырь
04.07.13
✎
08:11
|
Надо уже выложить куданибудь конфигу с их заданием.
|
|||
21
queit
04.07.13
✎
08:18
|
(19) А вот и не угадали :-)
Пишу конфу для хостела, там смысл следующий: есть номера, в номерах есть места - кровати. Кровати бывают разные - деревянные, железные, надувные, просто высокие матрасы. Так вот места - это отдельный справочник и хотелось бы чтобы в этом справочнике была фотка места - кровати :-) А что у ЦАН есть такая задачка??? |
|||
22
queit
04.07.13
✎
08:18
|
(20) если у них нечто подобное, то поделитесь, пожалуйста.
|
|||
23
Лодырь
04.07.13
✎
08:21
|
(22) Есть, а вы им постучите - они вам задание и вышлют )Тут задача обсуждалась, во всяком случае я натыкался пару раз случайно.
|
|||
24
queit
04.07.13
✎
08:34
|
(23) да как-то у них своя задача, а у меня своя :-)
|
|||
25
bborisko
04.07.13
✎
08:54
|
Я вот так показываю
ДД=Новый ДвоичныеДанные(ТекущаяКартинка); АдресКартинки = ПоместитьВоВременноеХранилище(ДД); Но у меня ТекущаяКартинка - строка с путем к файлу |
|||
26
queit
04.07.13
✎
08:56
|
(25) неее, это не красиво. Так придется хранить файлы на диске. У меня все хранится в базе, в ХранилищеЗначений
|
|||
27
bborisko
04.07.13
✎
08:59
|
(26) Все зависит от количества картинок)
А вообще можно же сохранить в темп и открыть. |
|||
28
queit
04.07.13
✎
09:01
|
Создал реквизит "ТекКартинка" тип "картинка". Поместил на форму картинку.
Выполняю код: ТекКартинка = Новый Картинка(ПолучитьИзВременногоХранилища(АдресФайла)); Картинка пустая - вот здесь я вообще ничего не понимаю ((( двоичные данные же есть, куда пропадает картинка...не понятно... |
|||
29
queit
04.07.13
✎
09:02
|
(27) В принципе можно, но реально хочется разобраться как это делается в типовой.
|
|||
30
bborisko
04.07.13
✎
09:06
|
У меня АдресКартинки - реквизит строка , а на форме АдресКартинки - поле картинки с данными из реквизита строка
Попробуй так же просто адрес указать. А вообще это все у меня на УФ, на обычных формах не помню но там было все проще. |
|||
31
queit
04.07.13
✎
09:12
|
(30) да, у меня все так же. Не работает - картинка не отображается вообще.
|
|||
32
bborisko
04.07.13
✎
09:19
|
Посмотри в типовых как - там например в справочнике сотрудники - фото сотрудника отображается и хранится оно как раз в базе.
|
|||
33
queit
04.07.13
✎
10:08
|
дело было не в бабине )))
нужно еще вот такую конструкцию: &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда ТекущийОбъект.ХранимыйФайл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресКартинки)); КонецЕсли; КонецПроцедуры |
|||
34
Cyberhawk
04.07.13
✎
11:26
|
Молодец
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |