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

Документы и Печать · 10 мин

Как посчитать сумму в документе 1С

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

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

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

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

Где в документе 1С отображается сумма

В большинстве типовых документов итоговая сумма выводится прямо в форме: внизу табличной части или в отдельном поле рядом с валютой документа. В 1С:Бухгалтерии это поле «Сумма» с разбивкой «в т. ч. НДС», в Управлении торговлей — блок «Итого» на вкладке «Товары». Значение пересчитывается автоматически при изменении количества, цены или ставки НДС в любой строке.

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

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

Когда нужна сумма не всего документа, а части строк — например, только по одному складу или одному поставщику — используйте выделение. Выделите нужные строки табличной части мышью с зажатой клавишей Ctrl или Shift, затем посмотрите на строку состояния внизу окна: платформа показывает сумму, среднее, количество и другие агрегаты по числовой колонке, в которой стоит курсор.

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

Порядок действий
  1. 1
    Откройте документ и перейдите на нужную вкладку табличной части
  2. 2
    Установите курсор в колонку «Сумма»
  3. 3
    Выделите строки мышью с Ctrl (произвольно) или Shift (диапазон)
  4. 4
    Посмотрите сумму в строке состояния внизу окна
  5. 5
    Сравните с итогом документа, чтобы убедиться, что выделено то, что нужно

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

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

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

Как посчитать сумму программно: цикл и метод Итог()

В модуле объекта или формы сумму по табличной части считают двумя способами. Первый — встроенный метод Итог(), который возвращает сумму по указанной колонке без написания цикла. Это самый короткий и быстрый вариант для простых задач.

1c
СуммаТоваров = Объект.Товары.Итог("Сумма");
СуммаНДС = Объект.Товары.Итог("СуммаНДС");
Объект.СуммаДокумента = СуммаТоваров + Объект.Услуги.Итог("Сумма");

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

1c
ИтогоПоСкладу = 0;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    Если СтрокаТЧ.Склад = ВыбранныйСклад Тогда
        ИтогоПоСкладу = ИтогоПоСкладу + СтрокаТЧ.Количество * СтрокаТЧ.Цена;
    КонецЕсли;
КонецЦикла;

Учтите разницу: Итог("Сумма") берет готовое значение колонки, а расчет «Количество × Цена» в цикле может дать другое число, если в строках применялись ручные скидки или округление. Для контроля сравнивайте оба результата — расхождение покажет строки с ручной корректировкой.

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

Для выборок по множеству документов правильный инструмент — запрос с агрегатной функцией СУММА(). Запрос выполняется на сервере, не загружает документы в память целиком и работает быстрее цикла по выборке. Группировка задается предложением СГРУППИРОВАТЬ ПО, а фильтрация итогов — предложением ИМЕЮЩИЕ.

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

Обратите внимание: запрос к табличной части документа видит все записи, включая непроведенные документы. Если нужны только учтенные в учете суммы, добавьте условие на реквизит «Проведен» или обращайтесь не к документу, а к регистру накопления, который документ двигает — это исключает «мусор» из непроведенных данных.

Способы подсчета суммы

Поле итога в форме

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

Выделение строк + строка состояния

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

Стандартный отчет

Учитывает проведение и регистры, подходит для периодов и групп. Медленнее и требует прав на отчет.

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

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

Почему суммы расходятся: типичные причины

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

Вторая группа причин — валюта и курс. Документ в валюте показывает итог в валюте, а отчеты по регистрам — в валюте учета по курсу на дату документа. Третья группа — ручные правки: пользователь изменил сумму строки вручную после расчета скидки, и колонка перестала соответствовать произведению «Количество × Цена».

Типичные ошибки
01
Суммирование колонки «СуммаНДС» вместо «Сумма» — итог занижен на величину налога
02
Сравнение итога формы с отчетом без учета непроведенных документов — ложное расхождение
03
Использование Итог() по колонке с ручными скидками и сверка с расчетом Количество × Цена — разница принимается за ошибку
04
Игнорирование флага «Сумма включает НДС» — сумма отличается ровно на величину налога
05
Отбор в запросе без условия на проведение — в итог попадают черновики

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

Надежная проверка — трехсторонняя сверка: итог в форме документа, реквизит СуммаДокумента в списке и сумма по движениям регистра (через отчет или «Ещё → Движения документа»). Если все три значения совпадают, документ в порядке. Расхождение формы и реквизита указывает на незаписанные изменения, расхождение с регистром — на проблемы проведения.

Для массовой проверки за период используйте сводный отчет по взаиморасчетам или оборотно-сальдовую ведомость по счету 62 (в бухгалтерии) и сравните оборот с суммой документов по журналу. Разница локализуется отбором по контрагенту и дате.

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

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

Итог в форме документа
Норма

Совпадает с СуммаДокумента в списке

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

Итог формы больше или меньше — документ изменен, но не записан

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

Равна сумме проведенного документа

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

Движений нет или сумма иная — документ не проведен или проведен с ошибкой

Оборот по отчету за период
Норма

Равен сумме проведенных документов журнала

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

Разница кратна сумме НДС или отдельного документа — ищите непроведенные и ручные правки

Итог

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

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

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

Почему в строке состояния не отображается сумма выделенных строк?

Чаще всего курсор стоит в текстовой колонке — агрегаты считаются только для числовых. Переместите курсор в колонку «Сумма» или «Количество» и выделите строки заново. Также проверьте, что строки действительно выделены (подсвечены), а не просто активна одна строка.

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

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

Сумма в документе отличается от суммы в отчете. Что делать?

Проверьте, проведен ли документ — отчеты по регистрам не видят непроведенные данные. Затем сверьте флаг «Сумма включает НДС» и валюту документа. Если всё совпадает, перепроведите документ и обновите отчет.

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

Да. Откройте журнал документов, установите отбор по периоду, добавьте колонку «Сумма» в список через настройку, выделите все строки (Ctrl+A) — итог появится в строке состояния. Учтите, что в выборку попадут и непроведенные документы, если они отображаются.

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

Добавьте в секцию ГДЕ условие на реквизит: РеализацияТовары.Ссылка.Проведен = ИСТИНА. Более надежная альтернатива — брать данные не из табличной части документа, а из регистра накопления, который заполняется только при проведении.

Почему Итог("Сумма") не равен произведению количества на цену по всем строкам?

Значит, в части строк сумма изменена вручную или применена скидка, которая записывается сразу в колонку «Сумма», минуя цену. Найдите такие строки циклом: сравните в каждой строке Сумма с Количество * Цена — расхождение покажет строки с ручной корректировкой.