Как оформить общие итоги (подвал) в кросс-таблице СКД?

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

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

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

Почему не применяется собственный макет для общих итогов?

Давайте проанализируем ситуацию, с которой часто сталкиваются разработчики на практике. Допустим, в отчете настроена кросс-таблица, где в строках выводится группировка по неделям и дням, а в колонках — несколько независимых группировок (плановые показатели, фактические показатели, процент выполнения и т.д.). Разработчик пытается создать собственный макет на вкладке «Макеты», выбирает тип макета «Общий итог заголовок», но при формировании отчета оформление подвала никак не меняется.

Выясним причину такого поведения системы. Здесь кроются две основные технические особенности работы СКД:

  1. Несоответствие типов макетов расположению итогов в настройках отчета. В СКД критически важно, в какой именно части таблицы выводятся общие итоги по вертикали — сверху или снизу. По умолчанию (или при выборе значения «Конец» в других настройках отчета) итоги выводятся снизу таблицы, то есть в подвале. В этом случае макет с типом «Общий итог заголовок» полностью игнорируется системой. Для оформления нижней итоговой строки необходимо использовать тип макета «Общий итог подвал». Если же вы хотите использовать макет заголовка итога, вам потребуется принудительно переставить вывод итогов в начало таблицы (настройки «Расположение общих итогов» -> «Начало»).
  2. Специфика независимых группировок в колонках. Когда в колонках кросс-таблицы выводится несколько независимых полей, СКД требует жесткой привязки макета ресурсов к пересечению конкретной строки и конкретной колонки. Если макет оформлен только для одной из группировок, для остальных колонок он применяться не будет. Требуется создавать отдельные макеты для каждого пересечения ресурсов.

Рассмотрим по шагам оба доступных варианта решения этой задачи.

Способ 1. Настройка индивидуальных макетов на вкладке «Макеты»

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

  1. Перейдите на вкладку «Макеты» в конструкторе схемы компоновки данных.
  2. Нажмите кнопку «Добавить макет» и выберите пункт «Добавить макет ресурса».
  3. В появившемся окне настройки связей группировок укажите:
    • Для группировки строк (например, ваша группировка Неделя) выберите имя этой группировки, а в поле «Тип макета» обязательно укажите «Общий итог подвал» (это гарантирует применение оформления к нижней строке итогов).
    • Для группировки колонок выберите имя группировки колонок. В поле «Тип макета» укажите «Заголовок» (для оформления пересечения общего итога строки с обычными колонками) или «Общий итог подвал» (если оформляется точка пересечения общего итога строки и общего итога колонки).
  4. В области табличного документа выделите ячейки, которые будут отвечать за вывод показателей в подвале, и оформите их (задайте жирный шрифт, цвет фона, границы).
  5. Для вывода числовых значений в свойствах выбранных ячеек укажите тип заполнения «Параметр».
  6. В нижней таблице параметров макета обязательно свяжите созданные параметры с реальными полями ресурсов вашего отчета (например, параметру ПлановыеПоказатели сопоставьте соответствующее выражение ресурса). Если этого не сделать, ячейки в подвале останутся пустыми.

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

Способ 2. Использование условного оформления (рекомендуемый способ)

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

Давайте разберем этот процесс по шагам.

Шаг 1: Выделение строки общих итогов жирным шрифтом

Чтобы применить оформление только к подвалу кросс-таблицы, выполните следующие действия:

  1. Перейдите на вкладку «Настройки» в СКД, выберите корневой элемент настроек (или конкретную таблицу) и откройте вкладку «Условное оформление».
  2. Добавьте новый элемент условного оформления.
  3. В появившемся окне на вкладке «Оформление» найдите свойство «Шрифт», нажмите на кнопку выбора и установите начертание «Жирный» (Bold). При необходимости здесь же можно настроить цвет фона или цвет текста для итогов.
  4. На вкладке «Оформляемые поля» выберите те ресурсы отчета, которые выводятся в кросс-таблице и требуют выделения.
  5. Вкладку «Условие» оставьте пустой, так как оформление должно применяться ко всей строке.
  6. Самый важный шаг: перейдите к свойству «Область использования оформления» (в зависимости от версии платформы это могут быть флажки в свойствах элемента или отдельная вкладка). Снимите флажки со значений «Группировка» и «Детальные записи», оставив активным только один флажок — «В общем итоге» (или «Только в общих итогах»).

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

Шаг 2: Настройка индивидуальной точности и формата для разных полей в подвале

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

  1. Создайте еще один элемент условного оформления.
  2. На вкладке «Оформление» выберите параметр «Формат». В конструкторе формата задайте строку форматирования для первого поля, например, установите точность 0 (ЧДЦ=0), чтобы округлить число до целого.
  3. На вкладке «Оформляемые поля» укажите только первый ресурс (целочисленный).
  4. В области использования оформления снова оставьте активным флажок только для значения «В общем итоге».
  5. Создайте следующее (третье) условное оформление для второго ресурса. В параметре «Формат» укажите точность 1 знак после запятой (ЧДЦ=1).
  6. В оформляемых полях укажите второй ресурс, а в области использования — только «В общем итоге».

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

← На главную