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

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

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

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

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

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

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

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

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

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

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

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

Сумма через «Вывести список» с учётом отбора

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

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

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

Для разработчика основной инструмент — агрегатная функция СУММА в языке запросов 1С. Она суммирует значения числового поля по всем строкам выборки или по группам, если используется СГРУППИРОВАТЬ ПО.

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

Чтобы получить один общий итог без группировки, уберите поле группировки и предложение СГРУППИРОВАТЬ ПО — запрос вернёт одну строку с суммой. Если нужны и детальные строки, и итог, используйте предложение ИТОГИ ПО с указанием группировочного поля либо ОБЩИЕ для общего итога.

Учтите: СУММА игнорирует значения NULL, но если все значения в группе равны NULL, результатом тоже будет NULL, а не ноль. Для подстраховки используйте конструкцию ЕСТЬNULL(СУММА(Поле), 0), особенно когда результат дальше участвует в расчётах.

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

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

bsl
// Сумма колонки табличной части документа
ИтогоПоДокументу = Объект.Товары.Итог("Сумма");

// Сумма колонки произвольной таблицы значений
ИтогоКоличество = ТаблицаДанных.Итог("Количество");

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

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

Итоги в отчётах на СКД и в табличном документе

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

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

В обычном табличном документе (mхl, печатная форма) сумму ячеек считают программно при формировании: накапливают значение в переменной при выводе строк и выводят её в область подвала. Автоматического «автосуммирования», как в Excel, у табличного документа нет.

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

«Вывести список»

Подходит пользователю для разовой проверки. Не требует прав разработчика, но неудобен при очень больших объёмах.

СУММА в запросе

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

Метод Итог()

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

Ресурсы СКД

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

Как проверить, что сумма посчитана верно

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

Обратите внимание на границы периода: в запросах условие МЕЖДУ включает обе границы, а отборы в списках часто трактуют конец периода как конец дня. Расхождение на один документ почти всегда означает разные условия отбора, а не ошибку суммирования.

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

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

Совпадение итогов двумя способами
Норма

Суммы из списка и из отчёта совпадают до копейки

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

Есть расхождение — проверьте отборы, период и валюту

Полнота данных
Норма

Количество строк в выгрузке равно количеству в списке с тем же отбором

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

Строк меньше — сработало ограничение вывода или лишний отбор

Тип данных колонки
Норма

Колонка имеет тип «Число», итог считается

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

В колонке смешанные типы — часть значений не попадает в сумму

Типичные ошибки при суммировании

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

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

Отдельно предупредим о работе с валютными данными. Если в колонке смешаны суммы в разных валютах, простое суммирование даст бессмысленный результат. Сначала приведите суммы к одной валюте по курсу или суммируйте в разрезе валют с группировкой.

Как выбрать подходящий способ

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

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

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

Как правило, пользователю достаточно механизма «Вывести список» и стандартных отчётов, а разработчику — запроса с СУММА и метода Итог(). Осваивать все способы сразу не обязательно: начните с того, который закрывает вашу текущую задачу.

Итог

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

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

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

Почему итог по колонке не выводится в «Вывести список»?

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

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

Штатного суммирования по выделенным строкам в типовых формах нет. Варианты: установить отбор так, чтобы в список попали только нужные строки, и затем использовать «Вывести список», либо выгрузить таблицу в Excel и просуммировать там.

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

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

Почему СУММА в запросе вернула пустое значение?

Если в выборку не попала ни одна строка или все значения поля равны NULL, результатом будет NULL, а не ноль. Оберните выражение в ЕСТЬNULL(СУММА(Поле), 0), чтобы гарантированно получить число.

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

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

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

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