Запись и получение изображения
Показывать по
10
20
40
сообщений
- 1
- 2
26.05.2011
15:57
#1
"Добрый день. Есть справочник с Реквизитом Фото (тип Хранилище значения) Нужно записать туда значение. На форме добавлено Поле АдресФото (картинка) тип строка. Подскажите правильно ли я записываю изображение?
Теперь пытаюсь прочитать, но не работает
Подскажите, пожалуйста, как корректно записать изображение и прочитать его?"
&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = """";
Текст = "ru = """"Изображение PNG""""; en = """"PNG Image""""";
Фильтр = НСтр(Текст)+"(*.png)|*.png";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл...";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Если ИзображениеФото <> Неопределено Тогда
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.Фото = ПолучитьИзВременногоХранилища(АдресФото);
КонецПроцедуры
Теперь пытаюсь прочитать, но не работает
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ИзображениеФото = Новый Картинка(ТекущийОбъект.Фото.Получить());
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото);
КонецПроцедуры
Подскажите, пожалуйста, как корректно записать изображение и прочитать его?"
26.05.2011
16:21
#2
"Записывайте в хранилище двоичные данные.
Что-то типа этого:
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Фото = Новый ХранилищеЗначения (ИзображениеФото.ПолучитьДвоичныеДанные());
А читаете правильно:
ИзображениеФото = Новый Картинка(ТекущийОбъект.Фото.Получить());
Вопрос вызывает только строки: АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото);
Я не понял что этим пытаетесь сделать. Обычно на форму помещают поле картинка и в него выводиться картинка."
Что-то типа этого:
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Фото = Новый ХранилищеЗначения (ИзображениеФото.ПолучитьДвоичныеДанные());
А читаете правильно:
ИзображениеФото = Новый Картинка(ТекущийОбъект.Фото.Получить());
Вопрос вызывает только строки: АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото);
Я не понял что этим пытаетесь сделать. Обычно на форму помещают поле картинка и в него выводиться картинка."
26.05.2011
16:41
#3
"В 8.2 Нет поля типа "Каринка". Используется текстовое поле в котором я храню ссылку, а отображается на форме она как картинка (ВИД:Картинка), так вот АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото); помещает в АдресФото ссылку по которому отображается изображение после выбора - этот момент работает.
Сделал через ПолучитьДвоичныеДанные() но все равно как то не отображается. Как проверить вообще картинка записалась или нет?"
Сделал через ПолучитьДвоичныеДанные() но все равно как то не отображается. Как проверить вообще картинка записалась или нет?"
26.05.2011
17:02
#4
Я так понимаю вы под управляемые формы пишите?
В таком случае, согласно увиденному в УТ, надо сохранить из Хранилища в файл и подсунуть путь этому полю.
Правда вникать во весь алгоритм я не стал - там такое наворочено...
В таком случае, согласно увиденному в УТ, надо сохранить из Хранилища в файл и подсунуть путь этому полю.
Правда вникать во весь алгоритм я не стал - там такое наворочено...
26.05.2011
17:39
#5
"Блин не пойму что за тупость... Данные = ПолучитьИзВременногоХранилища(АдресФото); 3-4-5 раз выдает Неопределено, а временами нормально возвращает двоичные данные. при этом в коде ничего не меняется и файл выбирается один и тот же...."
26.05.2011
17:44
#6
"В общем такая конструкция работает:
Единственно Данные = ПолучитьИзВременногоХранилища(АдресФото); не всегда выдает данные, не могу понять почему."
&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = """";
Текст = "Изображение PNG";
Фильтр = НСтр(Текст)+"(*.png)|*.png";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл...";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Если ИзображениеФото <> Неопределено Тогда
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото.ПолучитьДвоичныеДанные());
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если АдресФото <> Неопределено Тогда
Данные = ПолучитьИзВременногоХранилища(АдресФото);
ИзображениеФото = Новый Картинка(Данные);
ТекущийОбъект.Фото = Новый ХранилищеЗначения(ИзображениеФото);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ИзображениеФото = ТекущийОбъект.Фото.Получить();
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото.ПолучитьДвоичныеДанные());
КонецПроцедуры
Единственно Данные = ПолучитьИзВременногоХранилища(АдресФото); не всегда выдает данные, не могу понять почему."
26.05.2011
19:04
#7
"Интересно, а так работать будет?
&"
&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = """";
Текст = "Изображение PNG";
Фильтр = НСтр(Текст)+"(*.png)|*.png";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл...";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Если ИзображениеФото <> Неопределено Тогда
ДвДанные = ИзображениеФото.ПолучитьДвоичныеДанные(); //1
ТекущийОбъект.Фото = Новый ХранилищеЗначения(ДвДанные); //2
АдресФото = ПоместитьВоВременноеХранилище(ДвДанные);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//&НаСервере
//Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// Если АдресФото <> Неопределено Тогда
// Данные = ПолучитьИзВременногоХранилища(АдресФото);
// ИзображениеФото = Новый Картинка(Данные);
// ТекущийОбъект.Фото = Новый ХранилищеЗначения(ИзображениеФото);
// КонецЕсли;
//КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// ИзображениеФото = ТекущийОбъект.Фото.Получить();
АдресФото = ПоместитьВоВременноеХранилище(ТекущийОбъект.Фото.Получить());
КонецПроцедуры
&"
26.05.2011
20:10
#8
"Выдает ошибку:
>ХранилищеЗначения(ДвДанные); //2 (Проверка: Тонкий клиент)"
{Справочник.Языки.Форма.ФормаЭлемента.Форма(19,34)}: Тип не определен (ХранилищеЗначения) ТекущийОбъект.Иконка = Новый <>ХранилищеЗначения(ДвДанные); //2 (Проверка: Тонкий клиент)"
26.05.2011
20:19
#10
"
Почему то в этой процедуре при создании нового элемента справочника все проходит нормально, а при сохранении существующего при выполнении ТекущийОбъект.Фото = Новый ХранилищеЗначения(ИзображениеФото); Возвращается пустое значение....
Подскажите в чем проблема"
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если АдресФото <> Неопределено Тогда
Данные = ПолучитьИзВременногоХранилища(АдресИконки);
ИзображениеФото = Новый Картинка(Данные);
ТекущийОбъект.Фото = Новый ХранилищеЗначения(ИзображениеФото);
КонецЕсли;
КонецПроцедуры
Почему то в этой процедуре при создании нового элемента справочника все проходит нормально, а при сохранении существующего при выполнении ТекущийОбъект.Фото = Новый ХранилищеЗначения(ИзображениеФото); Возвращается пустое значение....
Подскажите в чем проблема"
- 1
- 2
Читают тему
(гостей: 1)