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