Имя: Пароль:
1C
1С v8
Картинка на форме УФ
,
0 Mr_Mihail
 
15.11.12
10:58
Пытаюсь отобразить картинку на форме внешней обработки. при выделении строки на форме должна отображаться картинка. создал Декорацию с видом Картинка.

&НаКлиенте
Процедура СписокНоменклатурыПриАктивизацииСтроки(Элемент)
   
   Попытка
       СтрокаНоменклатуры = Элементы.СписокНоменклатуры.ТекущиеДанные.Номенклатура;
       
       Элементы.Картинка = ПолучитьКартинку(СтрокаНоменклатуры);
       
   Исключение
   КонецПопытки;
КонецПроцедуры

&НаСервере
Функция ПолучитьКартинку(СтрокаНоменклатуры)
   
   Попытка
       КартинкаНоменклатуры = Новый Картинка(ПолучитьИзВременногоХранилища(ПрисоединенныеФайлы.ПолучитьДанныеФайла(СтрокаНоменклатуры.ФайлКартинки).СсылкаНаДвоичныеДанныеФайла));
   Исключение
   КонецПопытки;    
       
   Возврат КартинкаНоменклатуры    
   
КонецФункции

Программа ошибок не выдаёт. по отладчику смотрел - номенклатура цепляется, картинка тоже. но всё равно картинка не отображается, подскажите что делаю не правильно?
1 Heckfy
 
15.11.12
11:01
ЭтаФорма.ОбновитьОтображениеДанных() не помогает?
2 Cube
 
15.11.12
11:01
3 Cube
 
15.11.12
11:02
(0) Посмотреть, как в УТ в справочнике "Номенклатура" картинка выводится религия до сих пор не позволяет?))
4 GLazNik
 
15.11.12
11:02
(0) вроде как Новый Картинка(ПолучитьИзВременногоХранилища( лишнее
5 Mr_Mihail
 
15.11.12
11:02
(2) так точно, пытаюсь теми же способами только уже на форме отображать. много лазил по форуму, но результата добиться не получилось. пришлось прибегнуть к вашей помощи)
6 Mr_Mihail
 
15.11.12
11:03
(3) первоначально там и смотрел. но не смог разобраться, опыта мало разбираться в чужом коде
7 Cube
 
15.11.12
11:04
(6) Что там разбираться-то? Вон в (4) уже подсказывают...
8 Mr_Mihail
 
15.11.12
11:05
(1) попробовал. безрезультатно(
9 Mr_Mihail
 
15.11.12
11:07
(4)
КартинкаНоменклатуры = ПрисоединенныеФайлы.ПолучитьДанныеФайла(СтрокаНоменклатуры.ФайлКартинки).СсылкаНаДвоичныеДанныеФайла;

тоже не помогает(
10 Cube
 
15.11.12
11:11
11 GLazNik
 
15.11.12
11:11
(6) чего там разбираться?
кода пару строк...
добавляем реквизит, типа строка
кидаем его на форму с видом поле картинки
потом идет
АдресКартинки = ПолучитьНавигационнуюСсылкуКартинки(Объект.ФайлКартинки, УникальныйИдентификатор)
а там вызов который уже есть у тебя
   Возврат ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;
12 Mr_Mihail
 
15.11.12
11:18
(10) у меня УТ 11 (11.0.8.11). форма совсем другая, и в процедуре ПриСозданииНаСервере ничего про отображение картинки. АдресКартинки с типом строка без ограничения?
13 Mr_Mihail
 
15.11.12
11:19
(11) я не то что не разобрался, я его найти не смог. Сейчас попробую, спасибо
14 НЕА123
 
15.11.12
11:20
интересный подход в (0).

>Программа ошибок не выдаёт.

отладчиком пользоваться не умеем, а вот все в попытку-исключение все засунуть - это мастерски.
15 Cube
 
15.11.12
11:23
(12) У меня 11.0.6.9.
16 GLazNik
 
15.11.12
11:25
(14) гы и вправду... красиво :)
(12) Причем тут ПриСозданииНаСервере?
Поиском по модулю пользоваться умеем? Поищите где используется АдресКартинки
17 Mr_Mihail
 
15.11.12
11:28
(14) умею я пользоваться отладчиком. первая попытка для того что бы программа не зависала в начале, поскольку процедура выполняется при открытии формы, когда таб часть пустая. а вторая попытка, когда номенклатура не имеет картинку
18 D_Pavel
 
15.11.12
11:29
У меня так работает:

       СсылкаНаКартинку=ПоместитьВоВременноеХранилище(Новый Картинка(НайденныеФайлы[0].ПолноеИмя, Истина), УникальныйИдентификатор);


Где СсылкаНаКартинку это путь к данным картинки на форме
19 Mr_Mihail
 
15.11.12
11:30
20 GLazNik
 
15.11.12
11:30
(17) это "пять"! Все это спокойно обрабатывается без Попытка Исключение.
21 Mr_Mihail
 
15.11.12
11:31
Получилось с отображением картинки, осталось только настроить ширину и высоту. Спасибо за помощь!
22 Mr_Mihail
 
15.11.12
11:31
(20) ну других способов я пока не знаю.
23 GLazNik
 
15.11.12
11:34
(22) это не повод все оборачивать попыткой. Избавляйтесь от этой вредной привычки. Попытка Исключение только в крайнем случае, когда другие методы невозможны.
24 Mr_Mihail
 
15.11.12
11:36
(23) хорошо, буду искать иные способы.
25 acsent
 
15.11.12
11:36
КартинкаНоменклатуры - адрес временного хранилища должно быть
26 Mr_Mihail
 
15.11.12
11:39
(25) я её теперь не использую. сразу с сервера записываю значение в реквизит обработки
Отчет.Картинка = ПрисоединенныеФайлы.ПолучитьДанныеФайла(СтрокаНоменклатуры.ФайлКартинки).СсылкаНаДвоичныеДанныеФайла;
27 D_Pavel
 
15.11.12
11:56
(26) Так в тонком клиенте может не работать. Лучше сделать как я написал
28 Mr_Mihail
 
15.11.12
12:11
(27) всё проверил, работает.
вот результат:

&НаКлиенте
Процедура СписокНоменклатурыПриАктивизацииСтроки(Элемент)
   
   Если Элементы.СписокНоменклатуры.ТекущиеДанные <> Неопределено Тогда
       СтрокаНоменклатуры = Элементы.СписокНоменклатуры.ТекущиеДанные.Номенклатура;
       ПолучитьКартинку(СтрокаНоменклатуры);
       
   КонецЕсли
   
КонецПроцедуры

&НаСервере
Процедура ПолучитьКартинку(СтрокаНоменклатуры)
   
   Если ЗначениеЗаполнено(СтрокаНоменклатуры.ФайлКартинки) ТОгда
       Отчет.Картинка = ПрисоединенныеФайлы.ПолучитьДанныеФайла(СтрокаНоменклатуры.ФайлКартинки).СсылкаНаДвоичныеДанныеФайла;
   Иначе
       Отчет.Картинка = Неопределено;
   КонецЕсли;        
                       
КонецПроцедуры

Всем ещё раз спасибо за помощь!
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой