Имя: Пароль:
1C
1С v8
Загрузка картинки на форму
0 Julia_S12
 
03.04.13
05:28
Добрый день! Подскажите, как мне загрзуить картинку на форму, чтоб в дальнейшем её можно было открывать и просматривать. по коду Картинка помещается во временное хранилище, и потом исчезает
&НаКлиенте
Процедура ЗагрузитьФотографию(Команда)
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выбор файла картинки";
   Диалог.ПредварительныйПросмотр = Истина;
   Диалог.Фильтр = "Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)"
   + "|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|";
   Если Диалог.Выбрать() Тогда
       ИмяФайла = Диалог.ПолноеИмяФайла;
       Картинка = Новый ДвоичныеДанные(ИмяФайла);
       //Запись данных в реквизит формы
       Данные = Картинка;
       //Помещение во временное хранилище и возврат адреса
      Резюме = ПоместитьВоВременноеХранилище(Картинка);
       Модифицированность = Истина;
   КонецЕсли;
КонецПроцедуры

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



   

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

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

&НаКлиенте
Процедура ФотоПриИзменении(Элемент)
   АдресКартинки=ПолучитьНавигационнуюСсылку(Элемент.ТекущиеДанные.Фотография, "Фото");
КонецПроцедуры
2 Wobland
 
03.04.13
06:17
или даже так:

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

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

&НаКлиенте
Процедура Загрузить(Команда)
   Перем Адрес;
   
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.МножественныйВыбор=Ложь;
   Диалог.Фильтр=ПолучитьФильтрИзображений();
   Если Диалог.Выбрать() Тогда
       ПоместитьФайл(Адрес, Диалог.ПолноеИмяФайла, , Ложь, УникальныйИдентификатор);
       АдресКартинки=Адрес;
       Если ПустаяСтрока(Объект.Наименование) Тогда
           ф=Новый Файл(Диалог.ПолноеИмяФайла);
           Объект.Наименование=ф.ИмяБезРасширения;
       КонецЕсли;
       Модифицированность=Истина;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Сохранить(Команда)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Фильтр=ПолучитьФильтрИзображений();
   Если Диалог.Выбрать() Тогда
       ТекущаяКартинка=Новый Картинка(ПолучитьИзВременногоХранилища(АдресКартинки));
       ТекущаяКартинка.Записать(Диалог.ПолноеИмяФайла);
   КонецЕсли;
КонецПроцедуры
     
&НаКлиенте
Процедура ПолеФотоНажатие(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка=Ложь;
   Загрузить(NULL);
КонецПроцедуры
3 Julia_S12
 
03.04.13
09:57
Сейчас попробую, спасибо))
4 Julia_S12
 
04.04.13
05:43
Диалог.Фильтр=ПолучитьФильтрИзображений();
Что это за строчка?? у меня ругается на нее
5 Julia_S12
 
04.04.13
05:53
так..разобралась. Только немножко не то. Как мне сделать, чтоб при загрузке картинки она сохранялась где ниб (в базе или на сервере), и потом можно было открыть эту картинку в стандартных средствах просмотра (чтоб можно было распечатать)
6 Wobland
 
04.04.13
05:57
(5) ПередЗаписьюНаСервере как раз производит запись куда-нибудь в базу
7 Wobland
 
04.04.13
05:58
(6) точнее, присваивает реквизит, а записывается элемент справочника уже без меня
8 Julia_S12
 
04.04.13
06:00
а как тогда эту картинку можно потом будет открыть?
9 Wobland
 
04.04.13
06:03
(8) ПриСозданииНаСервере добывает адрес картинки. а на форме строковый реквизит и поле типа картинка
10 Julia_S12
 
04.04.13
06:05
у меня ничего не делает
11 Wobland
 
04.04.13
06:07
вот она получается из ВХ: ТекущаяКартинка=Новый Картинка(ПолучитьИзВременногоХранилища(АдресКартинки));

я тебе дал рабочий код. ничо не знаю
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.