Не получается сохранить данные в реквизите регистра сведений полученные из временного хранилища

1. IrinaBasova 17.01.19 05:43 Сейчас в теме
Добрый день. информационная база на упр. прил. В реквизит с типом хранилище значение помещается картинка из временного хранилища и при повторном открытии она очищается.
&НаСервере
Процедура Перед3аписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	Если ЭтоАдресВременногоХранилища(Картинка) Тогда
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(Картинка); 
		ЗаписьРегистра = РегистрыСведений.Изображения.СоздатьМенеджерЗаписи();
		ЗаписьРегистра.Объект = Объект.СправочникСсылка.ФизическиеЛица;
		ЗаписьРегистра.Изображение =ДвоичныеДанные;      
		ЗаписьРегистра.Записать();          
	КонецЕсли;	
//Если ЭтоАдресВременногоХранилища(Картинка) Тогда
// ТекущийОбъект.Изображение = Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(Картинка) );
//КонецЕсли; 
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. IrinaBasova 17.01.19 05:58 Сейчас в теме
точнее так
ЗаписьРегистра.Изображение = Новый ХранилищеЗначения(ДвоичныеДанные);  
3. SedovSU@mail.ru 297 17.01.19 06:22 Сейчас в теме
(2) У вас до сих пор не получается? Если нет то проверьте у вас тип значения ЗаписьРегистра.Изображение имеет тип ХранилищеЗначений. Это поле реквизит? или измерение? у измерений нельзя тип установить тип хранилищезначения
4. IrinaBasova 17.01.19 07:02 Сейчас в теме
(3)у нас в обычном приложении так было, это ихмерение
5. kumi2012 103 17.01.19 07:12 Сейчас в теме
(4) В вашей процедуре Картинка - это реквизит формы, объекта или общ.перем.?
6. IrinaBasova 17.01.19 08:55 Сейчас в теме
7. SedovSU@mail.ru 297 17.01.19 09:06 Сейчас в теме
(6) Должен быть реквизит самого регистра сведений. Когда смотрите структуру регистра у вас в разделе (где измерения, ресурсы, реквизиты) реквизиты он есть? Есть реквизит "Изображение"
8. IrinaBasova 17.01.19 09:08 Сейчас в теме
10. SedovSU@mail.ru 297 17.01.19 09:15 Сейчас в теме
(8) и тип значения у него "ХранилищеЗначений"
11. IrinaBasova 17.01.19 09:16 Сейчас в теме
14. SedovSU@mail.ru 297 17.01.19 09:32 Сейчас в теме
(11) Во первых вам нужно разместить поле Картинки, оно у вас есть.
Нужно написать код по отображению вашей картинки, писать ТекущийОбъект.Изображение = Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(Картинка) не верно, ввиду того что вы получаете из хранилища тип двоичныеданные.

Вообщем размещаете поле/декорацию Картинка и пишите код или что то похожее на см. ниже

Объект2 = РеквизитФормыВЗначение("Объект");
	
ДвоичныеДанные = Объект2.Изображение.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
      ИмяФайла = "C:\.........картинка.bmp";
	ДвоичныеДанные.Записать(ИмяФайла);
	Элементы.ПолеКартинки.Картинка = Новый Картинка(ИмяФайла);
КонецЕсли;
16. SedovSU@mail.ru 297 17.01.19 09:38 Сейчас в теме
(14)
(13)

Или можно вот так. вместо вашего закоментированного поля. Добавили элемент на форму "ПолеКартинки" - это декарация

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

// отобразим картинку
Если ТипЗнч(ДвоичныеДанные") = Тип("ДвоичныеДанные") Тогда
ИмяФайла = "c:\.......картника.bmp"
ДвоичныеДанные.Записать(ИмяФайла);
Элементы.ПолеКартинки.Картинка = Новый Картинка(ИмяФайла);
Конецесли
17. IrinaBasova 17.01.19 11:10 Сейчас в теме
(16)т.е. вместо реквизиа формы картинка добавить декорацию?
18. SedovSU@mail.ru 297 17.01.19 11:14 Сейчас в теме
(17) В том примере который я описал - именно так. У меня есть реквизит объекта/записи "Изображение" в нем храниться двоичные данные. А для отражения этих двоичных данных я просто разместил декорацию "ПолеКартинки". Далее при открытии или при записи или при другом каком то событии я беру данные которые были помещены в Изображение, далее сохраняю их в какой то файл, далее в поле картинки отображаю сохраненную картинку
19. IrinaBasova 17.01.19 12:01 Сейчас в теме
(18)


Это весь код который сейчас есть, чето не получается ничего .Картинка в декорации не отображается. Может в хранилище ничего нет.....


&НаКлиенте
Процедура ВыбратьФайлКартинки (Команда)
	Оповещение  =  Новый ОписаниеОповещения("ОбработатьВыборФайла",   ЭтотОбъект);
//Открываем интерактивно  окно для выбора файла
НачатьПомещениеФайла(Оповещение,   ,   ,   Истина,   УникальныйИдентификатор);
КонецПроцедуры

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

&НаСервере
Процедура Перед3аписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	
	
	
	
	Если ЭтоАдресВременногоХранилища(Картинка) Тогда
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(Картинка); 
		ЗаписьРегистра = РегистрыСведений.Изображения.СоздатьМенеджерЗаписи();
		ЗаписьРегистра.Объект = Объект.СправочникСсылка.ФизическиеЛица;
		ЗаписьРегистра.Изображение = Новый ХранилищеЗначения(ДвоичныеДанные);      
		ЗаписьРегистра.Записать();          
	КонецЕсли;
		
Объект2 = РеквизитФормыВЗначение("Объект");
    
ДвоичныеДанные = Объект2.Изображение.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
      ИмяФайла = "C:\tmp_fail.jpg";
    ДвоичныеДанные.Записать(ИмяФайла);
    Элементы.Декорация1.Картинка = Новый Картинка(ИмяФайла);
КонецЕсли;
	
	//Если ЭтоАдресВременногоХранилища(Картинка) Тогда
// ТекущийОбъект.Изображение = Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(Картинка) );
//КонецЕсли; 
КонецПроцедуры
Показать
20. SedovSU@mail.ru 297 17.01.19 13:45 Сейчас в теме
12. SedovSU@mail.ru 297 17.01.19 09:18 Сейчас в теме
(8) а какой код у вас написан чтобы при открытии показалась картинка. Что то похожее как написано ниже, как у вас в коде который закоментриован

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

Если да то чуть чуть не верно написано
13. IrinaBasova 17.01.19 09:25 Сейчас в теме
(12)картинка открывается и показывается в реквизите, как ее в дальнейшем при открытии сохранить?
15. SedovSU@mail.ru 297 17.01.19 09:33 Сейчас в теме
(13) вот что то похожее на это

Объект2 = РеквизитФормыВЗначение("Объект");
    
ДвоичныеДанные = Объект2.Изображение.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
      ИмяФайла = "C:\.........картинка.bmp";
    ДвоичныеДанные.Записать(ИмяФайла);
    Элементы.ПолеКартинки.Картинка = Новый Картинка(ИмяФайла);
КонецЕсли;


Сохранение самой картинки у вас верно. Не верно у вас отображается она
9. IrinaBasova 17.01.19 09:09 Сейчас в теме
вообщем так. как было в 1.0

Процедура ОсновныеДействияФормыДействие(Кнопка)
// Вставить содержимое обработчика.

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл с изображением";
Диалог.ПолноеИмяФайла = "";
Диалог.ПредварительныйПросмотр = Истина;
Диалог.Фильтр = "Все картинки (*.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|"; // картинки
Если Диалог.Выбрать() Тогда ВыбранноеФото = Новый Картинка(Диалог.ПолноеИмяФайла,Ложь);
ЭлементыФормы.Картинка.Картинка = ВыбранноеФото;
РегистрСведенийМенеджерЗаписи.Изображение = Новый ХранилищеЗначения(ВыбранноеФото);
КонецЕсли;



КонецПроцедуры

Процедура ПриОткрытии()
// Вставить содержимое обработчика.
Картинка = РегистрСведенийМенеджерЗаписи.Изображение.Получить();
Если Картинка <> Неопределено Тогда
ЭлементыФормы.Картинка.Картинка = Картинка;
КонецЕсли;
КонецПроцедуры
21. meriferi 17.01.19 18:54 Сейчас в теме
Отладчик что говорит?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот