Загрузить изображение в форму на управляемом приложении

1. апостол 32 24.11.17 08:28 Сейчас в теме
Добрый день!
Только начинаю разбираться с управляемыми формами.
По этому, прошу помочь в решении вопроса.
На управляемой форме создан реквизит "ПолеКартинки1" тип : "строка", вид : "поле картинки"
Необходимо загрузить полученную картинку в "ПолеКартинки1". Процедура с сайта забирает данные изображения и помещает во временно хранилище.
А вот при попытке подгрузить в поле ругается:
{ВнешняяОбработка.ПРОВЕРКАТТН.Форма.ПРОВЕРКАТТН.Форма(56)}: Поле объекта недоступно для записи (ПолеКартинки1)
Элементы.ПолеКартинки1 = Новый Картинка(ИмяВР);


Пишу следующую процедуру:

&НаКлиенте
Процедура ПолучитьКартинкуНажатие(Команда)
	АдресПроверки = "https://check1.fsrar.ru";
	Request = Новый COMObject("WinHttp.WinHttpRequest.5.1");

	Request.Open("GET", АдресПроверки + "/", 0);
	Request.Send();
	
	н1 = Найти(Request.ResponseText, "SampleCaptcha_CaptchaImage");
	н2 = Найти(Request.ResponseText, "alt=""CAPTCHA""");
	строка = Сред(Request.ResponseText, н1, н2-н1);
	н1 = Найти(строка, "src=""");
	строка = Сред(Строка, н1, СтрДлина(строка)-н1);
	строка = Прав(строка, СтрДлина(строка) - СтрДлина("src="""));
	строка = Лев(строка, СтрДлина(строка)-1);
	
	СтрокаПоиска = "BotDetect.Init('SampleCaptcha', '";
	н1 = Найти(Request.ResponseText, СтрокаПоиска);
	КапчаИД = Сред(Request.ResponseText, н1 + СтрДлина(СтрокаПоиска), 32);
	
	Request.Open("GET", АдресПроверки + строка, 0);
	Request.Send();
	
	ИмяВР = ПолучитьИмяВременногоФайла("jpg");
	
	Stream = Новый COMОбъект("ADODB.Stream");
	
	Stream.Type = 1;
	Stream.Mode = 3;
	
	Stream.Open();
	Stream.Write(Request.ResponseBody); 
	Stream.SaveToFile(ИмяВР, 2);
	Stream.Close();
	Stream = Неопределено;
	Элементы.ПолеКартинки1 = Новый Картинка(ИмяВР);
	
	
   // Сообщить(ИмяВР);
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
6. user623969_dusa 24.11.17 10:32 Сейчас в теме
напр
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ОбновитьИзображение();
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьИзображение()
	
	// Конвертируем объект формы в объект справочника, чтобы 
	//можно было работать с реквизитом типа "Хранилище значений"
	ОбъектЭлемента = РеквизитФормыВЗначение("Объект");	
	
	// Помещаем двоичные данные из реквизита во временное хранилище. 
	//Адрес из хранилища помещаем в строковой реквизит
	// формы "Фото сотрудника"
	ФотоСотрудника = ПоместитьВоВременноеХранилище(ОбъектЭлемента.Фото.Получить(), 
												   УникальныйИдентификатор);
	
КонецПроцедуры
Показать
9. апостол 32 24.11.17 20:21 Сейчас в теме
Спасибо всем за советы, все получилось!

&НаКлиенте
Процедура ПолучитьКартинкуНажатие(Команда)
	АдресПроверки = "https://check1.fsrar.ru";
	Request = Новый COMObject("WinHttp.WinHttpRequest.5.1");

	Request.Open("GET", АдресПроверки + "/", 0);
	Request.Send();
	
	н1 = Найти(Request.ResponseText, "SampleCaptcha_CaptchaImage");
	н2 = Найти(Request.ResponseText, "alt=""CAPTCHA""");
	строка = Сред(Request.ResponseText, н1, н2-н1);
	н1 = Найти(строка, "src=""");
	строка = Сред(Строка, н1, СтрДлина(строка)-н1);
	строка = Прав(строка, СтрДлина(строка) - СтрДлина("src="""));
	строка = Лев(строка, СтрДлина(строка)-1);
	
	СтрокаПоиска = "BotDetect.Init('SampleCaptcha', '";
	н1 = Найти(Request.ResponseText, СтрокаПоиска);
	КапчаИД = Сред(Request.ResponseText, н1 + СтрДлина(СтрокаПоиска), 32);
	
	Request.Open("GET", АдресПроверки + строка, 0);
	Request.Send();
	
	ИмяВР = ПолучитьИмяВременногоФайла("jpg");
	
	Stream = Новый COMОбъект("ADODB.Stream");
	
	Stream.Type = 1;
	Stream.Mode = 3;
	
	Stream.Open();
	Stream.Write(Request.ResponseBody); 
	Stream.SaveToFile(ИмяВР, 2);
	Stream.Close();
	Stream = Неопределено;
	ПриСозданииНаСервере(ИмяВР);
	
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(ИмяВР)
 Картинка = Новый ДвоичныеДанные(ИмяВР);    
ПолеКартинки1 = ПоместитьВоВременноеХранилище(Картинка, Новый УникальныйИдентификатор);
    
КонецПроцедуры
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. vnagapov 24.11.17 09:26 Сейчас в теме
У вас элемент формы отображает значение реквизита формы. Элементу формы нельзя присвоить значение.
3. апостол 32 24.11.17 09:31 Сейчас в теме
(2)подскажи пожалуйста, как правильно должно быть
4. vnagapov 24.11.17 10:29 Сейчас в теме
Какая у вас версия платформы?
7. апостол 32 24.11.17 19:29 Сейчас в теме
(4) Платформа: 8.3.10.2252 конфигурация: Розница 2.2
5. user623969_dusa 24.11.17 10:31 Сейчас в теме
в поле присваивать не надо надо в реквизит связанным с полем картинки помещать адрес на временное хранилище где находится картинка
6. user623969_dusa 24.11.17 10:32 Сейчас в теме
напр
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ОбновитьИзображение();
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьИзображение()
	
	// Конвертируем объект формы в объект справочника, чтобы 
	//можно было работать с реквизитом типа "Хранилище значений"
	ОбъектЭлемента = РеквизитФормыВЗначение("Объект");	
	
	// Помещаем двоичные данные из реквизита во временное хранилище. 
	//Адрес из хранилища помещаем в строковой реквизит
	// формы "Фото сотрудника"
	ФотоСотрудника = ПоместитьВоВременноеХранилище(ОбъектЭлемента.Фото.Получить(), 
												   УникальныйИдентификатор);
	
КонецПроцедуры
Показать
8. апостол 32 24.11.17 19:42 Сейчас в теме
(6) Спасибо, буду пробовать
9. апостол 32 24.11.17 20:21 Сейчас в теме
Спасибо всем за советы, все получилось!

&НаКлиенте
Процедура ПолучитьКартинкуНажатие(Команда)
	АдресПроверки = "https://check1.fsrar.ru";
	Request = Новый COMObject("WinHttp.WinHttpRequest.5.1");

	Request.Open("GET", АдресПроверки + "/", 0);
	Request.Send();
	
	н1 = Найти(Request.ResponseText, "SampleCaptcha_CaptchaImage");
	н2 = Найти(Request.ResponseText, "alt=""CAPTCHA""");
	строка = Сред(Request.ResponseText, н1, н2-н1);
	н1 = Найти(строка, "src=""");
	строка = Сред(Строка, н1, СтрДлина(строка)-н1);
	строка = Прав(строка, СтрДлина(строка) - СтрДлина("src="""));
	строка = Лев(строка, СтрДлина(строка)-1);
	
	СтрокаПоиска = "BotDetect.Init('SampleCaptcha', '";
	н1 = Найти(Request.ResponseText, СтрокаПоиска);
	КапчаИД = Сред(Request.ResponseText, н1 + СтрДлина(СтрокаПоиска), 32);
	
	Request.Open("GET", АдресПроверки + строка, 0);
	Request.Send();
	
	ИмяВР = ПолучитьИмяВременногоФайла("jpg");
	
	Stream = Новый COMОбъект("ADODB.Stream");
	
	Stream.Type = 1;
	Stream.Mode = 3;
	
	Stream.Open();
	Stream.Write(Request.ResponseBody); 
	Stream.SaveToFile(ИмяВР, 2);
	Stream.Close();
	Stream = Неопределено;
	ПриСозданииНаСервере(ИмяВР);
	
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(ИмяВР)
 Картинка = Новый ДвоичныеДанные(ИмяВР);    
ПолеКартинки1 = ПоместитьВоВременноеХранилище(Картинка, Новый УникальныйИдентификатор);
    
КонецПроцедуры
Показать
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день