Как сохранить картинку из URL и вывести ее на форму в 1С

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При разработке интеграций с внешними API часто возникает задача получения и отображения изображений, например, QR-кодов для оплаты. В этой статье мы разберем, как правильно работать с такими ссылками, чтобы изображение корректно отображалось на форме с нужными размерами.

Вариант 1: Управление отображением через поле HTML-документа

Если вам не требуется сохранять файл на диск, а нужно лишь корректно вывести его на экран, самым быстрым способом будет настройка ПолеHTMLДокумента. Вместо того чтобы просто переходить по ссылке, мы можем сформировать HTML-код, который принудительно задаст размеры изображения.

Разберем по шагам, как это реализовать:

  1. Создайте ПолеHTMLДокумента на форме.
  2. В коде 1С сформируйте строку HTML, вставив ваш URL в тег img.
  3. Используйте стили CSS для управления размером.

// Пример формирования HTML-кода для корректного отображения
Размер = "300px";
HTMLКод = "<html><body><img src='" + qrUrl + "' width='" + Размер + "' height='" + Размер + "'></body></html>";
ЭлементыФормы.ПолеHTMLДокумента.УстановитьТекст(HTMLКод);

Этот метод позволяет вам не беспокоиться о загрузке файлов, а просто передать браузерному движку 1С параметры отображения картинки.

Вариант 2: Программное получение изображения через HTTP-запрос

В случае, если картинку необходимо сохранить в базу или использовать в печатной форме, мы будем работать с HTTPСоединение. Важно помнить, что если ссылка содержит HTTPS, необходимо использовать защищенное соединение.

Рассмотрим подробно процесс получения данных:

  1. Инициализируем соединение с сервером.
  2. Выполняем HTTPЗапрос для получения двоичных данных.
  3. Преобразуем полученный результат в объект Картинка.

// Настройка безопасного соединения
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
HTTPСоединение = Новый HTTPСоединение("test.ecom.raiffeisen.ru", 443, , , , , ЗащищенноеСоединение, Ложь);

// Выполнение запроса
HTTPЗапрос = Новый HTTPЗапрос("/api/sbp/v1/qr/ADCBAF0740A44D3DBB09CD409177EFA2/image");
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);

// Получение данных и создание объекта Картинка
Если HTTPОтвет.КодСостояния = 200 Тогда
    ДвоичныеДанныеКартинки = HTTPОтвет.ПолучитьТелоКакДвоичныеДанные();
    КартинкаНаФорме = Новый Картинка(ДвоичныеДанныеКартинки);
    ЭлементыФормы.ПолеКартинкиНаФорме.Картинка = КартинкаНаФорме;
КонецЕсли;

Важно обратить внимание на то, что объект HTTPСоединение требует указания порта (для HTTPS это 443) и объекта ЗащищенноеСоединениеOpenSSL. Без этих параметров платформа 1С может блокировать соединение из соображений безопасности.

Важные рекомендации при работе с изображениями

Чтобы ваша программа работала стабильно, проанализируем несколько моментов:

Используя объект Картинка, созданный из ДвоичныеДанные, вы получаете полноценный объект 1С, который можно выводить на обычные формы, использовать в табличных документах или сохранять в файлы стандартным методом Записать().

← На главную