Как объединить колонки под одной шапкой и вывести данные после таблицы в СКД

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

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

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

Метод 1: Вывод дополнительных полей после динамических колонок через ресурсы

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

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

  1. Перейдем на закладку Наборы данных и убедимся, что нужное нам поле (например, Сотрудник) выбрано в запросе.
  2. Перейдем на закладку Ресурсы.
  3. Добавим поле Сотрудник в список ресурсов. В поле Выражение укажем агрегатную функцию. Если мы точно знаем, что для одной строки (объекта строительства) предусмотрен только один сотрудник, можно использовать Максимум(Сотрудник) или Минимум(Сотрудник).

Пример выражения в ресурсах:

Максимум(Сотрудник)

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

Метод 2: Объединение колонок под одной «шапкой»

Часто требуется сгруппировать несколько колонок (например, «План», «Факт», «Отклонение») под общим заголовком «Показатели выполнения». Это делается через механизм группировки выбранных полей. Проанализируем, как это настроить:

  1. Откроем настройки отчета и перейдем на закладку Выбранные поля.
  2. Выделим несколько полей, которые должны находиться под общей шапкой (используя клавишу Ctrl).
  3. Нажмем правую кнопку мыши и выберем пункт Сгруппировать поля.
  4. В появившемся окне введем Заголовок (это и будет общая «шапка»).
  5. В свойстве Расположение укажем Горизонтально.

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

Метод 3: Работа с реквизитами объектов в ресурсах

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

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

  1. На закладке Вычисляемые поля добавим новую строку.
  2. Путь к данным: ДолжностьСотрудника.
  3. Выражение: Сотрудник.Должность.
  4. Затем на закладке Ресурсы добавим это вычисляемое поле с выражением Максимум(ДолжностьСотрудника).

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

Метод 4: Использование пустых группировок для сложной структуры

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

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

Что при этом происходит в СКД:

Настройка расположения реквизитов

Чтобы отчет выглядел профессионально, важно правильно настроить вывод реквизитов строк. Если мы добавили Сотрудника просто в группировку строк к Объекту, он может выводиться либо в той же ячейке через запятую, либо в следующей строке (лесенкой).

Посмотрим, как вынести его в отдельную колонку, сохранив при этом его принадлежность к строке:

  1. Выберем группировку строк ОбъектСтроительства.
  2. Перейдем в Дополнительные настройки этой группировки.
  3. Найдем параметр Расположение реквизитов.
  4. Установим значение Отдельно.

В этом случае Объект будет в первой колонке, а его реквизит Сотрудник — во второй, при этом они будут находиться в одной горизонтальной строке, что визуально воспринимается как обычная таблица, а не кросс-отчет.

Заключение

Мы проанализировали основные способы кастомизации таблиц в СКД. Использование ресурсов — самый простой и надежный способ вывести данные в конце таблицы. Группировка выбранных полей позволяет создавать красивые многоуровневые шапки, а настройка расположения реквизитов помогает управлять визуальным представлением строк. Комбинируя эти методы, можно реализовать практически любой макет, сохраняя при этом работоспособность стандартных пользовательских настроек 1С.

← На главную