Система компоновки данных (СКД) — мощный инструмент, но его стандартные настройки иногда выдают результат, далекий от желаемого. Часто разработчики сталкиваются с тем, что вместо красивых названий месяцев выводятся даты, колонки «разлетаются» по разным таблицам, а заголовки параметров загромождают отчет. В этой статье мы разберем по шагам, как привести отчет в презентабельный вид, используя как визуальные настройки, так и программные методы.
Проанализируем ситуацию: по умолчанию поле с типом Дата выводится в отчете в формате «день.месяц.год». Если нам нужно отобразить только название месяца (например, «Май», «Июнь»), мы должны изменить настройки оформления поля.
Рассмотрим порядок действий для настройки формата:
ПериодМесяц).ДФ='MMMM' (для полного названия месяца) или ДФ='MMM' (для краткого, например, «май»).Однако здесь возникает проблема: если просто преобразовать дату в текст, СКД может начать сортировать колонки по алфавиту («Август», «Апрель», «Декабрь»). Чтобы сохранить хронологический порядок, выполним следующее:
ДатаНачала), а не его строковое представление. Это заставит систему сначала отсортировать данные по дате, а уже потом применить визуальный формат.Выясним причину, по которой колонки часто выводятся последовательно, а не одна под другой. Для того чтобы под одним заголовком месяца («Январь») выводились две подколонки («Начислено» и «Оплачено»), необходимо правильно настроить структуру таблицы в СКД.
Разберем этот процесс по шагам:
Месяц).Месяц и перейдем в её Выбранные поля (внизу экрана).Начислено и Оплачено.Теперь система поймет, что для каждого значения группировки (для каждого месяца) нужно вывести свой набор выбранных полей в виде подколонок.
Иногда отчет выводится как три отдельные таблицы (одна под другой), хотя задумывалась единая иерархическая структура. Посмотрим на структуру дерева настроек. Если группировки находятся на одном уровне (параллельно), СКД выводит их как независимые блоки данных.
Чтобы объединить данные в единую структуру, применим метод вложенности:
Организация -> Подразделение -> Сотрудник). Только в этом случае данные будут сгруппированы в одну таблицу.Бывают задачи, когда заголовок колонки должен содержать динамическую информацию, например, конкретную дату из параметров. В этом случае настройки в конфигураторе не помогут, и нам придется обратиться к встроенному языку 1С.
Рассмотрим пример кода, который можно разместить в модуле отчета в процедуре ПриКомпоновкеРезультата. Мы будем обращаться к Компоновщику настроек, чтобы изменить пользовательское представление заголовка:
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
// Отключаем стандартный вывод, чтобы управлять процессом программно
СтандартнаяОбработка = Ложь;
// Получаем текущие настройки отчета (с учетом пользовательских)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Попробуем найти поле "Остаток" в выбранных полях и изменить его заголовок
Для Каждого ЭлементВыбора Из Настройки.Выбор.Элементы Цикл
Если ТипЗнч(ЭлементВыбора) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Если Строка(ЭлементВыбора.Поле) = "ОстатокНаНачало" Тогда
ЭлементВыбора.Заголовок = "Остаток на " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Выполняем стандартную компоновку с измененными настройками
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Важно помнить: если вы меняете заголовок через СхемаКомпоновкиДанных.НаборыДанных, это изменение затронет структуру схемы в целом. Лучше использовать КомпоновщикНастроек.Настройки, так как это влияет только на текущий сеанс формирования отчета.
Часто в шапке отчета выводятся служебные параметры (например, ТекущаяДата), которые не нужны пользователю. Рассмотрим два способа их скрыть:
Если же вы столкнулись с тем, что заголовок отчета не меняется, хотя вы прописали новое название в Других настройках, скорее всего, старое название сохранилось в Пользовательских настройках (кэше). Чтобы это исправить, запустите отчет в режиме «1С:Предприятие», зайдите в настройки и выполните команду Установить стандартные настройки.
Использование этих приемов позволит вам создавать профессиональные и удобные отчеты, которые будут понятны конечным пользователям с первого взгляда.