Как вывести картинки в отчете на СКД?

10 Jun
Published by Nicholas

Картинки в отчете на СКД

Простая, казалось бы, задача - сделать средствами СКД отчет с двумя колонками: "Номенклатура" и ее "Изображение". Давайте попробуем это реализовать.

Создадим новый отчет.

Номенклатура с картинками

Набор данных типа запрос. 

Запрос к справочнику Номенклатура

Сделаем настройки схемы компоновки. 

Настройки компоновки данных

Отчет будет выглядить вот так. 

Хранилище значения

Как же теперь вывести картинки? Алгоритм примерно следующий. Перехватим обработчки ПриКомпоновкеРезультата(), последовательно пробежимся по всем ячейкам табличного документа и выведем вместо ХранилицеЗначения соответствующую картинку. 

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

   
СтандартнаяОбработка = Ложь;

   
НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();

   
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки, ДанныеРасшифровки);

   
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

   
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   
ПроцессорВывода.Вывести(ПроцессорКомпоновки);


    Для
ТекущаяСтрока = 1 По ДокументРезультат.ВысотаТаблицы Цикл

        Для
ТекущаяКолонка = 1 По ДокументРезультат.ШиринаТаблицы Цикл

           
ТекущаяОбласть = ДокументРезультат.Область(ТекущаяСтрока, ТекущаяКолонка);
           
ТекущаяРасшифровка = ТекущаяОбласть.Расшифровка;

            Если
ТипЗнч(ТекущаяРасшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда

               
ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(ТекущаяРасшифровка).ПолучитьПоля();
               
ПолеКартинки = ПоляРасшифровки.Найти("Картинка");

                Если
ТипЗнч(ПолеКартинки) = Тип("ЗначениеПоляРасшифровкиКомпоновкиДанных") Тогда

                   
ФайлКартинки = ПолеКартинки.Значение;

                    Если
ТипЗнч(ФайлКартинки) = Тип("ХранилищеЗначения") Тогда

                       
КартинкаВДокументе = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                       
КартинкаВДокументе.Картинка = Новый Картинка(ФайлКартинки.Получить());
                       
КартинкаВДокументе.РазмерКартинки = РазмерКартинки.Пропорционально;
                       
КартинкаВДокументе.Расположить(ТекущаяОбласть);

                    КонецЕсли;

                КонецЕсли;

            КонецЕсли;

        КонецЦикла;

    КонецЦикла;

КонецПроцедуры

 

Теперь отчет формируется вот так. Задача решена.

Отчет с картинками

Файлы для скачивания
1НоменклатураСКартинками.erf

Tags 

СКД

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Вы человек или автоматическая спам-рассылка?
Target Image