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

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

Как в 1С посчитать сумму столбца

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

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

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

Ниже разобраны все рабочие способы — от простого выделения ячеек до программного расчёта, с указанием ограничений каждого варианта и типичных ошибок.

Быстрый способ: выделение ячеек в таблице

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

Результат отображается в поле калькулятора: нажмите кнопку калькулятора на панели инструментов или клавишу Ctrl+F2, и в открывшемся окне появится сумма выделенных значений. В ряде конфигураций сумма также дублируется в строке состояния внизу окна.

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

Порядок действий
  1. 1
    Откройте отчёт или список с нужным столбцом
  2. 2
    Кликните по первой числовой ячейке столбца
  3. 3
    Удерживая Shift, кликните по последней ячейке диапазона
  4. 4
    Нажмите Ctrl+F2 или кнопку калькулятора
  5. 5
    Проверьте сумму в открывшемся окне калькулятора

Итоги в стандартных отчётах

Практически все типовые отчёты 1С (оборотно-сальдовая ведомость, анализ счёта, продажи, ведомость по товарам) уже содержат итоги по суммовым колонкам. Если итоговой строки нет, её обычно можно включить через настройки отчёта.

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

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

Почему итоги могут не отображаться

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

Сумма в табличной части документа

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

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

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

Сумма через запрос: функция СУММА и ИТОГИ

Когда данные нужно получить из базы программно — для отчёта, обработки или консоли запросов — используется язык запросов 1С. Агрегатная функция СУММА() складывает значения числового поля по группе, а конструкция ИТОГИ добавляет в результат итоговые строки.

Типовой запрос для суммы по контрагентам с общим итогом выглядит так:

ВЫБРАТЬ

Продажи.Контрагент КАК Контрагент,

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

ИЗ

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

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

Продажи.Контрагент

ИТОГИ

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

ПО

ОБЩИЕ

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

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

Программный расчёт: метод Итог() таблицы значений

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

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

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

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

bsl
ТЗ.Свернуть("Контрагент", "Сумма");
ИтогоПоВсем = ТЗ.Итог("Сумма");

Итоги в отчётах на СКД

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

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

Типичная ошибка разработчика — добавить поле суммы только в выбранные поля, забыв про ресурсы. В этом случае в детальных строках значения видны, а итоговая строка пустая или показывает последнее значение вместо суммы.

Типичные ошибки
01
Поле добавлено в выбранные поля, но не в ресурсы СКД — итоги не считаются
02
В запросе забыта группировка при использовании СУММА() — запрос выдаёт ошибку или неверный результат
03
Выделение ячеек захватывает строки итогов — сумма удваивается
04
Колонка имеет строковый тип — метод Итог() возвращает 0 или неполную сумму
05
В отчёте отключены общие итоги в настройках — пользователь думает, что сумма не считается

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

Независимо от способа расчёта результат стоит проверить. Самый надёжный контроль — сравнить сумму с независимым источником: итог документа сверить с суммой проводок, итог отчёта — с оборотно-сальдовой ведомостью за тот же период, результат запроса — с типовым отчётом по тому же регистру.

Если цифры расходятся, первым делом проверяйте отборы: период, организацию, отбор по виду документов. Расхождения почти всегда объясняются разными условиями выборки, а не ошибкой суммирования.

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

Как выбрать действие

Нужно разово узнать сумму на экранеВыделите ячейки столбца и откройте калькулятор (Ctrl+F2)
Итог нужен постоянно в типовом отчётеВключите общие итоги в настройках отчёта
Итог нужен в собственном отчёте или обработкеИспользуйте СУММА() и ИТОГИ в запросе или ресурсы СКД
Данные уже в таблице значений в кодеПримените метод Итог() или Свернуть()
Итог

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

Для быстрой проверки используйте выделение ячеек и калькулятор, для постоянных итогов — настройки отчётов и ресурсы СКД, для программных расчётов — СУММА() в запросе и метод Итог() в коде. Результат всегда сверяйте с независимым источником.

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

Почему сумма выделенных ячеек не отображается?

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

Можно ли посчитать сумму только по видимым строкам с учётом отбора?

Да. В отчётах отбор применяется до расчёта итогов, поэтому итоговая строка покажет сумму только отобранных данных. При выделении ячеек учитываются только реально выделенные строки.

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

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

Как вывести итог по колонке в динамическом списке?

В динамических списках итоги по колонкам напрямую не выводятся. Используйте отчёт на СКД по тому же источнику данных либо программный расчёт с выводом в отдельное поле формы.

Чем СУММА() в запросе отличается от метода Итог()?

СУММА() вычисляется на стороне базы данных при выполнении запроса и работает быстрее на больших объёмах. Итог() суммирует уже полученную в память таблицу — это удобно для небольших выборок и промежуточных расчётов.

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

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