новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

СКД. Вывод произвольного изображения в шапку отчета

  • Добавить свою публикацию
  • для этого требуется регистрация

Простой отчет

И так, у нас есть простой внешний отчет "Прайс-лист", в котором для номенклатуры выводятся цены в разрезе их типов. Отчет создан для типовой конфигурации "Управление торговлей" версии 11. На следующем скриншоте представлен вывод для стандартных настроек отчета.

 

Изображение

 

Наша задача заключается в добавлении в шапку табличного документа отчета логотипа компании. Для этого нам необходимо программно сформировать отчет и вставить изображение логотипа. Теперь подробнее.

Подготовка

Для начала нам необходимо подготовить изображение для логотипа. Во внешний отчет добавим макет табличного документа "Логотип", в который вставим объект "Картинка" с необходимым изображением.

Изображение

Не забудьте создать область табличного документа для ячеек, где находится изображение логотипа. В текущем примере область названа "Логотип". Также нужно создать область "СвернутьЛоготип", которая будет использоваться для сворачивания/разворачивания логотипа в сформированном отчете.

 

Теперь нам необходимо вмешаться в процесс компоновки отчета программным образом. Для этого в модуле объекта отчета в процедуре-обработчике "ПриКомпоновкеРезультата" напишем алгоритм формирования отчета. На первом этапе сформируем отчет таким, какой он был без логотипа. Алгоритм процедуры будет следующим:

 

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

 

Алгоритм программного исполнения отчета не имеет ничего особенного, все стандартно. Перейдем непосредственно к решению поставленной задачи. Выводить логотип из дополнительного макета будем перед выполнением процессора вывода компоновки, но после очистки результатирующего табличного документа. Программный код вывода логотипа в шапке отчета приведен на следующем листинге:

 

 	// ....
	ДокументРезультат.Очистить(); // Очистка результатирующего табличного документа
	
	// Получаем дополнительный макет с описанием вывода логотипа
	МакетЛоготип = ПолучитьМакет("ЛоготипКомпании"); 
	// Получаем область верхнего уровня для сворачивания логотипа
	ОбластьСвернуть = МакетЛоготип.ПолучитьОбласть("СвернутьЛоготип");
	// Получаем область логотипа
	Область = МакетЛоготип.ПолучитьОбласть("Логотип");
	
	ДокументРезультат.НачатьАвтогруппировкуСтрок();   //Начало группировки строк
	ДокументРезультат.Вывести(ОбластьСвернуть, 1);    // Вывод строки группировки на 1 уровне
	ДокументРезультат.Вывести(Область,         2);    // Вывод логотипа на втором уровне группировки
	ДокументРезультат.ЗакончитьАвтогруппировкуСтрок();//Завершение группировки строк
	
	// Инициализация процессора вывода
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	// ....

 

На этом процесс модификации отчета закончен. Посмотрим результат работы в режиме предприятия.

В режиме предприятия

Запустим созданный отчет в режиме предприятия. Мы увидим следующую картину:

 

Изображение

 

Как мы видим, в шапке табличного документа появился логотип, изображение которого мы добавили в дополнительный макет отчета. Благодаря группировке строк имеется возможность свернуть логотип. 

 

Разумеется, предложенный способ не самый универсальный, так как при изменении логотипа компании будет необходимо изменять макет отчета в режиме конфигуратора. Более правильно было бы получить изображение из информационной базы или из файла на диске. К тому же в текущей реализации отчета пользователь не сможет отключить вывод логотипа, только свернуть его. Все эти недостатки решаются, но не в рамках данной статьи. Таким образом, мы получили отчет "Прайс-лист" с выводом логотипа компании.

 

По следующей ссылке Вы можете скачать отчет с примером из статьи.

 
0
Читайте также
Консоль компоновки данных – практические приемы работы.Часть 1.
Поменять реквизит документа быстро, загрузить в базу данные из файла, осуществить разные переброски - приемы работы
Баянец или пример создания не стандартного логотипа (картинки на форме и в печатной форме)
Чтобы поместить в печатную форму картинку нестандартной формы можно сделать ее с прозрачным фоном
Разработки
Консоль компоновки данных
Обработка состоит их запросов, СКД и объектов
Реестр документов .
Отчет на СКД
Заполнение Статьи движения денежных средств в документах
Позволяет проставить реквизит в шапке документа
Еще от автора
≡ к списку статей