К статье
Практический материал

Отчеты и Аналитика · 11 мин

Как вывести итоги в 1С: пошаговая инструкция

Практическое руководство: как вывести итоги в 1С в отчётах, СКД, запросах и регистрах накопления. Настройка группировок, ресурсов и проверка результатов.

Итоги в 1С — это агрегированные значения (суммы, количества, остатки, обороты), которые программа рассчитывает по группам данных или по всей выборке целиком. В зависимости от задачи итоги выводятся в отчётах на СКД, в табличных документах, в запросах с конструкцией ИТОГИ, а также хранятся заранее рассчитанными в регистрах накопления и бухгалтерии. Понимание того, где именно формируется итог, помогает и быстро получить нужную цифру, и ускорить работу базы.

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

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

Где в 1С вообще существуют итоги

Под «итогами» в 1С понимают несколько разных механизмов, и важно не путать их между собой. Первый — итоги в отчётах: строки «Итого», которые система компоновки данных рассчитывает на лету по результатам запроса. Второй — хранимые итоги регистров: платформа заранее накапливает остатки и обороты по регистрам накопления и бухгалтерии, чтобы отчёты не пересчитывали все документы заново.

Третий механизм — итоги в языке запросов (конструкция ИТОГИ ... ПО) и итоги в табличных частях и табличных документах. Четвёртый — итоги по колонкам в динамических списках и списках документов, которые в ряде конфигураций включаются отдельной командой. Каждый из этих механизмов настраивается по-разному, поэтому дальше они разобраны по очереди.

Как вывести итог в типовом отчёте

В большинстве типовых отчётов (1С:Бухгалтерия, Управление торговлей, ERP) итоги выводятся по умолчанию. Откройте нужный отчёт, задайте период и отборы, нажмите «Сформировать». Итоговая строка обычно отображается внизу таблицы, а в отчётах с группировками — под каждой группой и в строке «Итого» по всему отчёту.

Если итоговой строки нет, причина почти всегда в настройках варианта отчёта. Нажмите «Ещё → Изменить вариант отчёта» (или «Настройки»), перейдите на вкладку «Поля» или «Ресурсы» и убедитесь, что нужные числовые поля добавлены в ресурсы. Именно ресурсы — те поля, по которым СКД считает итоги: сумма, количество, себестоимость.

Проверьте также структуру отчёта: если вместо таблицы выбрана простая группировка без детальных полей, итог выводится на уровне самой группировки, и строка «Итого» может визуально «раствориться» в шапке. Добавьте в структуру элемент «Детальные записи» или таблицу — итоговая строка станет явной.

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

Как вывести итоги по группировкам в СКД

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

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

Полезный приём — вывод итогов в колонках, а не в строках. Для этого в структуру добавляется элемент «Таблица»: в строки помещается одна группировка (например, менеджеры), в колонки — другая (например, месяцы). На пересечениях и по краям таблицы СКД автоматически выведет все итоги.

Как вывести итоги в запросе: конструкция ИТОГИ

Для разработчиков основной инструмент — конструкция языка запросов ИТОГИ ... ПО. Она добавляет в результат запроса итоговые записи по указанным измерениям. Типовой пример: ВЫБРАТЬ Контрагент, СУММА(Сумма) КАК Сумма ИЗ Продажи СГРУППИРОВАТЬ ПО Контрагент ИТОГИ СУММА(Сумма) ПО ОБЩИЕ. Ключевое слово ОБЩИЕ даёт общий итог по всей выборке.

При обходе результата в коде итоговые записи извлекаются через ВыборкаПоГруппировкам с указанием типа обхода — по группировкам или по общим итогам. Ошибка новичков — обходить результат линейно и смешивать детальные и итоговые записи, из-за чего суммы задваиваются. Всегда задавайте тип обхода явно.

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

bsl
ВЫБРАТЬ
	Продажи.Контрагент КАК Контрагент,
	СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
	РегистрНакопления.Продажи.Обороты(&Начало, &Конец, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
	Продажи.Контрагент
ИТОГИ
	СУММА(Сумма)
ПО
	ОБЩИЕ

Итоги регистров: хранимые остатки и обороты

Когда отчёт по остаткам или оборотам работает медленно, дело обычно в хранимых итогах регистра. Платформа поддерживает для регистров накопления таблицы итогов: текущие остатки и обороты по месяцам. Если использование итогов отключено или «текущие итоги» рассчитаны не на актуальную дату, виртуальные таблицы Остатки и Обороты начинают собираться из движений документов — и скорость падает в разы.

Управление итогами выполняется в конфигураторе: «Администрирование → Обслуживание → Управление итогами» (в клиент-серверном варианте — через функции технического специалиста либо конфигуратор, в зависимости от конфигурации). Там можно включить использование итогов, установить период рассчитанных итогов и выполнить пересчёт. Для регистров бухгалтерии действуют те же принципы.

Операция пересчёта итогов на большой базе может занять продолжительное время и нагружает сервер, поэтому выполняйте её в нерабочие часы и обязательно при наличии актуальной резервной копии. Менять настройки итогов в рабочей базе следует только понимая, зачем это делается.

Итоги в табличных частях, списках и на формах

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

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

В табличном документе, формируемом программно, итоги выводятся явно: разработчик накапливает суммы в переменных при обходе данных и выводит их в отдельную область «Итого». Здесь типичная ошибка — забыть обнулить накопленные переменные между группами, из-за чего итоги по группам «ползут» вверх.

Типичные ошибки при работе с итогами
01
Поле есть в отчёте, но не добавлено в ресурсы — строка «Итого» пустая или отсутствует
02
Линейный обход результата запроса с ИТОГИ — детальные и итоговые записи суммируются вместе, итог задваивается
03
Отключённые или устаревшие итоги регистра — отчёты по остаткам работают в десятки раз медленнее
04
Необнулённые переменные итогов при программном выводе — суммы по группам наслаиваются друг на друга
05
Сравнение итога отчёта с данными за другой период или с другим отбором — кажущееся расхождение

Как проверить, что итог посчитан правильно

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

Внутри одного отчёта проверьте, что сумма итогов по группировкам равна общему итогу: разверните все группы и сопоставьте. Если сумма по группам меньше общего итога — часть записей попала в строки с пустым значением группировки (например, документы без контрагента). Это не ошибка расчёта, а сигнал о незаполненных реквизитах.

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

Контрольные точки

Как проверить результат

Наличие строки «Итого» в отчёте
Норма

Итоговая строка выводится, суммы по группам сходятся с общим итогом

Тревожный признак

Строки нет или сумма по группам не равна общему итогу

Скорость отчёта по остаткам
Норма

Отчёт формируется за секунды даже на большом объёме данных

Тревожный признак

Формирование занимает минуты — проверьте использование итогов регистра

Сверка с другим отчётом
Норма

Итоги двух логически связанных отчётов совпадают при одинаковых отборах

Тревожный признак

Расхождение — сравните периоды, отборы и настройки вариантов

Частые вопросы

Почему в отчёте нет строки «Итого»?

Чаще всего числовое поле не добавлено в ресурсы варианта отчёта либо структура не содержит группировки с детальными записями. Откройте настройки варианта, добавьте поля на вкладку «Ресурсы» и сформируйте отчёт заново.

Как вывести общий итог в запросе без группировок?

Используйте конструкцию ИТОГИ СУММА(Поле) ПО ОБЩИЕ. В результате появится одна итоговая запись, которую в коде получают через ВыборкаПоГруппировкам с типом обхода «ПоОбщимИтогам».

Отчёт по остаткам формируется очень долго. Что делать?

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

Можно ли вывести итог по колонке в списке документов?

В типовых динамических списках итоговая строка обычно не предусмотрена из-за нагрузки на базу. Практичный вариант — сформировать отчёт с тем же отбором или выделить строки и использовать доступные команды суммирования, если они есть в конфигурации.

Почему сумма итогов по группам не равна общему итогу?

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

Как посчитать в итогах не сумму, а среднее или количество?

В настройках ресурса СКД замените агрегатную функцию «Сумма» на «Среднее», «Количество» или «Максимум». В запросе используйте соответствующие агрегатные функции СРЕДНЕЕ, КОЛИЧЕСТВО, МАКСИМУМ в секции ИТОГИ.

Итог

Что важно запомнить

Итоги в типовых отчётах управляются через ресурсы и группировки варианта отчёта, в запросах — конструкцией ИТОГИ ПО ОБЩИЕ, а скорость отчётов по остаткам зависит от хранимых итогов регистров. Проверяйте результат сходимостью сумм по группам с общим итогом, а тяжёлые операции с итогами регистров выполняйте только на копии или в нерабочее время.