Отчеты и Аналитика · 9 мин
Как вычислить сумму в 1С: практическое руководство
Как посчитать сумму в 1С: итоги по колонкам, калькулятор, функция Сумма в запросах и СКД, формулы в табличных частях. Пошаговые инструкции и типичные ошибки.
Вычисление суммы — одна из самых частых операций в 1С: от быстрого подсчёта итога по документу до агрегирования данных в отчётах и запросах. В зависимости от задачи применяются разные инструменты: встроенный калькулятор, итоги по колонкам табличных частей, функция Сумма() в языке запросов, группировки в СКД и программные циклы в модуле.
Ошибка в выборе способа приводит не только к лишней работе, но и к неверным итогам: например, суммирование по отбору без учёта скрытых строк или округление промежуточных значений искажает результат. Ниже разобраны все рабочие сценарии — от простейшего до программного — с указанием условий, ограничений и способов проверки.
Быстрый подсчёт суммы по выделенным ячейкам
Самый простой способ узнать сумму в любой таблице 1С — журнале документов, табличной части или динамическом списке — выделить нужные ячейки числовой колонки. Платформа автоматически покажет сумму, количество, среднее, минимум и максимум выделенных значений в специальной панели.
Чтобы выделить весь столбец, кликните по заголовку колонки с зажатой клавишей Ctrl или выделите первую ячейку и протяните выделение мышью. Если панель итогов не отображается, проверьте настройки: в некоторых конфигурациях показ итогов выделенных ячеек включается через меню «Ещё» формы списка.
Ограничение способа: суммируются только видимые значения в том виде, в каком они отображены. Если в колонке стоит отбор или часть строк скрыта иерархией, скрытые строки в итог не попадут — это одновременно и преимущество (можно посчитать сумму по отфильтрованным данным), и источник ошибок.
Калькулятор и арифметика в полях ввода
В любое числовое поле 1С встроен мини-калькулятор: нажмите Ctrl+F2 (или кнопку калькулятора, если она есть), введите выражение вида 1500+2300*1.2 и нажмите Enter — результат сразу подставится в поле. Это удобно при ручном вводе сумм, цен и количеств.
Кроме того, простое арифметическое выражение можно ввести прямо в поле: например, набрать 100*3 и нажать Tab — платформа вычислит результат. Поддерживаются сложение, вычитание, умножение и деление; приоритет операций стандартный.
Для сложных расчётов с буфером обмена удобнее системный калькулятор Windows: скопируйте числа из 1С через Ctrl+C, сложите и вставьте итог обратно. Способ подходит для разовых проверок, но не для регулярной работы — в этом случае лучше настроить отчёт.
Сумма в табличной части документа
В типовых документах (реализация, поступление, счёт) сумма по табличной части обычно вычисляется автоматически: при изменении количества или цены пересчитывается сумма строки, а итог по документу отображается в подвале формы или в поле «Сумма документа».
Если итог не пересчитался, типичные причины: отключён автоматический пересчёт в настройках формы, сумма введена вручную и «залипла», либо в строке не заполнены ставка НДС или цена. Проверьте, что курсор стоит в изменённой строке и документ не открыт в режиме просмотра без возможности редактирования.
Программно итог по колонке табличной части получают методом Итог():
СуммаДокумента = Объект.Товары.Итог("Сумма");
СуммаНДС = Объект.Товары.Итог("СуммаНДС");
Метод Итог() работает быстрее цикла и не требует обхода строк. Цикл с накоплением оправдан только когда нужно суммировать по условию, которое нельзя выразить одной колонкой, например итог только по строкам с конкретной номенклатурной группой.
СуммаПоУсловию = 0;
Для Каждого Строка Из Объект.Товары Цикл
Если Строка.Номенклатура.ВидНоменклатуры = НужныйВид Тогда
СуммаПоУсловию = СуммаПоУсловию + Строка.Сумма;
КонецЕсли;
КонецЦикла;Агрегатная функция СУММА в запросах
Когда нужно посчитать сумму по данным информационной базы — обороты, остатки, итоги по документам за период — используется язык запросов с агрегатной функцией СУММА(). Она суммирует значения указанного поля по группировке или по всей выборке.
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
СУММА(Продажи.СуммаОборот) КАК СуммаПродаж
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
Ключевые правила: поле, по которому не идёт группировка, обязано быть агрегировано (СУММА, МИНИМУМ, МАКСИМУМ, КОЛИЧЕСТВО); предложение ИТОГИ ПО добавляет подитоги и общий итог по иерархии измерений. Для суммирования с условием применяйте конструкцию ВЫБОР КОГДА внутри СУММА — например, СУММА(ВЫБОР КОГДА ВидДвижения = &Приход ТОГДА Сумма ИНАЧЕ 0 КОНЕЦ).
Типичная ошибка — суммирование по соединённым таблицам, где одно значение дублируется из-за связи «один ко многим»: итог завышается кратно числу строк детализации. Перед СУММА убедитесь, что соединение не размножает строки, либо предварительно сверните данные во временной таблице.
Суммы и итоги в отчётах на СКД
В отчётах на системе компоновки данных суммирование настраивается без программирования: на вкладке «Ресурсы» выберите числовое поле и укажите выражение Сумма(СуммаОборот). Платформа автоматически рассчитает ресурс по каждой группировке и общий итог.
Если ресурс не выводится в итогах, проверьте три вещи: поле добавлено в ресурсы, для него задано выражение агрегирования, и в настройках группировки ресурс включён в выбранные поля (автополе «Итог» обычно добавляет ресурсы само, но при ручной настройке поле могло быть исключено).
Для нестандартных итогов — например, суммы только по строкам с определённым признаком — используйте вычисляемое поле с выражением ВЫБОР и суммируйте уже его. Процент от общего итога считается через функцию ВычислитьВыражение или через связь с родительской группировкой в выражении ресурса.
- 1Откройте схему компоновки и перейдите на вкладку «Ресурсы»
- 2Добавьте числовое поле и задайте выражение Сумма(ИмяПоля)
- 3Убедитесь, что поле присутствует в выбранных полях группировки
- 4Сформируйте отчёт и сверьте итог с контрольным значением из исходных данных
Проверка результата и типичные ошибки
Любую вычисленную сумму стоит сверить независимым способом: итог запроса — с оборотно-сальдовой ведомостью или стандартным отчётом по тому же регистру, сумму документа — с ручным пересчётом нескольких строк. Совпадение двух независимых методов — надёжный признак корректности.
Обратите внимание на округление: если суммы строк округляются до копеек, а итог считается от неокругленных значений, возможны расхождения в копейках. В типовых конфигурациях порядок округления задан методикой учёта, и самостоятельно менять его в коде не следует — это приведёт к расхождениям с регистрами и отчётностью.
Как проверить результат
Совпадает с полем «Сумма документа» и суммой по колонке при выделении
Итог отличается — есть строки с ручной правкой суммы
Совпадает со стандартным отчётом по регистру за тот же период
Кратно завышена — проверить соединения и группировки
Выводится в каждой группировке и в общем итоге
Пустые итоги — ресурс не добавлен или исключён из выбранных полей
Частые вопросы
Как быстро посчитать сумму нескольких документов в журнале?
Выделите нужные строки в колонке «Сумма» с зажатой Ctrl или Shift — платформа покажет сумму выделенных значений в панели итогов. Если панель не видна, проверьте настройки формы списка через меню «Ещё».
Почему СУММА в запросе возвращает NULL?
Агрегатная функция возвращает NULL, когда в выборке нет ни одной строки либо все значения поля равны NULL. Оберните результат в ЕСТЬNULL(СУММА(Поле), 0), чтобы получить ноль вместо NULL.
Как посчитать сумму только по видимым (отфильтрованным) строкам?
Выделите колонку после применения отбора — итог по выделенным ячейкам посчитается по отображаемым строкам. Программно в динамическом списке это делается запросом с теми же отборами, что установлены в списке.
Чем Итог() отличается от обхода табличной части в цикле?
Итог("ИмяКолонки") — встроенный метод, который быстро возвращает сумму по одной колонке без написания цикла. Цикл нужен только для условного суммирования или когда параллельно требуется обработать каждую строку.
Как вывести общий итог в отчёте СКД, если он пропал?
В настройках отчёта на уровне самого отчёта (выше всех группировок) проверьте выбранные поля: ресурс должен присутствовать там. Также убедитесь, что на вкладке «Ресурсы» для поля задано выражение Сумма() и не ограничен расчёт только по конкретной группировке.
Можно ли суммировать время или строки в 1С?
Строки функцией СУММА не складываются — для них используется конкатенация в коде или функции соединения в СКД. Время и даты суммируются только через преобразование в числовое представление (например, секунды или часы) с последующим обратным переводом.
Что важно запомнить
Для разового подсчёта выделяйте ячейки или используйте встроенный калькулятор, для документов — метод Итог(), для аналитики — СУММА в запросах и ресурсы СКД. Любой итог сверяйте независимым способом и проверяйте запросы на размножение строк через соединения.