Добрый день. информационная база на упр. прил. В реквизит с типом хранилище значение помещается картинка из временного хранилища и при повторном открытии она очищается.
&НаСервере
Процедура Перед3аписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(Картинка) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Картинка);
ЗаписьРегистра = РегистрыСведений.Изображения.СоздатьМенеджерЗаписи();
ЗаписьРегистра.Объект = Объект.СправочникСсылка.ФизическиеЛица;
ЗаписьРегистра.Изображение =ДвоичныеДанные;
ЗаписьРегистра.Записать();
КонецЕсли;
//Если ЭтоАдресВременногоХранилища(Картинка) Тогда
// ТекущийОбъект.Изображение = Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(Картинка) );
//КонецЕсли;
КонецПроцедуры
3.
SedovSU@mail.ru
29717.01.19 06:22 Сейчас в теме
(2) У вас до сих пор не получается? Если нет то проверьте у вас тип значения ЗаписьРегистра.Изображение имеет тип ХранилищеЗначений. Это поле реквизит? или измерение? у измерений нельзя тип установить тип хранилищезначения
7.
SedovSU@mail.ru
29717.01.19 09:06 Сейчас в теме
(6) Должен быть реквизит самого регистра сведений. Когда смотрите структуру регистра у вас в разделе (где измерения, ресурсы, реквизиты) реквизиты он есть? Есть реквизит "Изображение"
14.
SedovSU@mail.ru
29717.01.19 09:32 Сейчас в теме
(11) Во первых вам нужно разместить поле Картинки, оно у вас есть.
Нужно написать код по отображению вашей картинки, писать ТекущийОбъект.Изображение = Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(Картинка) не верно, ввиду того что вы получаете из хранилища тип двоичныеданные.
Вообщем размещаете поле/декорацию Картинка и пишите код или что то похожее на см. ниже
Объект2 = РеквизитФормыВЗначение("Объект");
ДвоичныеДанные = Объект2.Изображение.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
ИмяФайла = "C:\.........картинка.bmp";
ДвоичныеДанные.Записать(ИмяФайла);
Элементы.ПолеКартинки.Картинка = Новый Картинка(ИмяФайла);
КонецЕсли;
18.
SedovSU@mail.ru
29717.01.19 11:14 Сейчас в теме
(17) В том примере который я описал - именно так. У меня есть реквизит объекта/записи "Изображение" в нем храниться двоичные данные. А для отражения этих двоичных данных я просто разместил декорацию "ПолеКартинки". Далее при открытии или при записи или при другом каком то событии я беру данные которые были помещены в Изображение, далее сохраняю их в какой то файл, далее в поле картинки отображаю сохраненную картинку
(18)
Это весь код который сейчас есть, чето не получается ничего .Картинка в декорации не отображается. Может в хранилище ничего нет.....
&НаКлиенте
Процедура ВыбратьФайлКартинки (Команда)
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);
//Открываем интерактивно окно для выбора файла
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
Картинка = Адрес;
КонецПроцедуры
&НаСервере
Процедура Перед3аписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(Картинка) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Картинка);
ЗаписьРегистра = РегистрыСведений.Изображения.СоздатьМенеджерЗаписи();
ЗаписьРегистра.Объект = Объект.СправочникСсылка.ФизическиеЛица;
ЗаписьРегистра.Изображение = Новый ХранилищеЗначения(ДвоичныеДанные);
ЗаписьРегистра.Записать();
КонецЕсли;
Объект2 = РеквизитФормыВЗначение("Объект");
ДвоичныеДанные = Объект2.Изображение.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
ИмяФайла = "C:\tmp_fail.jpg";
ДвоичныеДанные.Записать(ИмяФайла);
Элементы.Декорация1.Картинка = Новый Картинка(ИмяФайла);
КонецЕсли;
//Если ЭтоАдресВременногоХранилища(Картинка) Тогда
// ТекущийОбъект.Изображение = Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(Картинка) );
//КонецЕсли;
КонецПроцедуры