Запись и получение изображения

Новая тема
Показывать по 10 20 40 сообщений
"Добрый день. Есть справочник с Реквизитом Фото (тип Хранилище значения) Нужно записать туда значение. На форме  добавлено Поле АдресФото (картинка) тип строка. Подскажите правильно ли я записываю изображение?


&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = """";
Текст = "ru = """"Изображение PNG""""; en = """"PNG Image""""";
Фильтр = НСтр(Текст)+"(*.png)|*.png";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл...";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Если ИзображениеФото <> Неопределено Тогда
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

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



Теперь пытаюсь прочитать, но не работает


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



Подскажите, пожалуйста, как корректно записать изображение и прочитать его?"
"Записывайте в хранилище двоичные данные.
Что-то типа этого:
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Фото = Новый ХранилищеЗначения (ИзображениеФото.ПолучитьДвоичныеДанные());

А читаете правильно:
ИзображениеФото = Новый Картинка(ТекущийОбъект.Фото.Получить());

Вопрос вызывает только строки: АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото);
Я не понял что этим пытаетесь сделать. Обычно на форму помещают поле картинка и в него выводиться картинка."
"В 8.2 Нет поля типа "Каринка". Используется текстовое поле в котором я храню ссылку, а отображается на форме она как картинка (ВИД:Картинка), так вот АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото); помещает в АдресФото ссылку по которому отображается изображение после выбора - этот момент работает.

Сделал через ПолучитьДвоичныеДанные()  но все равно как то не отображается. Как проверить вообще картинка записалась или нет?"
Я так понимаю вы под управляемые формы пишите?
В таком случае, согласно увиденному в УТ, надо сохранить из Хранилища в файл и подсунуть путь этому полю.
Правда вникать во весь алгоритм я не стал - там такое наворочено...
"Блин не пойму что за тупость... Данные = ПолучитьИзВременногоХранилища(АдресФото); 3-4-5 раз выдает Неопределено, а временами нормально возвращает двоичные данные. при этом в коде ничего не меняется и файл выбирается один и тот же...."
"В общем такая конструкция работает:


&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = """";
Текст = "Изображение PNG";
Фильтр = НСтр(Текст)+"(*.png)|*.png";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл...";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Если ИзображениеФото <> Неопределено Тогда
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото.ПолучитьДвоичныеДанные());
КонецЕсли;
КонецЕсли;
КонецПроцедуры

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



&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ИзображениеФото = ТекущийОбъект.Фото.Получить();
АдресФото = ПоместитьВоВременноеХранилище(ИзображениеФото.ПолучитьДвоичныеДанные());
КонецПроцедуры



Единственно Данные = ПолучитьИзВременногоХранилища(АдресФото); не всегда выдает данные, не могу понять почему."
"Интересно, а так работать будет?

&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = """";
Текст = "Изображение PNG";
Фильтр = НСтр(Текст)+"(*.png)|*.png";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл...";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИзображениеФото = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
Если ИзображениеФото <> Неопределено Тогда
ДвДанные = ИзображениеФото.ПолучитьДвоичныеДанные();  //1
ТекущийОбъект.Фото  = Новый ХранилищеЗначения(ДвДанные); //2
АдресФото = ПоместитьВоВременноеХранилище(ДвДанные);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

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



&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// ИзображениеФото = ТекущийОбъект.Фото.Получить();
АдресФото = ПоместитьВоВременноеХранилище(ТекущийОбъект.Фото.Получить());
КонецПроцедуры


&"
"Выдает ошибку:
{Справочник.Языки.Форма.ФормаЭлемента.Форма(19,34)}: Тип не определен (ХранилищеЗначения) ТекущийОбъект.Иконка  = Новый <

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




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

Подскажите в чем проблема"
Читают тему
(гостей: 1)

Быстрый переход