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