Как настроить вывод итогов в подвале группировки СКД без дублирования шапки отчета?

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

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

Анализ проблемы: почему настройки «ломают» отчет

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

  1. Установка итогов «В конце» может привести к тому, что общие итоги всего отчета «потянут» за собой заголовки полей.
  2. Если выставить итоги и «В начале», и «В конце», строки данных начинают дублироваться, так как система считает каждую итерацию вывода итогов отдельным событием отрисовки.
  3. Версия платформы (например, 8.3.16 и выше) имеет свои особенности отрисовки табличных документов, которые важно учитывать при компоновке.

Проанализируем шаги, которые позволят нам настроить отчет правильно.

Шаг 1. Разделение настроек для каждой группировки

Главный секрет успеха в СКД — отказ от глобальных настроек на уровне корня отчета в пользу настроек конкретных группировок. Выясним причину: когда мы меняем параметры на самом верхнем уровне (вкладка «Настройки» -> «Отчет»), мы задаем поведение по умолчанию для всех вложенных элементов. Но если мы выберем конкретную группировку (например, по документу или контрагенту), мы сможем переопределить это поведение.

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

  1. Перейдем в дерево настроек СКД.
  2. Выберем нужную группировку (например, Документ).
  3. В нижней части экрана перейдем на вкладку «Прочие настройки» именно для этой группировки.
  4. Найдем параметр «Расположение итогов» и установим значение Конец.
  5. Найдем параметр «Расположение группировок» и установим значение Начало.

Эта комбинация позволяет системе понять: само значение, по которому мы группируем (например, номер и дата документа), должно быть выведено первым, а агрегатные функции (суммы) — после того, как будут выведены все детальные записи, входящие в эту группу.

Шаг 2. Борьба с дублированием шапки (заголовков полей)

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

Разберем ситуацию: СКД может интерпретировать вывод подвала как начало нового блока данных, к которому нужно прикрепить заголовки. Чтобы этого избежать, в тех же «Прочих настройках» для группировки установим параметр «Выводить заголовки полей» в значение Не выводить или Нет, если эта группировка не является самой верхней. Основные заголовки должны остаться только на уровне самого отчета.

Шаг 3. Использование макетов для сложного оформления

Иногда стандартных «галочек» недостаточно. Например, если нам нужно, чтобы в строке подвала было написано «Итого по документу: [Номер]», нам потребуется механизм макетов. Проанализируем, как это реализовать:

  1. Перейдем на вкладку «Макеты» в конструкторе СКД.
  2. Нажмем «Добавить макет группировки».
  3. Укажем имя группировки и выберем тип макета — «Подвал».
  4. В появившемся редакторе табличного документа нарисуем область, которую мы хотим видеть в конце группы. В ячейках можно использовать параметры (например, СуммаИтог), которые система подставит автоматически.

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

Шаг 4. Вывод даты печати в колонтитулы

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

Если мы хотим, чтобы дата выводилась на каждой печатной странице, нам нужно обратиться к объекту ТабличныйДокумент в модуле объекта отчета, переопределив процедуру ПриКомпоновкеРезультата. Выясним, как выглядит код:


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

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

Использование специальных символов типа &[Дата] в параметрах вывода (в интерфейсе СКД) также возможно в последних версиях платформы, но программный метод дает программисту полный контроль над форматом и расположением данных.

Шаг 5. Особенности работы с иерархией

Проанализируем ситуацию с иерархическими справочниками. При включении иерархии СКД стремится вывести итоги для каждого уровня родителя. Если установить «Итоги в конце», вы получите «лесенку» из сумм. Чтобы отчет выглядел чисто:

Резюме для быстрой настройки

Подведем итог нашему исследованию. Чтобы получить идеальный подвал группировки, выполним следующие шаги:

  1. Заходим в настройки конкретной группировки (не всего отчета).
  2. В «Прочих настройках» ставим: Расположение итогов = Конец, Расположение группировок = Начало.
  3. В «Прочих настройках» самого Отчета проверяем, чтобы Расположение итогов не конфликтовало с вложенными группами (лучше оставить Авто).
  4. Если шапка дублируется — проверяем Тип заголовка полей у вложенных группировок и отключаем его там, где он лишний.

Применяя эти методы, мы превращаем стандартный «сырой» отчет в профессиональный инструмент аналитики с четкой структурой и понятными итогами.

← На главную