gifts2017

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

Опубликовал Андрей Комар (akomar) в раздел Программирование - Практика программирования

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

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

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

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

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

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

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

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


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

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

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

 

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

 

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

 

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

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

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

      Прервать;

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

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

      КонецЕсли;

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

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

 

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

 

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

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

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

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер
Файлы.zip 30
.zip 4,67Kb
05.03.13
30
.zip 4,67Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Alex Stasyuk (GreenFox) 08.03.13 13:41
Статья скорее для ленивых, которые не удосужились прочитать это раньше из литературы, например, той же Хрусталевой "Создание сложных отчетов...".
2. Андрей Комар (akomar) 08.03.13 13:49
(1) В преамбуле так и написано «для тех кто начинает изучать СКД».
3. Маргарита Михайлова (margo_m09) 28.03.13 07:09
хорошая идея, сразу понравилась обработка, даже если и есть какие недочеты пока при использовании, не заметили))))
4. Евгений (program_km) 28.03.13 07:29
Создать группировку с детальными записями назначить имя к примеру шапка отключить в ней поля "Авто", убрать оформление в макете добавить в макет и установить любой заголовок и оформить как вам угодно