helpf.pro
Регистрация
 +8 
Распечатать

1С 8.x : Вывод картинки в строках отчета на СКД

В этом примере показан метод вывода в строку отчета картинки, вид которой завист от значения другого поля.

Ради примера, в отчет выведем справоник «Банки» - реквизит «Ссылка» и картинку возле этого реквизита. Вид картинки зависит от значения реквизита «ЭтоГруппа»

Создаем новый отчет - Основная схема компоновки данных:
title
В Вычисляемые поля добавлено поле «ПолеКартинка». В выражение добавлено значение «%Картинка%», поэтому выражению будем искать область ячеек куда необходимо вставить нашу картинку:
title
В это поле будет выводится картинка.

В настройках указываем:
title

В модуле объекта пишем код:
Код 1C v 8.х
  Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;

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

ПолеПоКоторомуНеобходимоПолучитьЗначение = "Ссылка";
ПроцессорВывода.НачатьВывод();
Пока истина Цикл
ЭлементРезультата = ПроцессорКомпоновки.Следующий();

Если ЭлементРезультата = Неопределено Тогда
прервать;
КонецЕсли;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
ЗначениеВыводимыхДанных = Неопределено;
Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл
Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля();
Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл
Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда
Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
Индекс = ДокументРезультат.Рисунки.Индекс(Рис);
Если ЗначениеВыводимыхДанных.ЭтоГруппа Тогда
ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.ГруппаИЭлемент;
Иначе
ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.Сформировать;
КонецЕсли;
ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%");
Если ОбластьДляКартинки <> Неопределено Тогда
ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);
ОбластьДляКартинки.Текст = "%КартинкаДобавлена%"
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

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


В результате:
title

Скачать пример этого отчета(Работает в любой конфишурации где есть справочник Банки): Скачивать файлы может только зарегистрированный пользователь!
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 51993
 +8 
Распечатать
Возможно, вас также заинтересует
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: ... по причине: Ошибка компоновки данных по причине: Ошибка получени
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 11
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме
Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный
В отчет не попадают данные за последний день… Как исправить? 0
Пользователь выбрал период формирования отчета с 1июля по 31. Почему при формировании отчета в него не попадают данные за 31 число? На самом деле, это одна из самых распространенных ошибок при разработке отчетов. В 1С 8.х дата содержит время с точно
Внешние источники данных 0
Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес пр
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.