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

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

Как сделать итоги в 1С: практическое руководство

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

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

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

Итоги в отчёте на СКД: ресурсы и группировки

Система компоновки данных (СКД) — основной механизм отчётов в управляемых конфигурациях (УТ 11, ERP, Бухгалтерия 3.0). Итог здесь — это ресурс: поле, которое суммируется на каждом уровне группировки и в общем итоге. Чтобы отчёт считал итоги, нужно выполнить три условия: поле добавлено в ресурсы, указана агрегатная функция (обычно «Сумма»), и в настройках отчёта есть группировки или включён вывод общего итога.

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

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

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

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

Во многих типовых отчётах итоги уже настроены, но пользователи их «теряют», меняя настройки. Например, в «Оборотно-счёте» или «Анализе субконто» итоги выводятся по счёту и в целом по отчёту; если итоговая строка исчезла, проверьте, не удалена ли группировка «Общий итог» из структуры варианта. Восстановить типовой вид можно кнопкой «Стандартные настройки» или «Установить стандартную настройку».

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

Итоги по табличной части документа

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

Программный расчёт итога по табличной части делается двумя способами. Первый — метод Итог(), доступный для табличной части объекта: СуммаДокумента = Объект.Товары.Итог("Сумма");. Второй — обход строк циклом с накоплением, когда нужна не просто сумма, а, например, сумма только по строкам с определённым признаком. Метод Итог() быстрее и предпочтительнее для простых сумм.

1c
СуммаДокумента = Объект.Товары.Итог("Сумма");
СуммаНДС = Объект.Товары.Итог("СуммаНДС");
// Итог с условием — через цикл:
ИтогСоСкидкой = 0;
Для Каждого Строка Из Объект.Товары Цикл
    Если Строка.Скидка > 0 Тогда
        ИтогСоСкидкой = ИтогСоСкидкой + Строка.Сумма;
    КонецЕсли;
КонецЦикла;

При расчёте итогов на форме помните о разделении контекста: в управляемой форме тяжёлые пересчёты лучше выполнять на сервере (директива &НаСервере), а на клиенте оставлять только простые операции вроде умножения количества на цену. Иначе каждое изменение строки будет вызывать серверный вызов и форма начнёт «тормозить».

Итоги в запросах: СГРУППИРОВАТЬ ПО и ИТОГИ ПО

Язык запросов 1С предлагает два разных механизма итогов, и их часто путают. СГРУППИРОВАТЬ ПО сворачивает данные: на выходе остаются только строки групп с агрегатными значениями. ИТОГИ ПО сохраняет детальные записи и добавляет к ним итоговые строки по указанным полям — результат обходится как иерархическая выборка.

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

Типичные ошибки в запросах с итогами
01
Использовать СГРУППИРОВАТЬ ПО, когда нужны и детали, и итоги — детальные строки теряются, приходится писать второй запрос
02
Выбирать неагрегатные поля, не входящие в группировку — запрос падает с ошибкой или возвращает непредсказуемые значения
03
Обходить результат с ИТОГИ ПО линейной выборкой — итоговые строки смешиваются с детальными и суммы задваиваются
04
Суммировать поле с NULL без ЕСТЬNULL — итог по группе становится NULL вместо числа

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

Итоги регистров накопления: остатки и обороты

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

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

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

Проверка результата и выбор подхода

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

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

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

Итог отчёта на СКД
Норма

Совпадает с типовым отчётом или ОСВ за тот же период

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

Расхождение растёт с увеличением периода — потерян ресурс или группировка

Итог табличной части
Норма

Равен сумме в печатной форме документа

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

Не пересчитывается при изменении строк — нет обработчика ПриИзменении

Остатки регистра
Норма

Запрос к виртуальной таблице выполняется быстро, суммы сходятся с отчётом

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

Запрос «зависает» или данные за старые периоды неверны — нужен пересчёт итогов

Маршрут решения

Как выбрать способ получения итогов

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

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

Итог

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

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

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

Почему в отчёте на СКД не выводится общий итог?

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

Чем СГРУППИРОВАТЬ ПО отличается от ИТОГИ ПО?

СГРУППИРОВАТЬ ПО сворачивает результат: остаются только строки групп. ИТОГИ ПО сохраняет детальные записи и добавляет итоговые строки, которые читаются обходом выборки по группировкам. Для отчётов на СКД обычно не нужно ни того, ни другого — итоги строит компоновка.

Как быстро посчитать сумму колонки без отчёта?

Выделите нужные строки в таблице (Ctrl+A — все), кликните правой кнопкой по числовой колонке и выберите «Сумма». Результат появится в строке состояния. Способ работает в табличных частях документов и во многих списках.

Итог() по табличной части возвращает 0, хотя строки есть. В чём причина?

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

Когда нужно пересчитывать итоги регистров?

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

Можно ли вывести итоги в середине таблицы, а не внизу?

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