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

Вывод картинки в строках отчета на СКД

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

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

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

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

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

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


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

Скачать пример этого отчета(Работает в любой конфишурации где есть справочник Банки): Скачивать файлы может только зарегистрированный пользователь!
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 52717
 +8 
Распечатать
Возможно, вас также заинтересует
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: ... по причине: Ошибка компоновки данных по причине: Ошибка получени
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 12
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме
Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный
В отчет не попадают данные за последний день… Как исправить? 0
Пользователь выбрал период формирования отчета с 1июля по 31. Почему при формировании отчета в него не попадают данные за 31 число? На самом деле, это одна из самых распространенных ошибок при разработке отчетов. В 1С 8.х дата содержит время с точно
Посмотреть все результаты поиска похожих
Комментарии
Vasya_Pupkin
17.02.2015 15:12Комментарий: 2
Vasya_Pupkin

Всё круто, но!

Не применяются отборы СКД, выводится весь справочник.

alyonchik
27.11.2012 19:22Комментарий: 1
alyonchik
)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!