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

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

Как найти сумму в 1С: все способы от итогов по колонке до запросов

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

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

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

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

Сумма по колонке в таблице: кнопка итогов

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

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

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

Как вывести итог по колонке
  1. 1
    Откройте список документов или табличную часть
  2. 2
    Щёлкните по заголовку или любой ячейке числовой колонки
  3. 3
    Откройте меню «Ещё» в командной панели таблицы
  4. 4
    Выберите «Вывести итоги»
  5. 5
    Проверьте строку итога внизу таблицы и при необходимости снимите отбор для полной суммы

Сумма за период через стандартные отчёты

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

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

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

Сумма в запросе: функция СУММА и группировка

Для разработчиков и продвинутых пользователей основной способ получить сумму — запрос с агрегатной функцией СУММА(). Запрос работает напрямую с таблицами базы и позволяет суммировать с любой детализацией: в целом, по контрагентам, по месяцам.

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

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

Для проверки и отладки запросов используйте консоль запросов — внешнюю обработку, которая позволяет выполнить запрос интерактивно и увидеть результат. В управляемом приложении консоль открывается через «Файл → Открыть» (при наличии прав и включённой возможности запуска внешних обработок).

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

Сумма в коде и в выражениях СКД

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

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

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

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

Как выбрать способ под свою задачу

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

Сравнение способов

Итоги по колонке («Ещё → Вывести итоги»)

Для быстрой оценки по открытой таблице. Учитывает отбор списка и непроведённые документы — не для официальных цифр.

Стандартные и универсальный отчёты

Для сумм за период по учётным данным. Только проведённые документы, корректная работа с регистрами.

Запрос с СУММА()

Для произвольных выборок, обработок и интеграций. Требует навыка и правильных условий отбора.

Метод Итог() в коде

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

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

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

Нужно быстро сложить видимые строки на экранеИспользуйте «Ещё → Вывести итоги» по колонке
Нужна официальная сумма за период для отчётностиСформируйте профильный отчёт или универсальный отчёт по регистру
Сумма нужна в обработке, печатной форме или обменеНапишите запрос с СУММА() и отбором по проведённым документам
Данные уже собраны в таблицу значенийВызовите метод Итог(ИмяКолонки)

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

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

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

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

Совпадение итога списка и отчёта за тот же период
Норма

Суммы равны при снятых отборах и проведённых документах

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

Расхождение — в списке есть непроведённые документы или отбор

Итог по группам против общего итога
Норма

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

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

Группы в сумме дают меньше — часть данных без значения группировки (NULL)

Сумма по регистру остатков
Норма

Посчитана через виртуальную таблицу Остатки/ОстаткиИОбороты

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

Суммированы записи физической таблицы без учёта вида движения

Типичные ошибки
01
Суммировать по списку с активным отбором — итог охватывает только видимые строки, сумма занижена
02
Включать в сумму непроведённые и помеченные на удаление документы — расхождение с данными учёта
03
Складывать записи регистра без разделения прихода и расхода — итог завышен в разы
04
Игнорировать NULL в полях суммы — строки без значения теряются, итог меньше фактического
05
Считать сумму по многострочной табличной части, дублируя шапку документа в соединении — суммы задваиваются

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

Частые вопросы о суммах в 1С

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

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

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

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

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

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

Почему в отчёте СКД сумма равна нулю, хотя данные есть?

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

Можно ли найти сумму без прав на отчёты и программирование?

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

Как суммировать остатки по регистру, а не обороты?

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

Итог

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

Для экранных таблиц используйте «Ещё → Вывести итоги», для официальных сумм за период — отчёты по регистрам, в коде и выборках — СУММА() в запросе или метод Итог(). Проверяйте результат двумя способами и помните: отборы, непроведённые документы и NULL — главные причины неверных сумм.