...и, знаете, они правы: это и просто, и недолго, если делать с помощью одной смекалки и деатомизаторов седьмой серии.
Но, опишу метод подробнее. Прикрепляем к нашей форме макет HTML документа. Прописываем метод, на вход которого подаем массив http-ссылок на картинки: {id1: ref1, id2: ref2, …}
Картинки могут быть где угодно: хоть на сайте infostart. Этот метод добавит все картинки в body с id-ами из нашего списка.
Прописываем другой метод, который получает двоичные данные этих картинок в base64 в таком же объекте: {id1: data1, id2: data2, …}. Расшифровываем и кидаем уже в 1С эти двоичные данные в хранилища или сразу создаем объект Картинка на их основании:
ДанныеКартинки = Base64Значение(ДанныеКартинки);
Область.Рисунки.ОбластьКартинки.Картинка = Новый Картинка(ДанныеКартинки);
Радуемся радости клиента!
В прикрепленной обработке все это сделал. Введите в текстовое поле список ссылок на картинки через запятую. Нажмите «Получить». Сформируется табличный документ, в строках которого будут наши картинки. Хотите – в прайс-лист, хотите – в прикрепленные файлы к товарам. Ну а если применить данный метод к сайту знакомств…
Для особо одаренных создал несколько отдельных метода для интеграции картинок к себе в конфигурацию. Делаем так:
1. Загружаем мою обработку к себе в конфигурацию, называем, например, СкачиваниеКартинок
2. В форме, где хотим формировать что-то с картинками по внешним ссылкам, создаем реквизит формы ДанныеКартинок. Тип - ТаблицаЗначений. Колонки: Инд - Число, Данные - Строка, СсылкаНаКартинку - Строка.
3. В модуле этой формы размещаем следующий код (не забываем подключить к форме обработчик оповещений)
&НаКлиенте
Перем ФормаЗагрузки;
&НаКлиенте
Процедура ФормированиеКартинокКлиент(МассивURL)
ФормаЗагрузки = ПолучитьФорму("Обработка.СкачиваниеКартинок.Форма");
ФормаЗагрузки.ЗагрузитьДанные(МассивURL);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьКартинкиВТаблицу(СтрокаJSON)
Жека = Новый ЧтениеJSON;
Жека.УстановитьСтроку(СтрокаJSON);
МасСтрок = ПрочитатьJSON(Жека);
ДанныеКартинок.Очистить();
Для К = 0 По МасСтрок.ВГраница() Цикл
Нов = ДанныеКартинок.Добавить();
Для Каждого КлЗн Из МасСтрок[К] Цикл
Нов[КлЗн.Ключ] = КлЗн.Значение;
КонецЦикла;
КонецЦикла;
Жека = Неопределено;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "КартинкиЗагружены" Тогда
СтрокаJSON = ФормаЗагрузки.ПолучитьJSON();
ЗагрузитьКартинкиВТаблицу(СтрокаJSON);
ФормаЗагрузки.Закрыть();
ФормаЗагрузки = Неопределено;
//ФормированиеПрайсЛиста(); // здесь можно вызывать построение табличного документа
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьКартинкуПоИндексу(Инд)
Оть = Новый Структура;
Оть.Вставить("Инд", Инд);
Строки = ДанныеКартинок.НайтиСтроки(Оть);
Если Строки.Количество() > 0 Тогда
ДанныеКартинки = Строки[0].Данные;
Возврат Base64Значение(ДанныеКартинки);
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаСервере
Функция ПолучитьКартинкуПоСсылке(СсылкаНаКартинку)
Оть = Новый Структура;
Оть.Вставить("СсылкаНаКартинку", СсылкаНаКартинку);
Строки = ДанныеКартинок.НайтиСтроки(Оть);
Если Строки.Количество() > 0 Тогда
ДанныеКартинки = Строки[0].Данные;
Возврат Base64Значение(ДанныеКартинки);
КонецЕсли;
Возврат Неопределено;
КонецФункции
4. Начинаем (например, после нажатия кнопки "Сформировать") с того, что готовим массив ссылок на картинки и запускаем процедуру ФормированиеКартинокКлиент(НашМассив)
5. Если нужно продолжить что-то делать после загрузки картинок, например, сформировать табличный документ, создаем процедуру для этого и подставляем ее вызов соответственно комментарию в ОбработкаОповещения.
6. При формировании своего табличного документа или чего-то там еще, когда надо получить картинку используем функцию: ПолучитьКартинкуПоСсылке(СсылкаНаКартинку) или ПолучитьКартинкуПоИндексу(Инд). Эти функции возвратат двоичные данные картинки или Неопределено.
7. Создаем картинку на основании двоичных данных и записываем, куда хотим.
ДанныеКартинки = ПолучитьКартинкуПоСсылке(СсылкаНаКартинку);
Если НЕ ДанныеКартинки = Неопределено Тогда
Картинка = Новый Картинка(ДанныеКартинки);
КонецЕсли;
Работает на любой конфе с управляемыми формами.
Пользуйтесь!
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.23.59
Вступайте в нашу телеграмм-группу Инфостарт