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

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

Как посчитать итог в 1С

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

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

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

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

Итог в документе: автоматический расчёт и ручной пересчёт

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

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

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

Итог в списке документов и журнале

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

Для регулярного контроля итогов по списку удобнее настроить отбор (по периоду, контрагенту, организации) и сформировать отчёт «Анализ» или универсальный отчёт — там итог считается по отобранным данным автоматически, без ручного выделения строк.

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

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

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

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

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

Программный расчёт: запрос с предложением ИТОГИ

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

ВЫБРАТЬ

Продажи.Номенклатура,

СУММА(Продажи.СуммаОборот) КАК Сумма

ИЗ

РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи

СГРУППИРОВАТЬ ПО

Продажи.Номенклатура

ИТОГИ

СУММА(Сумма)

ПО

ОБЩИЕ

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

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

Функция Итог() и работа с таблицей значений

Когда данные уже собраны в таблицу значений или табличную часть, сумму по колонке считают функцией Итог():

СуммаДокумента = ТабличнаяЧасть.Итог("Сумма");

КоличествоВсего = ТаблицаТоваров.Итог("Количество");

Функция возвращает сумму по указанной колонке за один вызов и работает быстро на типовых объёмах табличных частей. Для таблицы значений, загруженной из запроса, применим тот же синтаксис: ТЗ.Итог("ИмяКолонки").

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

Типичные ошибки при подсчёте итогов
01
Свернуть() применён к исходной таблице — детальные строки потеряны, дальнейшая логика работает с усечёнными данными.
02
Обход результата с ИТОГИ через Выбрать() вместо ВыборкаПоГруппировкам — итоговые записи либо пропущены, либо учтены дважды.
03
Итог() по колонке с нечисловым типом данных — функция вернёт 0 или ошибку, проверяйте тип колонки.
04
Сравнение итога отчёта с суммой документов без учёта отборов и периода — ложный вывод о расхождении.

Итоги по регистрам: виртуальные таблицы и скорость

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

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

Проверка результата и контроль расхождений

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

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

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

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

Итог отчёта против суммы документов
Норма

Значения совпадают при одинаковом периоде и отборах

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

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

Запрос с ИТОГИ против типового отчёта
Норма

Общий итог запроса равен итогу отчёта по регистру

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

Разница — искать лишние соединения или дубли строк

Скорость формирования
Норма

Отчёт по виртуальной таблице формируется быстро

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

Долгое формирование — возможен запрос к физической таблице

FAQ

Почему итог в отчёте не совпадает с суммой документов?

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

Как быстро посчитать сумму по выделенным строкам табличной части?

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

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

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

Функция Итог() вернула ноль, хотя в колонке есть числа. В чём причина?

Проверьте тип колонки: если она строковая или составная без числового типа, суммирование даст ноль. Также убедитесь, что имя колонки указано точно, без опечатки — при неверном имени возникнет ошибка или нулевой результат в зависимости от контекста.

Можно ли получить итог по регистру без запроса, прямо в коде?

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

Итог

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

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