Отчеты и Аналитика · 11 мин
Как сделать подвал отчета в 1С: итоги в СКД и макете
Как добавить подвал (итоги) в отчет 1С: настройка в СКД, ресурсы и группировки, подвал в макете, расчет итогов по колонкам, типичные ошибки и проверка результата.
Подвал отчета в 1С — это область внизу таблицы, где выводятся итоговые значения: суммы, количества, средние остатки или произвольные пояснительные надписи. Способ создания подвала зависит от того, как построен отчет: на системе компоновки данных (СКД) или на обычном табличном макете с программным выводом. В типовых конфигурациях почти все отчеты работают на СКД, поэтому основной сценарий — настройка ресурсов и итогов именно там.
Частая ошибка начинающих — пытаться «дорисовать» итоговую строку в макете, когда отчет уже собран на СКД. В этом случае подвал нужно добавлять не рисованием области, а настройкой ресурсов отчета: СКД сама рассчитает и выведет итоги по всем группировкам и по отчету в целом. Ручной макет оправдан только для нестандартного оформления или вывода текста, который нельзя получить расчетом.
Ниже разобраны оба подхода: настройка итогов в СКД без программирования и создание подвала в табличном макете с выводом из кода. Отдельно рассмотрены расчет собственных формул итогов, проверка корректности цифр и типичные ошибки, из-за которых подвал пустеет или показывает неверные суммы.
Как устроен подвал отчета в 1С
В терминах 1С «подвал» может означать три разные вещи, и важно понимать, какая из них нужна. Первая — общие итоги отчета на СКД: строка внизу таблицы с суммами по числовым колонкам. Вторая — итоги по группировкам: промежуточные подвалы после каждого блока строк (например, итог по каждому контрагенту). Третья — область «Подвал» в табличном макете, которую разработчик рисует вручную и заполняет из кода.
СКД-итоги декларативны: вы описываете, какие поля суммировать, а платформа сама строит запрос, группирует данные и выводит строки итогов. Макетный подвал императивен: вы сами накапливаете суммы в переменных и сами выводите область. Смешивать подходы в одном отчете можно, но делать это стоит осознанно — например, СКД считает суммы, а макет добавляет подписи «Итого к оплате» и печать руководителя.
Подвал в отчете на СКД: настройка ресурсов
Откройте схему компоновки данных отчета: в конфигураторе — через свойства отчета, кнопка «Открыть схему компоновки данных»; в режиме предприятия для внешних отчетов — через «Ещё → Изменить вариант» или конструктор настроек, если он доступен. Перейдите на закладку «Ресурсы». Здесь перечислены поля, по которым будут считаться итоги.
Нажмите «Добавить» и выберите числовое поле, например «СуммаОборот» или «Количество». В колонке «Выражение» укажите агрегатную функцию: чаще всего это Сумма(СуммаОборот). Для подсчета строк используйте Количество(Ссылка), для среднего — Среднее(Цена). Если поле доступно для выбора в ресурсах, но не отображается в отчете, проверьте, что оно добавлено в выбранные поля на закладке «Настройки».
Колонка «Рассчитывать по» определяет, для каких группировок считается ресурс. Если оставить её пустой, итог считается по всем группировкам и по общему итогу. Если указать конкретную группировку, ресурс будет считаться только для неё — это используют, когда разные уровни отчета требуют разных итогов.
- 1Откройте схему компоновки данных отчета
- 2На закладке «Ресурсы» добавьте числовое поле с выражением Сумма(Поле)
- 3Проверьте, что поле присутствует в выбранных полях настройки
- 4Сформируйте отчет и убедитесь, что строка «Итого» появилась внизу таблицы
- 5При необходимости включите вывод общих итогов в настройках группировки
Включение и отключение общих итогов
Даже при правильно настроенных ресурсах подвал может не появиться, если в настройках отключен вывод общих итогов. В режиме предприятия откройте настройки отчета, найдите корневой элемент структуры (обычно строка «Отчет» или «Таблица») и проверьте параметр вывода итогов. В расширенных настройках СКД за это отвечает расположение общих итогов: значения «Начало», «Конец», «Начало и конец» или «Нет».
Чтобы итоги выводились именно в подвале (внизу), установите расположение общих итогов по вертикали в «Конец». Аналогично настраиваются итоги по группировкам: у каждой группировки есть свои параметры расположения итогов, поэтому промежуточные подвалы можно выводить после каждой группы, а общий — только в конце отчета.
Обратите внимание: если отчет выводится в виде диаграммы или сводной таблицы, понятие «подвал» неприменимо — итоги там отображаются иначе. Для классической таблицы со строками и колонками все описанные настройки работают без программирования.
Подвал в табличном макете: ручной способ
Для отчетов, построенных без СКД (объект «Отчет» с модулем, выводящим табличный документ), подвал создается в макете. Откройте макет отчета, выделите строки под областью данных и создайте именованную область: меню «Таблица → Именованные области → Назначить имя», например «Подвал». В ячейках этой области разместите текст «Итого» и параметры для сумм.
Ячейки с итоговыми значениями должны иметь тип заполнения «Параметр» (в свойствах ячейки), а не «Текст» — иначе значение из кода не подставится. Задайте параметру имя, например «ИтогоСумма», и настройте формат ячейки, чтобы сумма выводилась с нужным числом знаков после запятой.
В модуле объекта отчета накапливайте суммы в переменных внутри цикла обхода данных, а после цикла получите область и выведите её:
ИтогоСумма = 0;
Пока Выборка.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьСтрока);
ИтогоСумма = ИтогоСумма + Выборка.Сумма;
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.ИтогоСумма = ИтогоСумма;
ТабДок.Вывести(ОбластьПодвал);
Признак правильной настройки — итоговая строка появляется один раз в конце документа, а сумма в ней совпадает с суммой по строкам. Если подвал выводится после каждой строки, область выводится внутри цикла — вынесите вызов за его пределы.
Собственные формулы итогов в СКД
Стандартных агрегатных функций не всегда достаточно. Например, нужно вывести в подвале средневзвешенную цену, процент выполнения плана или разность двух итогов. Для этого ресурс описывается выражением: Сумма(СуммаФакт) / Сумма(СуммаПлан) * 100. СКД сначала вычислит вложенные агрегаты, затем применит к ним операции — такой подход называется «агрегаты внутри выражения».
Для сложных случаев, когда итог нельзя выразить формулой, используется событие «ПриКомпоновкеРезультата» в модуле отчета: после формирования табличного документа программно находится итоговая строка и перезаписывается нужная ячейка. Это крайняя мера: она усложняет поддержку и ломается при изменении структуры настроек, поэтому сначала стоит исчерпать возможности выражений ресурсов и вычисляемых полей.
Сравнение вариантов
Подходит для всех типовых отчетов; не требует кода; ограничение — только агрегатные функции и выражения над ними
Подходит для процентов, отклонений, средневзвешенных; требует аккуратности с делением на ноль
Подходит для произвольного оформления и текстов; требует программирования и ручного накопления сумм
Подходит для нестандартных расчетов поверх СКД; хрупко при смене настроек отчета
Проверка корректности итогов
После настройки подвала сверьте его с независимым источником. Для отчета по продажам сравните итоговую сумму с оборотом по счету реализации за тот же период или с контрольным отчетом, которому доверяете. Расхождение даже в копейках означает проблему: отбор не совпадает, в запросе теряются строки с NULL, или ресурс считается не по тому полю.
Отдельно проверьте поведение при пустой выборке: если за период нет данных, подвал либо не выводится, либо показывает нули — оба варианта допустимы, но должны быть предсказуемы. Для макетных отчетов проверьте, что переменные итогов обнуляются перед каждым формированием, иначе при повторном формировании суммы задвоятся.
Как проверить результат
Строка «Итого» выводится один раз в конце таблицы
Итогов нет, либо строка повторяется после каждой строки данных
Совпадает с ручным пересчетом строк или контрольным отчетом
Расходится с контрольным значением или равна нулю при наличии данных
Итоги одинаковы при каждом формировании с теми же настройками
Суммы растут при каждом повторном формировании
Подвал показывает нули или осмысленно отсутствует
Ошибка выполнения или значения из прошлого формирования
Типичные ошибки и ограничения
Самая частая проблема — ресурс добавлен, но итоги пустые. Причины: поле не выбирается в запросе набора данных, поле исключено из выбранных полей настройки, либо отключен вывод общих итогов. Вторая типичная ситуация — итоги завышены: это происходит, когда в запросе есть соединение, дублирующее строки (например, соединение с таблицей, где на одну строку документа приходится несколько записей). СКД честно просуммирует дубли.
В макетных отчетах распространены три ошибки: ячейка подвала имеет тип «Текст» вместо «Параметр» и значение не подставляется; вывод области подвала стоит внутри цикла; переменные итогов не обнуляются между формированиями. Ещё одна ловушка — формат ячейки: если у итоговой ячейки числовой формат с округлением, а у строк — без, подвал визуально «не сойдется» с суммой строк, хотя вычисления верны.
Помните об ограничении прав: если отчет строится с учетом RLS (ограничения доступа на уровне записей), итоги в подвале будут включать только доступные пользователю строки. Это не ошибка, но при сравнении с данными, которые видит бухгалтер с полными правами, суммы не совпадут.
Частые вопросы о подвале отчета 1С
Как вывести итоги только в конце отчета, а промежуточные убрать?
В настройках СКД для каждой группировки установите расположение итогов «Нет», а для корневого элемента структуры (общие итоги) — «Конец». Промежуточные подвалы исчезнут, останется одна итоговая строка внизу таблицы.
Почему в подвале по одной колонке итог есть, а по другой — пусто?
Итоги выводятся только по полям, добавленным в ресурсы. Если колонка выводится в отчет, но не является ресурсом, итог по ней не считается. Добавьте это поле на закладку «Ресурсы» с нужной агрегатной функцией.
Можно ли вывести в подвале текст, например подпись ответственного лица?
В СКД произвольный текст выводится через пользовательские поля или параметры вывода (например, заголовок), но полноценный текстовый подвал проще сделать макетом: добавить область с текстом и вывести её после формирования отчета в событии компоновки результата.
Как посчитать в подвале количество уникальных значений?
Используйте выражение ресурса Количество(Различные Поле) — функция с ключевым словом «Различные» считает число уникальных значений, а не строк. Это стандартная возможность языка выражений СКД.
Итоги не совпадают с суммой строк на копейки — что делать?
Проверьте формат ячеек: если строки выводятся с округлением, а итог считается от исходных значений, визуально возникнет расхождение. Приведите форматы к единому виду. Если форматы одинаковы — ищите дубли строк в запросе набора данных.
Как добавить подвал во внешний отчет, не меняя конфигурацию?
Внешний отчет на СКД настраивается так же, как встроенный: откройте его схему компоновки в конфигураторе, добавьте ресурсы, сохраните файл. В режиме предприятия пользователь с правами на изменение вариантов может включить вывод итогов через настройки отчета без конфигуратора.
Что важно запомнить
В отчетах на СКД подвал — это ресурсы с агрегатными функциями плюс включенный вывод общих итогов; код не нужен. В отчетах на макете подвал — именованная область с параметрами, выводимая после цикла по данным. Всегда сверяйте итоги с контрольным значением и проверяйте повторное формирование.