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

Сохранение изображение в базу данных 1с 8.2 управляемое приложение

Автор beztrud, 15 дек 2011, 13:52

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

beztrud

Здравствуйте! Есть в документе 2 реквизита ВыборФайла - строка неограниченной длины и ОтсканированноеИзображение - строка неограниченной длины (на форме она выглядит как ПолеКартинки). Нужно чтобы при выборе изображения картинка появлялась в документе ну и сохранялась в базе данных. Вот мой код, которым я вставляю путь в реквизит ВыборФайла

&НаКлиенте
Процедура ЗагрузитьФотоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл с фотографией";
Диалог.ПолноеИмяФайла = "";
Диалог.ПредварительныйПросмотр = Истина;
Диалог.Фильтр =
"Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|"
+ "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат TIFF (*.tif)|*.tif|"
+ "Формат GIF (*.gif)|*.gif|"
+ "Формат PNG (*.png)|*.png|"
+ "Формат icon (*.ico)|*.ico|"
+ "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|";
Если Диалог.Выбрать() Тогда
    ВыбранноеФото = Новый Картинка(Диалог.ПолноеИмяФайла,Ложь);
Объект.ЗагрузитьФото = Диалог.ПолноеИмяФайла;
Иначе
    Отказ = Истина;
    Возврат;
КонецЕсли;
КонецПроцедуры


А вот что делать дальше - не знаю. В управляемом приложении я должен еще что-то записать
&НаСервере

Что- конечно не знаю. Прошу Вашей помощи.

Vit1501

посмотри книгу М.Радченко "Практическое пособие разработчика" там есть небольшая глава с примером.

beztrud

Цитата: Vit1501 от 15 дек 2011, 14:03
посмотри книгу М.Радченко "Практическое пособие разработчика" там есть небольшая глава с примером.

Странно, но в этой книге я не нашел примеры работы с изображениями

Vit1501

Извиняюсь книга Хрусталевой "Разработка управляемого интерфейса", стр 547 глава 3,18

beztrud

Получилось открыть и видеть изображение, но так и не удалось его сохранить (не отображается). Ошибок не выдает, но и не выводит. Где ошибка?

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

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

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

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


beztrud

По примеру Хрусталевой все получается в справочнике, а в документе не удается.

Vit1501

хм.... по функционалу и поведению справочник и документ практически не отличаются. Есть конечно индивидуальные методы и свойства, но к данному примеру они отношения не имеют. Вывод - где то есть различия в коде или реквизитах. Сравни еще раз все что сделал в документе и в справочнике. Ошибки выдает?

Dethmontt

ТекущийОбъект.Файл = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
//Нужно сделать реквизит Объекта с типом "ХранилищеЗначения" и туда сохранять значение, а не в строку!!!
//Нужно писать в ТекукщийОбъект, т.к. объект это структура формы!
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск