Имя: Пароль:
1C
1С v8
Не получается отобразить картинку
0 eeyore
 
17.10.12
19:09
Есть реквизит формы - имя "Картинка" тип "Картинка", он связан с полем Формы вида "Поле картинки".
в форме пишу такой код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Картинка = Новый Картинка("C:\9\1.jpg");
КонецПроцедуры

При открытии формы картинка не отображается.
Что надо сделать чтобы загрузить картинку из файла и отобразить ее в форме?
1 SUA
 
17.10.12
19:15
>>&НаСервере

А файл где?
2 Wobland
 
17.10.12
19:17
•    Документ Предложение имеет следующие реквизиты:
Таб. Часть фото – картинки, необходимо добавить фото, файлы хранится на сервере. При активизации строки – показывается.

дать решение? только быстро
3 zladenuw
 
17.10.12
19:18
(2) да
4 Wobland
 
17.10.12
19:18
+(2) и в аську
5 eeyore
 
17.10.12
19:28
(1) Зачем тебе файл? Возьми любой файл с картинкой если хочешь попробовать.
6 eeyore
 
17.10.12
19:29
(2) давай
7 Wobland
 
17.10.12
21:00
вопрос раз. где картинка живёт? в базе или на диске?
вопрос два. для того, чтобы сервер смог показать тебе твою картинку, её туда нужно передать. просто сказать путь не получится, ибо у сервера своё, у клиента своё. это понимаешь?
8 eeyore
 
18.10.12
14:09
(7)
1. Картинка находится на диске.
2. Нет, не понимаю я твоей мысли. Строка кода Картинка = Новый Картинка("C:\9\1.jpg"); не отображает картинку даже если ее написать на клиенте. А вот если использовать картинку из БиблиотекаКартинок, например так:
Картинка = БиблиотекаКартинок.ВидРасчета;
то картинка отображается. Вот этого я и не понимаю, в обоих случаях создается объект Картинка, но если картинка загружается из файла, то она не отображается, а если используется картинка из БиблиотекаКартинок, то картинка отображается. Почему так?
9 Wobland
 
18.10.12
18:31
(8) код модуля формы для (2):
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   об=РеквизитФормыВЗначение("Объект");
   Если об.ЭтоНовый() Тогда
       Объект.СостояниеПредложения=Перечисления.СостоянияПредложений.Актуально;
       Объект.Автор=ПараметрыСеанса.ТекущийПользователь;
       Объект.Ответственный=ПараметрыСеанса.ТекущийПользователь;
   КонецЕсли;
   ТекущееСостояние=РегистрыСведений.СостояниеПредложений.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("Предложение", Объект.Ссылка)).Состояние;
КонецПроцедуры

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

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

&НаКлиенте
Процедура ФотоПриИзменении(Элемент)
   АдресКартинки=ПолучитьНавигационнуюСсылку(Элемент.ТекущиеДанные.Фотография, "Фото");
КонецПроцедуры
10 Wobland
 
18.10.12
18:31
обработка ПакетнаяЗагрузкаФотографий до кучи:
&НаКлиенте
Процедура Загрузить(Команда)
   Перем Адрес;
   
   Файлы=НайтиФайлы(Каталог, "*.jpg");
   Для Каждого ТекФайл Из Файлы Цикл
       ПоместитьФайл(Адрес, ТекФайл.ПолноеИмя, , Ложь, УникальныйИдентификатор);
       ЗагрузитьФайл(Адрес, ТекФайл.ИмяБезРасширения);
   КонецЦикла;
КонецПроцедуры

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

&НаКлиенте
Процедура КаталогНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
   Если Диалог.Выбрать() Тогда
       Каталог=Диалог.Каталог;
   КонецЕсли;
КонецПроцедуры
11 eeyore
 
18.10.12
21:25
(9),(10) - спасибо за пример кода. У тебя картинка отображается через АдресКартинки. Да если использовать адрес картинки, то все работает. Я просто так и не понял почему не работает если использовать объект Картинка. Это какая-то фитча 1с. В общем надо отображать через адрес.
12 Wobland
 
18.10.12
21:32
(11) есть клиент, есть сервер. сервер не видит то, что у тебя на диске С. поэтому картинка в виде бинарных данных передаётся с клиента на сервер через временное хранилище. вот для этого и адрес. вкратце так..