Отчеты и Аналитика · 10 мин
Как посчитать итог в 1С
Практические способы посчитать итог в 1С: в табличной части документа, в отчётах СКД, через запросы и функции Итог. Пошаговые инструкции, ошибки и проверка результата.
Задача «посчитать итог» в 1С возникает в трёх типовых ситуациях: когда нужно увидеть сумму по колонке в документе или списке, когда требуется итог в отчёте по регистру и когда итог вычисляется программно — в запросе или в коде модуля. В каждом случае есть свой инструмент, и выбор зависит от того, где лежат данные и что нужно получить на выходе: быстрый просмотр, печатную форму или число для дальнейших расчётов.
В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) большинство итогов уже вычисляется автоматически: в документе «Реализация товаров и услуг» сумма по документу считается сама, а отчёты по продажам показывают итоги по периодам и группировкам. Проблемы начинаются, когда нужен нестандартный итог, когда документ не проводится, либо когда итог в отчёте не совпадает с ожиданием.
Ниже разобраны рабочие способы для пользователя и для разработчика: от кнопки «Ещё» в табличной части до запроса с предложением ИТОГИ и функции Итог() встроенного языка.
Итог в документе: автоматический расчёт и ручной пересчёт
В типовых документах итог по табличной части (сумма, количество, НДС) вычисляется автоматически при изменении строк. Итоговая сумма отображается в подвале табличной части или в полях «Всего», «Сумма», «Сумма НДС» в форме документа. Если итог не пересчитался после правки строки, чаще всего документ открыт в режиме, где автопересчёт отключён, либо изменения внесены в обход формы.
Чтобы проверить итог по конкретной колонке, выделите нужные строки или всю табличную часть и через кнопку «Ещё» выберите команду вывода итогов, если она предусмотрена конфигурацией. В части конфигураций итог по выделенным строкам показывается в строке состояния формы.
Если итог в документе расходится с суммой строк, проверьте: нет ли строк с отключённым учётом (например, помеченных на удаление внутри табличной части), корректно ли заполнены цена и количество, не изменён ли курс валюты после заполнения таблицы. В валютных документах итог в валюте и в рублях пересчитывается по курсу на дату документа, и ручная правка курса меняет рублёвый итог без изменения валютного.
Итог в списке документов и журнале
В форме списка (журнале документов, списке справочника) быстрый итог по числовой колонке получают через команду «Вывести список» или «Ещё → Изменить форму» с последующим выводом табличного документа, где итог можно посчитать стандартными средствами. Более простой путь — выделить нужные строки списка и использовать команду вывода в табличный документ: в полученной таблице сумма по колонке считается выделением ячеек.
Для регулярного контроля итогов по списку удобнее настроить отбор (по периоду, контрагенту, организации) и сформировать отчёт «Анализ» или универсальный отчёт — там итог считается по отобранным данным автоматически, без ручного выделения строк.
Итоги в отчётах на СКД: группировки и ресурсы
Отчёты на системе компоновки данных (СКД) — основной инструмент пользователя для получения итогов по регистрам. Итог формируется автоматически по каждой группировке и по отчёту в целом, если поле добавлено в ресурсы (числовые показатели). Чтобы итог появился, откройте настройки отчёта (кнопка «Настройки» или «Ещё → Изменить вариант») и проверьте три вещи.
Во-первых, нужное числовое поле должно присутствовать на закладке «Ресурсы» или в списке выбранных полей с агрегатной функцией «Сумма». Во-вторых, в структуре отчёта должна быть хотя бы одна группировка либо включён вывод общего итога. В-третьих, отбор не должен отсекать данные — пустой отчёт с корректными настройками обычно означает слишком жёсткий отбор или отсутствие проведённых документов в периоде.
- 1Откройте отчёт и перейдите в настройки (кнопка «Настройки» или «Ещё → Изменить вариант»).
- 2На закладке «Выбранные поля» убедитесь, что числовое поле (Сумма, Количество) добавлено.
- 3На закладке «Ресурсы» проверьте, что по полю установлена функция «Сумма».
- 4В структуре отчёта проверьте наличие группировки или строки «Итог» (Общий итог).
- 5Сформируйте отчёт и сверьте итог с контрольным значением — например, с суммой документов за период.
Если итог по группировке есть, а общего итога нет, добавьте в структуру отчёта элемент «Итог» через «Ещё → Изменить вариант → Структура». В ряде типовых отчётов общий итог выводится только в расширенном режиме настроек.
Программный расчёт: запрос с предложением ИТОГИ
Для разработчика основной способ получить итог — запрос с предложением ИТОГИ. Оно указывает платформе вычислить агрегатные значения по указанным полям, с группировкой по измерениям или в целом.
ВЫБРАТЬ
Продажи.Номенклатура,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
ИТОГИ
СУММА(Сумма)
ПО
ОБЩИЕ
Результат обходят через ВыборкаПоГруппировкам: сначала выбирают общий итог, затем детальные записи по группировке. Обход «в лоб» через Выбрать() вернёт детальные строки без итоговых, и сумму придётся накапливать вручную — это частая причина двойного счёта, когда итоговая запись обрабатывается вместе с детальными.
Условие ПО ОБЩИЕ даёт один общий итог. Если указать ПО Номенклатура, итоги будут по каждой группе. Использование ИТОГИ ПО с большим числом группировок на больших таблицах заметно увеличивает время выполнения запроса — оставляйте в итогах только те поля, которые реально нужны.
Функция Итог() и работа с таблицей значений
Когда данные уже собраны в таблицу значений или табличную часть, сумму по колонке считают функцией Итог():
СуммаДокумента = ТабличнаяЧасть.Итог("Сумма");
КоличествоВсего = ТаблицаТоваров.Итог("Количество");
Функция возвращает сумму по указанной колонке за один вызов и работает быстро на типовых объёмах табличных частей. Для таблицы значений, загруженной из запроса, применим тот же синтаксис: ТЗ.Итог("ИмяКолонки").
Если нужны итоги по группам (например, по каждому складу), используют метод Свернуть() таблицы значений: он группирует строки по указанным колонкам и суммирует числовые. Учтите, что Свернуть() изменяет саму таблицу — если исходные детальные строки ещё нужны, работайте с копией через ТЗ.Скопировать().
Итоги по регистрам: виртуальные таблицы и скорость
Итоги по регистрам накопления быстрее всего получать через виртуальные таблицы: Обороты для сумм за период, Остатки и ОстаткиИОбороты для остатков. Прямое суммирование по физической таблице регистра (без виртуальной) заставляет платформу перебирать все движения и на больших базах работает в разы медленнее.
Платформа хранит предрассчитанные итоги по регистрам, и именно они обеспечивают скорость виртуальных таблиц. Если итоги «сломаны» (например, после нештатного завершения), отчёты могут показывать неверные данные — в этом случае выполняется пересчёт итогов в режиме «Тестирование и исправление» или средствами управления итогами. Эту операцию проводят только на копии базы или в нерабочее время с резервной копией.
Проверка результата и контроль расхождений
Любой итог стоит сверить независимым способом. Итог отчёта по продажам сверяют с суммой проведённых документов реализации за тот же период и с тем же отбором. Итог, посчитанный запросом, — с результатом типового отчёта по тому же регистру. Совпадение двух независимых расчётов — надёжный признак корректности.
Если итоги расходятся, проверяйте по порядку: период (границы включительно), отборы (организация, склад, валюта), состояние проведения документов, наличие движений по служебным документам (корректировки, переносы), а для разработчика — корректность группировок и отсутствие дублирования строк при соединении таблиц в запросе.
Как проверить результат
Значения совпадают при одинаковом периоде и отборах
Расхождение — проверять период, отборы и проведение
Общий итог запроса равен итогу отчёта по регистру
Разница — искать лишние соединения или дубли строк
Отчёт по виртуальной таблице формируется быстро
Долгое формирование — возможен запрос к физической таблице
FAQ
Почему итог в отчёте не совпадает с суммой документов?
Чаще всего из-за разных условий: в отчёте стоит отбор по организации или складу, период задан иначе, часть документов не проведена. Также проверьте документы корректировки и возвраты — они меняют обороты регистра, но не всегда очевидны в списке документов.
Как быстро посчитать сумму по выделенным строкам табличной части?
Выделите строки и выведите табличную часть в табличный документ через команду вывода списка — в полученной таблице сумма по колонке считается выделением ячеек. В ряде конфигураций итог по выделенным строкам отображается прямо в строке состояния формы.
Чем ИТОГИ в запросе отличаются от СГРУППИРОВАТЬ ПО?
СГРУППИРОВАТЬ ПО сворачивает результат до групп и возвращает только агрегированные строки. ИТОГИ сохраняет детальные записи и дополнительно добавляет итоговые строки по группам и в целом — их обходят через ВыборкаПоГруппировкам.
Функция Итог() вернула ноль, хотя в колонке есть числа. В чём причина?
Проверьте тип колонки: если она строковая или составная без числового типа, суммирование даст ноль. Также убедитесь, что имя колонки указано точно, без опечатки — при неверном имени возникнет ошибка или нулевой результат в зависимости от контекста.
Можно ли получить итог по регистру без запроса, прямо в коде?
Да, через менеджер регистра: например, методы получения остатков у регистров накопления. Однако для сумм за произвольный период с отборами запрос к виртуальной таблице обычно гибче и быстрее, особенно при нескольких условиях.
Что важно запомнить
Итог в 1С считается тремя путями: автоматически в документе и отчёте, запросом с предложением ИТОГИ и функцией Итог() по таблице. Для регистров используйте виртуальные таблицы, а любой итог сверяйте независимым расчётом — расхождение почти всегда объясняется периодом, отборами или непроведёнными документами.