Как вывести картинки в отчете на СКД?
Простая, казалось бы, задача - сделать средствами СКД отчет с двумя колонками: "Номенклатура" и ее "Изображение". Давайте попробуем это реализовать.
Создадим новый отчет.
Набор данных типа запрос.
Сделаем настройки схемы компоновки.
Отчет будет выглядить вот так.
Как же теперь вывести картинки? Алгоритм примерно следующий. Перехватим обработчки ПриКомпоновкеРезультата(), последовательно пробежимся по всем ячейкам табличного документа и выведем вместо ХранилицеЗначения соответствующую картинку.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Для ТекущаяСтрока = 1 По ДокументРезультат.ВысотаТаблицы Цикл
Для ТекущаяКолонка = 1 По ДокументРезультат.ШиринаТаблицы Цикл
ТекущаяОбласть = ДокументРезультат.Область(ТекущаяСтрока, ТекущаяКолонка);
ТекущаяРасшифровка = ТекущаяОбласть.Расшифровка;
Если ТипЗнч(ТекущаяРасшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(ТекущаяРасшифровка).ПолучитьПоля();
ПолеКартинки = ПоляРасшифровки.Найти("Картинка");
Если ТипЗнч(ПолеКартинки) = Тип("ЗначениеПоляРасшифровкиКомпоновкиДанных") Тогда
ФайлКартинки = ПолеКартинки.Значение;
Если ТипЗнч(ФайлКартинки) = Тип("ХранилищеЗначения") Тогда
КартинкаВДокументе = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
КартинкаВДокументе.Картинка = Новый Картинка(ФайлКартинки.Получить());
КартинкаВДокументе.РазмерКартинки = РазмерКартинки.Пропорционально;
КартинкаВДокументе.Расположить(ТекущаяОбласть);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Теперь отчет формируется вот так. Задача решена.
1 | НоменклатураСКартинками.erf |
Комментарии
Спасибо! Получилось.
Спасибо! Получилось.
Спасибо большое, столько
Спасибо большое, столько информации перерыто...По вашей инструкции получилось!
А у меня не получилось. В
А у меня не получилось. В расшифровке поля фотография нет хранилища значения. В отчет фотография выводится как ХранилищеЗначения, а в отладке ПолеКартинки.Значение
- null. И расшифровать по нему в принципе нельзя, если два раза ткнуть в поле отчета, меня Расшифровка серое. 1С:Предприятие 8.3 (8.3.15.1700).
Пример из статьи у вас тоже
Пример из статьи у вас тоже не работает?
У Вас в настройках СКД в
У Вас в настройках СКД в наборах данных скорей всего указан тип значения. Удалите его.
Такая же фигня. Решили?
Такая же фигня. Решили?
Спасибо. Очень помогло :)
Спасибо. Очень помогло :)
Добавить комментарий