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