Как настроить оформление отчета на СКД: вывод названий месяцев, вложенные колонки и программное управление заголовками

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Система компоновки данных (СКД) — мощный инструмент, но его стандартные настройки иногда выдают результат, далекий от желаемого. Часто разработчики сталкиваются с тем, что вместо красивых названий месяцев выводятся даты, колонки «разлетаются» по разным таблицам, а заголовки параметров загромождают отчет. В этой статье мы разберем по шагам, как привести отчет в презентабельный вид, используя как визуальные настройки, так и программные методы.

Вывод названий месяцев и настройка их сортировки

Проанализируем ситуацию: по умолчанию поле с типом Дата выводится в отчете в формате «день.месяц.год». Если нам нужно отобразить только название месяца (например, «Май», «Июнь»), мы должны изменить настройки оформления поля.

Рассмотрим порядок действий для настройки формата:

  1. Откроем схему компоновки данных и перейдем на вкладку Наборы данных.
  2. Найдем поле, отвечающее за период (например, ПериодМесяц).
  3. В колонке Оформление нажмем на кнопку выбора.
  4. В появившемся окне найдем параметр Формат.
  5. В строке формата введем выражение ДФ='MMMM' (для полного названия месяца) или ДФ='MMM' (для краткого, например, «май»).

Однако здесь возникает проблема: если просто преобразовать дату в текст, СКД может начать сортировать колонки по алфавиту («Август», «Апрель», «Декабрь»). Чтобы сохранить хронологический порядок, выполним следующее:

Создание вложенных колонок («Начислено» и «Оплачено») под шапкой периода

Выясним причину, по которой колонки часто выводятся последовательно, а не одна под другой. Для того чтобы под одним заголовком месяца («Январь») выводились две подколонки («Начислено» и «Оплачено»), необходимо правильно настроить структуру таблицы в СКД.

Разберем этот процесс по шагам:

  1. Перейдем на вкладку Настройки.
  2. Создадим элемент типа Таблица (если он еще не создан).
  3. В Колонки таблицы добавим группировку по нашему полю периода (например, Месяц).
  4. Встанем курсором на созданную группировку Месяц и перейдем в её Выбранные поля (внизу экрана).
  5. Добавим туда нужные ресурсы: Начислено и Оплачено.
  6. Чтобы заголовки выглядели корректно, перейдем в Другие настройки этой группировки и установим параметр Расположение реквизитов в значение Отдельно.

Теперь система поймет, что для каждого значения группировки (для каждого месяца) нужно вывести свой набор выбранных полей в виде подколонок.

Устранение проблемы «разваливающегося» отчета

Иногда отчет выводится как три отдельные таблицы (одна под другой), хотя задумывалась единая иерархическая структура. Посмотрим на структуру дерева настроек. Если группировки находятся на одном уровне (параллельно), СКД выводит их как независимые блоки данных.

Чтобы объединить данные в единую структуру, применим метод вложенности:

Программное изменение заголовков колонок

Бывают задачи, когда заголовок колонки должен содержать динамическую информацию, например, конкретную дату из параметров. В этом случае настройки в конфигураторе не помогут, и нам придется обратиться к встроенному языку 1С.

Рассмотрим пример кода, который можно разместить в модуле отчета в процедуре ПриКомпоновкеРезультата. Мы будем обращаться к Компоновщику настроек, чтобы изменить пользовательское представление заголовка:


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

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

Как убрать лишние параметры и очистить «зависшие» заголовки

Часто в шапке отчета выводятся служебные параметры (например, ТекущаяДата), которые не нужны пользователю. Рассмотрим два способа их скрыть:

  1. Глобально для всех параметров: Перейдите на вкладку Настройки -> Другие настройки. Найдите пункт Выводить параметры и установите значение Не выводить.
  2. Для конкретного параметра: На вкладке Параметры основной схемы установите галочку в колонке Ограничение доступности (иконка замка). Параметр останется доступным для запроса, но исчезнет из всех пользовательских настроек и заголовков.

Если же вы столкнулись с тем, что заголовок отчета не меняется, хотя вы прописали новое название в Других настройках, скорее всего, старое название сохранилось в Пользовательских настройках (кэше). Чтобы это исправить, запустите отчет в режиме «1С:Предприятие», зайдите в настройки и выполните команду Установить стандартные настройки.

Использование этих приемов позволит вам создавать профессиональные и удобные отчеты, которые будут понятны конечным пользователям с первого взгляда.

← На главную