Пример приведем на отчете для УТ 11, в котором выводится вид цены, номенклатура и цена номенклатуры. Вид цены пользователь должен обязательно задать, а заголовок именно для цены нужно сформировать в соответствии с валютой вида цены, которую выбрал пользователь.
Пример запроса приводить не стану. Приведу код, который был написан в модуле отчета, а именно код функции ПриКомпоновкеРезультата.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
// Получаем основную валюту вида цены
ПараметрВидЦены = ПолучитьЗначениеПараметра(«ВидЦены»);
ВалютаВидыЦены = ПараметрВидЦены.ВалютаЦены;
// Програмная установка заголовка нужных полей СКД
ПолеЦена = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти(«Цена»);
Если ПолеЦена <> Неопределено Тогда
ПолеЦена.Заголовок = «Цена, » + Строка(ВалютаВидыЦены) + «»;
КонецЕсли;
// Програмный вывод СКД
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
//Создадим и инициализируем процессор компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
//Создадим и инициализируем процессор вывода результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
//Обозначим начало вывода
ПроцессорВывода.НачатьВывод();
ТаблицаЗафиксирована = Ложь;
ДокументРезультат.ФиксацияСверху = 0;
//Основной цикл вывода отчета
Пока Истина Цикл
//Получим следующий элемент результата компоновки
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата = Неопределено Тогда
//Следующий элемент не получен — заканчиваем цикл вывода
Прервать;
Иначе
// Зафиксируем шапку
Если Не ТаблицаЗафиксирована
И ЭлементРезультата.ЗначенияПараметров.Количество() > 0
И ТипЗнч(КомпоновщикНастроек.Настройки.Структура[0]) <> Тип(«ДиаграммаКомпоновкиДанных») Тогда
ТаблицаЗафиксирована = Истина;
ДокументРезультат.ФиксацияСверху = ДокументРезультат.ВысотаТаблицы;
КонецЕсли;
//Элемент получен — выведем его при помощи процессора вывода
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
Функция ПолучитьЗначениеПараметра(ИмяПараметра)
ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если ПараметрДанных <> Неопределено Тогда
ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
Если ПараметрПользовательскойНастройки <> Неопределено Тогда
Возврат ПараметрПользовательскойНастройки.Значение;
Иначе
Возврат ПараметрДанных.Значение;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Сначала мы получаем вид цены из параметром, которые задал пользователь, а далее из вид цены можно получить сам вид цены.
Далее в наборе данных НаборДанных1 (здесь может быть имя вашего набора) ищем необходимое поле и устанавливаем необходимый заголовок. Последующие действия – стандартный программный вывод СКД отчета.
Как видим СКД предоставляет большой и гибкий набор инструментов, которые позволяют разработчику создавать красивые отчеты легко и быстро.
Статья также размещена на сайте avtomat.biz
Статья скорее для ленивых, которые не удосужились прочитать это раньше из литературы, например, той же Хрусталевой «Создание сложных отчетов…».
(1) В преамбуле так и написано «для тех кто начинает изучать СКД».
хорошая идея, сразу понравилась обработка, даже если и есть какие недочеты пока при использовании, не заметили))))
Создать группировку с детальными записями назначить имя к примеру шапка отключить в ней поля «Авто», убрать оформление в макете добавить в макет и установить любой заголовок и оформить как вам угодно