Работа с документами в 1С:Предприятие часто требует быстрого подсчёта сумм — будь то проверка корректности введённых данных, формирование отчётности или анализ хозяйственных операций. Казалось бы, что может быть проще, чем сложить числа? Однако в 1С есть нюансы: суммы могут храниться в разных разделах документа, зависеть от валют, скидок, налогов или даже скрываться в табличных частях. Неправильный расчёт приводит к ошибкам в учёте, расхождениям с контрагентами и проблемам при сдаче отчётности.
Эта статья поможет разобраться, как посчитать сумму по документу в 1С 8.3 — от базовых методов для пользователей до продвинутых приёмов для программистов. Мы рассмотрим стандартные инструменты платформы, скрытые возможности типовых конфигураций (Бухгалтерия 3.0, Управление Торговлей 11, Зарплата и Управление Персоналом), а также напишем универсальный код для автоматического суммирования. Особое внимание уделим типичным ошибкам, из-за которых итоги "не сходятся", и способам их исправления.
⚠️ Внимание: Если вы работаете с документами, где суммы зависят от курсов валют (например, в УТ 11 при оплатах в иностранной валюте), обязательно проверяйте дату курса в настройках документа. Расхождения даже в 1 копейку могут привести к ошибкам закрытия месяца.
1. Стандартные способы подсчёта сумм в документах 1С
Большинство документов в 1С уже содержат автоматически рассчитанные итоги — их не нужно считать вручную. Однако эти суммы не всегда отображаются там, где вы ожидаете, или могут быть скрыты в сводных таблицах. Вот где их искать:
- 📄 В шапке документа: Поля
Сумма документа,ИтогилиВсегообычно расположены в верхней части формы. Например, в Счёте на оплату или Реализации товаров. - 📊 В табличных частях: Суммы по строкам часто выводятся в колонках
Сумма,Сумма НДС,Всего с НДС. В УТ 11 это может быть таблицаТоварыилиУслуги. - 🔍 В подвалах таблиц: Многие документы имеют строку
Итоговнизу табличной части (например, в Поступлении товаров или Авансовом отчёте). - 📈 В печатных формах: Если сумма не видна на экране, попробуйте открыть печатную форму документа (кнопка
Печать→Печатная форма). Там часто выводятся детализированные итоги.
В типовых конфигурациях суммы рассчитываются автоматически при изменении данных. Однако если вы вручную редактировали строки (например, изменили количество или цену), итоги могут не пересчитаться. В этом случае:
- Нажмите кнопку
Записать(дискетка в панели инструментов). - Или воспользуйтесь командой
Пересчитать итоги(если она есть в менюДействия).
2. Ручное суммирование в табличных частях
Иногда требуется посчитать сумму по определённым строкам документа — например, только по товарам одной группы или с определённой скидкой. Для этого не обязательно экспортировать данные в Excel: в 1С есть встроенные инструменты.
Способ 1: Выделение строк и контекстное меню
- Откройте документ (например, Реализация товаров).
- Перейдите в табличную часть (например,
Товары). - Выделите нужные строки, удерживая
CtrlилиShift. - Щёлкните правой кнопкой мыши и выберите
Итоги по выделенным строкам. - В открывшемся окне вы увидите суммы по колонкам: количество, цена, сумма без НДС и т.д.
Способ 2: Фильтрация и группировка
Если нужно посчитать сумму по определённому признаку (например, только по товарам с НДС 20%):
- В табличной части нажмите на заголовок колонки (например,
Ставка НДС). - Выберите
Группировка→Добавить группировку. - Разверните группу с нужной ставкой НДС — внизу будет строка
Итого.
Проверьте, что документ записан (нет значка карандаша в заголовке)
Убедитесь, что табличная часть не отфильтрована (иконка воронки должна быть неактивной)
Для точных расчётов отключите округление в настройках документа (если это критично)
Сверьте единицы измерения — суммы по штукам и килограммам нельзя складывать напрямую-->
⚠️ Внимание: При ручном суммировании в документах с валютными операциями (например, в Поступлении импортных товаров) итоги могут отличаться от ожидаемых из-за курсовой разницы. Всегда проверяйте, в какой валюте отображаются суммы — в валюте документа или в рублёвом эквиваленте.
3. Использование отчётов для подсчёта сумм
Если сумму нужно посчитать не по одному документу, а по группе (например, по всем реализациям за месяц), удобнее воспользоваться отчётами. В типовых конфигурациях есть готовые инструменты:
- 📌 Отчёт "Анализ документа": Показывает детализацию сумм по строкам, включая НДС, скидки и наценки. Доступен через меню
Отчёты→Анализ документа(в УТ 11 и ERP 2.5). - 📊 Универсальный отчёт "Обороты между субконто": Позволяет сгруппировать суммы по контрагентам, договорам или номенклатуре. Подходит для Бухгалтерии 3.0.
- 🔎 Отчёт "Ведомость по документам": Выводит список документов с итогами за период. Полезен для сверки сумм по нескольким документам (например, все Счета-фактуры за квартал).
Пример: как посчитать сумму всех реализаций за месяц
- Откройте раздел
Продажи→Отчёты по продажам. - Выберите
Ведомость по документам реализации. - Установите период (например,
Январь 2026). - В настройках отчёта добавьте группировку по
КонтрагентуилиТипу документа. - В результатах будет колонка
Сумма документас итогами.
| Тип отчёта | Где найти | Для чего подходит | Ограничения |
|---|---|---|---|
Анализ документа |
Меню Отчёты в карточке документа |
Детализация сумм по строкам одного документа | Не показывает данные по нескольким документам |
Ведомость по документам |
Раздел Продажи или Покупки |
Суммы по группе документов за период | Не показывает детализацию по номенклатуре |
Обороты между субконто |
Раздел Отчёты → Стандартные отчёты |
Группировка сумм по аналитике (контрагенты, договора) | Требует знания плана счетов |
Если в отчёте не хватает колонки с нужной суммой, добавьте её через настройки: нажмите Показать настройки → Добавить поле и выберите СуммаДокумента или ВсегоСНДС.
4. Программный расчёт сумм (для разработчиков)
Если стандартные методы не подходят (например, нужно посчитать сумму с учётом сложной логики или интегрировать расчёт в обработку), придётся писать код на встроенном языке 1С. Ниже — универсальные примеры для разных задач.
Пример 1: Сумма по табличной части документа
Допустим, у нас есть документ ПоступлениеТоваровУслуг, и нужно посчитать сумму по колонке Сумма в табличной части Товары:
Сумма = 0;
Для Каждого СтрокаТоваров Из ДокументОбъект.Товары Цикл
Сумма = Сумма + СтрокаТоваров.Сумма;
КонецЦикла;
Пример 2: Сумма с учётом скидок и налогов
Если нужно посчитать итоговую сумму документа РеализацияТоваровУслуг с учётом всех наценок и НДС:
СуммаДокумента = ДокументОбъект.ИтогСумма; // Готовое поле в типовой конфигурации
// Или вручную:
Сумма = 0;
Для Каждого Строка Из ДокументОбъект.Товары Цикл
СуммаСтроки = Строка.Количество * Строка.Цена;
СуммаСтроки = СуммаСтроки * (1 - Строка.ПроцентСкидки / 100); // Учёт скидки
СуммаСтроки = СуммаСтроки * (1 + Строка.СтавкаНДС / 100); // Учёт НДС
Сумма = Сумма + СуммаСтроки;
КонецЦикла;
Пример 3: Сумма по нескольким документам
Чтобы посчитать сумму всех Счетов-фактур за текущий месяц:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(СчетФактураВыданный.СуммаДокумента) КАК ИтоговаяСумма
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
|ГДЕ
| СчетФактураВыданный.Дата МЕЖДУ &НачалоМесяца И &КонецМесяца";
НачалоМесяца = НачалоМесяца(ТекущаяДата());
КонецМесяца = КонецМесяца(ТекущаяДата());
Запрос.УстановитьПараметр("НачалоМесяца", НачалоМесяца);
Запрос.УстановитьПараметр("КонецМесяца", КонецМесяца);
Результат = Запрос.Выполнить();
ИтоговаяСумма = Результат.Выбрать().СуммаДокумента;
⚠️ Внимание: При программном расчёте сумм в документах с валютными операциями всегда указывайте курс пересчёта явно. Например:
СуммаВРублях = СуммаВВалюте * КурсВалютыНаДатаДокумента;
Если не указать дату курса, 1С может взять текущий курс, что приведёт к расхождениям.
Как узнать структуру документа для кода?
Чтобы понять, какие поля есть в документе (например, название табличной части или колонок), откройте его в режиме Конфигуратор (F1 → Открыть конфигуратор). Затем найдите объект в дереве метаданных и посмотрите его структуру. Альтернативно можно воспользоваться отладчиком: поставьте точку останова в коде и посмотрите значения полей через Вычислить выражение (Ctrl+Alt+F9).
5. Типичные ошибки при подсчёте сумм и как их избежать
Даже опытные пользователи 1С сталкиваются с ситуациями, когда "суммы не сходятся". Вот самые распространённые причины и способы их устранения:
- 🔄 Непересчитанные итоги: Если вы изменили количество или цену в строке, но сумма в шапке документа не обновилась, нажмите
Пересчитать итоги(менюДействия) или просто сохраните документ (Записать). - 💰 Округление: В настройках документа (или в параметрах учёта) может быть включено округление сумм до копеек. Это приводит к расхождениям в 1-2 копейки. Чтобы проверить, откройте
Настройки пользователя→Округление. - 📅 Неверная дата курса валюты: В документах с иностранной валютой сумма в рублях зависит от курса на дату документа. Если курс неверный, перепроверьте его в справочнике
Валюты. - 📦 Скрытые скидки или наценки: В УТ 11 и ERP 2.5 скидки могут применяться автоматически по маркетинговым акциям. Посмотрите закладку
Скидкив документе. - 🔗 Связанные документы: Сумма в Реализации может отличаться от суммы в Счёте-фактуре, если там указаны дополнительные услуги или корректировки. Сверяйте связанные документы через ссылку
На основании.
Критическая ошибка: Если сумма в документе не совпадает с суммой в печатной форме, проверьте шаблон печатной формы. В некоторых конфигурациях (например, в старых версиях Бухгалтерии 2.0) печатные формы могли содержать ошибки в формулах расчёта НДС.
Всегда сверяйте суммы в трёх местах: в шапке документа, в табличной части и в печатной форме. Если хоть в одном из них данные не совпадают, это признак ошибки.
6. Автоматизация подсчёта сумм: обработки и внешние отчёты
Если вам регулярно нужно считать суммы по документам с нестандартной логикой (например, только по товарам определённой категории или с учётом индивидуальных коэффициентов), имеет смысл создать собственную обработку. Вот как это сделать:
Способ 1: Внешняя обработка заполнения
Подходит для массового пересчёта сумм в документах. Пример кода для обработки, которая добавляет колонку с суммой в рублях по курсу на дату оплаты:
Процедура ЗаполнитьСуммыВРублях(Документы)
Для Каждого Док Из Документы Цикл
Курс = ПолучитьКурсВалют(Док.Валюта, Док.ДатаОплаты);
Для Каждого Строка Из Док.Товары Цикл
Строка.СуммаВРублях = Строка.Сумма * Курс;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Способ 2: Внешний отчёт с произвольной логикой
Если нужно анализировать суммы по сложным критериям (например, "посчитать сумму реализаций товаров красного цвета с наценкой более 20%"), создайте внешний отчёт:
- В
Конфигураторесоздайте новый объектВнешний отчёт. - Добавьте параметры (например,
ДатаНачала,ДатаОкончания,Контрагент). - Напишите запрос с нужной логикой (см. примеры в разделе 4).
- Добавьте вывод результатов в таблицу или диаграмму.
Способ 3: Регламентное задание
Если суммы нужно считать регулярно (например, ежедневно формировать сводку по оплатам), настройте регламентное задание:
- Откройте
Администрирование→Регламентные и фоновые задания. - Создайте новое задание с типом
Выполнить код. - Вставьте код расчёта сумм (аналогично примерам выше).
- Установите расписание (например, ежедневно в 18:00).
- Настройте отправку результатов на email (опционально).
⚠️ Внимание: При создании обработок для подсчёта сумм в регламентированных документах (например, в Счётах-фактурах или Актах выполненных работ) убедитесь, что ваша логика не противоречит законодательству. Например, сумма НДС должна рассчитываться строго по правилам ст. 168 НК РФ.
7. Специфика подсчёта сумм в разных конфигурациях 1С
Алгоритмы расчёта сумм могут отличаться в зависимости от конфигурации. Рассмотрим ключевые особенности:
| Конфигурация | Особенности подсчёта сумм | Где искать итоги | Типичные ошибки |
|---|---|---|---|
| Бухгалтерия 3.0 | Суммы зависят от плана счетов и субконто. НДС рассчитывается автоматически по ставкам. | В шапке документа (Сумма) и в проводках (Дебет/Кредит). |
Расхождения из-за неверных счетов учёта или субконто. |
| Управление Торговлей 11 | Суммы учитывают скидки, бонусы и маркетинговые акции. Есть отдельные поля для сумм с НДС и без. | В табличных частях (Товары, Услуги) и в печатных формах. |
Неучтённые скидки или неверные цены номенклатуры. |
| Зарплата и Управление Персоналом 3.1 | Суммы зависят от начислений, удержаний и вычетов. Рассчитываются по формулам. | В документах Начисление зарплаты (закладка Результаты). |
Ошибки в формулах расчёта или неверные данные о сотрудниках. |
| ERP 2.5 | Сложная логика с учётом резервов, ордеров и производственных затрат. | В закладках Финансы и Расчёты с контрагентами. |
Расхождения между производственными и бухгалтерскими суммами. |
В Управлении Торговлей 11 и ERP 2.5 суммы могут отличаться в зависимости от типа цен, указанного в документе. Например, если в Реализации выбрана цена Розничная, а в справочнике номенклатуры для товара установлена цена Оптовая, итоговая сумма будет неверной. Всегда проверяйте:
- Тип цен в шапке документа (
Цены и валюта). - Соответствие цен в справочнике
Номенклатура. - Наличие индивидуальных цен для контрагента (закладка
Цены и скидки).
В ЗУП 3.1 для проверки сумм начислений используйте отчёт Анализ начислений по сотрудникам. Он показывает детализацию по каждому виду начислений (оклад, премия, больничный) и удержаний (НДФЛ, алименты).
FAQ: Частые вопросы о подсчёте сумм в 1С
Как посчитать сумму по документу, если колонка с суммой отсутствует?
Если в табличной части нет колонки Сумма, её можно добавить:
- Откройте документ в режиме
Конфигуратор. - Найдите объект документа в дереве метаданных.
- Откройте табличную часть (например,
Товары). - Добавьте новое поле с типом
Числои именемСумма. - В модуле документа пропишите расчёт суммы в процедуре
ПриИзменениидля колонокКоличествоиЦена.
Без доступа к конфигуратору можно экспортировать данные в Excel (кнопка Выгрузить) и посчитать сумму там.
Почему сумма в документе не совпадает с суммой в печатной форме?
Это типичная проблема, которая возникает по следующим причинам:
- В печатной форме используется другой курс валюты (например, текущий вместо курса на дату документа).
- В шаблоне печатной формы прописана неверная формула расчёта (например, не учитывается НДС).
- Документ изменялся после формирования печатной формы, но она не обновлялась.
Решение:
- Обновите печатную форму (кнопка
Обновитьв окне предварительного просмотра). - Проверьте настройки печатной формы в
Конфигураторе(разделПечатные формы). - Сравните суммы в шапке документа и в табличной части — если они совпадают, проблема именно в печатной форме.
Как посчитать сумму по нескольким документам одного типа?
Используйте стандартные отчёты или напишите запрос:
- Для Бухгалтерии 3.0: отчёт
Обороты между субконтос группировкой по документам. - Для УТ 11: отчёт
Ведомость по документам реализации. - Универсальный способ — запрос на языке 1С:
ВЫБРАТЬ
ДокументРеализация.Ссылка КАК Документ,
СУММА(ДокументРеализация.СуммаДокумента) КАК ИтоговаяСумма
ИЗ
Документ.РеализацияТоваровУслуг КАК ДокументРеализация
ГДЕ
ДокументРеализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ДокументРеализация.Ссылка
Можно ли посчитать сумму по документу с учётом будущих платежей?
Да, но для этого нужно использовать механизм графика платежей (в УТ 11 и ERP 2.5) или регламентные операции (в Бухгалтерии 3.0). Пример:
- Откройте документ Реализация товаров.
- Перейдите на закладку
ОплатаилиГрафик платежей. - Добавьте будущие платежи с указанием дат и сумм.
- Итоговая сумма с учётом графиков будет отображаться в поле
К оплатеилиОжидаемая сумма.
Для программного расчёта используйте объект ГрафикПлатежей:
ОжидаемаяСумма = 0;
Для Каждого Платеж Из ДокументОбъект.ГрафикПлатежей Цикл
ОжидаемаяСумма = ОжидаемаяСумма + Платеж.Сумма;
КонецЦикла;
Как экспортировать суммы из документов в Excel для дальнейшего анализа?
Способы экспорта:
- Стандартный экспорт: в документе нажмите
Ещё→Выгрузить→Excel. - Через отчёт: сформируйте отчёт (например,
Ведомость по документам), затем экспортируйте его в Excel. - Программно: используйте объект
ExcelДокумент:
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
Лист.Cells(1,1).Value = "Документ";
Лист.Cells(1,2).Value = "Сумма";
СтрокаExcel = 2;
Для Каждого Док Из Документы Цикл
Лист.Cells(СтрокаExcel,1).Value = Док.Номер;
Лист.Cells(СтрокаExcel,2).Value = Док