Как быстро программно сформировать заголовки полей СКД

Иногда бывают ситуации, когда нужно программно сформировать заголовок поля в СКД, например когда в заголовок поля нужно вывести наименование валюты, а рисовать дополнительный макет так не хочется. В статье приведен способ, с помощью которого можно быстро программно сформировать заголовок поля при наименьших трудозатратах. Статья будет полезна людям, которые только начинают изучать СКД.

Пример приведем на отчете для УТ 11, в котором выводится вид цены, номенклатура и цена номенклатуры. Вид цены пользователь должен обязательно задать, а заголовок именно для цены нужно сформировать в соответствии с валютой вида цены, которую выбрал пользователь.

Отчет из измененным заголовком поля СКД

Пример запроса приводить не стану. Приведу код, который был написан в модуле отчета, а именно код функции ПриКомпоновкеРезультата.

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

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

  // Получаем основную валюту вида цены
 ПараметрВидЦены = ПолучитьЗначениеПараметра(«ВидЦены»);
 ВалютаВидыЦены = ПараметрВидЦены.ВалютаЦены;

 // Програмная установка заголовка нужных полей СКД
 ПолеЦена = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти(«Цена»);
 Если ПолеЦена <> Неопределено Тогда
   ПолеЦена.Заголовок = «Цена, » + Строка(ВалютаВидыЦены) + «»;
 КонецЕсли;

 // Програмный вывод СКД
 НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

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

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

 

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

 

 //Обозначим начало вывода
 ПроцессорВывода.НачатьВывод();
 ТаблицаЗафиксирована = Ложь;

 

 ДокументРезультат.ФиксацияСверху = 0;
 //Основной цикл вывода отчета
 Пока Истина Цикл
  //Получим следующий элемент результата компоновки
  ЭлементРезультата = ПроцессорКомпоновки.Следующий();

    Если ЭлементРезультата = Неопределено Тогда

      //Следующий элемент не получен — заканчиваем цикл вывода

      Прервать;

    Иначе
      // Зафиксируем шапку
      Если Не ТаблицаЗафиксирована
              И ЭлементРезультата.ЗначенияПараметров.Количество() > 0
              И ТипЗнч(КомпоновщикНастроек.Настройки.Структура[0]) <> Тип(«ДиаграммаКомпоновкиДанных») Тогда

       ТаблицаЗафиксирована = Истина;
       ДокументРезультат.ФиксацияСверху = ДокументРезультат.ВысотаТаблицы;

      КонецЕсли;

      //Элемент получен — выведем его при помощи процессора вывода
      ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    КонецЕсли;
 КонецЦикла;

 ПроцессорВывода.ЗакончитьВывод();

 

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

 

Функция ПолучитьЗначениеПараметра(ИмяПараметра)

  ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
   Если ПараметрДанных <> Неопределено Тогда
     ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
     Если ПараметрПользовательскойНастройки <> Неопределено Тогда
       Возврат ПараметрПользовательскойНастройки.Значение;
     Иначе
       Возврат ПараметрДанных.Значение;
     КонецЕсли;
   КонецЕсли;

  Возврат Неопределено;

КонецФункции

Сначала мы получаем вид цены из параметром, которые задал пользователь, а далее из вид цены можно получить сам вид цены.

Далее в наборе данных НаборДанных1 (здесь может быть имя вашего набора) ищем необходимое поле и устанавливаем необходимый заголовок. Последующие действия – стандартный программный вывод СКД отчета.
Как видим СКД предоставляет большой и гибкий набор инструментов, которые позволяют разработчику создавать красивые отчеты легко и быстро.

Статья также размещена на сайте avtomat.biz

4 Comments

  1. GreenFox

    Статья скорее для ленивых, которые не удосужились прочитать это раньше из литературы, например, той же Хрусталевой «Создание сложных отчетов…».

    Reply
  2. akomar

    (1) В преамбуле так и написано «для тех кто начинает изучать СКД».

    Reply
  3. margo_m09

    хорошая идея, сразу понравилась обработка, даже если и есть какие недочеты пока при использовании, не заметили))))

    Reply
  4. program_km

    Создать группировку с детальными записями назначить имя к примеру шапка отключить в ней поля «Авто», убрать оформление в макете добавить в макет и установить любой заголовок и оформить как вам угодно

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *