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