Загрузить изображение в форму на управляемом приложении
Добрый день!
Только начинаю разбираться с управляемыми формами.
По этому, прошу помочь в решении вопроса.
На управляемой форме создан реквизит "ПолеКартинки1" тип : "строка", вид : "поле картинки"
Необходимо загрузить полученную картинку в "ПолеКартинки1". Процедура с сайта забирает данные изображения и помещает во временно хранилище.
А вот при попытке подгрузить в поле ругается:
Пишу следующую процедуру:
Только начинаю разбираться с управляемыми формами.
По этому, прошу помочь в решении вопроса.
На управляемой форме создан реквизит "ПолеКартинки1" тип : "строка", вид : "поле картинки"
Необходимо загрузить полученную картинку в "ПолеКартинки1". Процедура с сайта забирает данные изображения и помещает во временно хранилище.
А вот при попытке подгрузить в поле ругается:
{ВнешняяОбработка.ПРОВЕРКАТТН.Форма.ПРОВЕРКАТТН.Форма(56)}: Поле объекта недоступно для записи (ПолеКартинки1)
Элементы.ПолеКартинки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 = Новый Картинка(ИмяВР);
// Сообщить(ИмяВР);
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Обработка для замены ссылок (дублей) без перепроведения в "1С:Предприятие 8" для любых конфигураций (обычное приложение)
- Загрузка изображений (картинок) из EXCEL в 1С 8.3
- Решение задач на Управляемые формы из Сборника задач для подготовки к экзамену 1С:Специалист по платформе
- Разработка настольного приложения для автоматизации учета на 1С: Предприятие 8.3 (Версия: 01.12)
- Красивый и адаптивный дизайн мобильного приложения
Найденные решения
напр
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбновитьИзображение();
КонецПроцедуры
&НаСервере
Процедура ОбновитьИзображение()
// Конвертируем объект формы в объект справочника, чтобы
//можно было работать с реквизитом типа "Хранилище значений"
ОбъектЭлемента = РеквизитФормыВЗначение("Объект");
// Помещаем двоичные данные из реквизита во временное хранилище.
//Адрес из хранилища помещаем в строковой реквизит
// формы "Фото сотрудника"
ФотоСотрудника = ПоместитьВоВременноеХранилище(ОбъектЭлемента.Фото.Получить(),
УникальныйИдентификатор);
КонецПроцедуры
Показать
Спасибо всем за советы, все получилось!
&НаКлиенте
Процедура ПолучитьКартинкуНажатие(Команда)
АдресПроверки = "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 = ПоместитьВоВременноеХранилище(Картинка, Новый УникальныйИдентификатор);
КонецПроцедуры
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
напр
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбновитьИзображение();
КонецПроцедуры
&НаСервере
Процедура ОбновитьИзображение()
// Конвертируем объект формы в объект справочника, чтобы
//можно было работать с реквизитом типа "Хранилище значений"
ОбъектЭлемента = РеквизитФормыВЗначение("Объект");
// Помещаем двоичные данные из реквизита во временное хранилище.
//Адрес из хранилища помещаем в строковой реквизит
// формы "Фото сотрудника"
ФотоСотрудника = ПоместитьВоВременноеХранилище(ОбъектЭлемента.Фото.Получить(),
УникальныйИдентификатор);
КонецПроцедуры
Показать
Спасибо всем за советы, все получилось!
&НаКлиенте
Процедура ПолучитьКартинкуНажатие(Команда)
АдресПроверки = "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С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)