Как вывести общий итог по определенному ресурсу в отчете СКД 1С

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

При разработке отчетов в системе компоновки данных (СКД) разработчики часто сталкиваются с задачей вывода итогов по сложным кросс-таблицам. Типичный пример: отчет по кадровому учету, где в колонках выводятся различные причины увольнения сотрудников (например, «Соц.условия ПФ» или «Зарплата, карьерный рост ПФ»), а на пересечении строк и колонок рассчитывается ресурс ВыбылоЧел. Задача усложняется, когда стандартный механизм вывода итогов по умолчанию начинает суммировать все числовые ресурсы подряд, либо не выводит нужный итог вовсе из-за сложной иерархии группировок.

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

Способ 1. Базовая настройка на вкладке «Ресурсы»

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

Выполним базовую настройку по шагам:

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

Способ 2. Включение общих итогов в настройках структуры таблицы

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

Давайте настроим структуру отображения:

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

Способ 3. Выборочный вывод ресурсов в итогах (если в отчете много показателей)

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

Для того чтобы вывести итог строго по одному конкретному полю ВыбылоЧел, применим профессиональный прием с искусственной группировкой:

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

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

Способ 4. Использование функций «ВычислитьВыражение» для сложных расчетов

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

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

  1. Перейдите на вкладку «Вычисляемые поля» схемы компоновки данных.
  2. Добавьте новое поле, укажите его путь к данным как ИтогоВыбыло и задайте понятный заголовок.
  3. Перейдите на вкладку «Ресурсы».
  4. Добавьте ваше вычисляемое поле ИтогоВыбыло в список ресурсов.
  5. В выражении ресурса пропишите специализированную системную функцию:

ВычислитьВыражение("Сумма(ВыбылоЧел)", "Колонка", "ОбщийИтог")

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

Способ 5. Суммирование с условием (выборочный итог)

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

Для реализации этого сценария на вкладке «Ресурсы» для поля ВыбылоЧел в колонке «Выражение» мы можем написать конструкцию:


Сумма(Выбор Когда ПричинаУвольнения В (&СписокПричинДляИтога) Тогда ВыбылоЧел Иначе 0 Конец)

Параметр СписокПричинДляИтога мы можем вынести на вкладку параметров конфигуратора СКД и сделать его доступным для заполнения пользователем в пользовательских настройках отчета.

Способ 6. Тонкая настройка вывода через макеты компоновки данных

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

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

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

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

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

← На главную