Учет и Финансы · 12 мин
1С округляет копейки: как исправить
Почему 1С округляет копейки в ценах, итогах документов и выписках. Разбираем настройки точности цен, сумм и валют, типичные ошибки и способы исправления.
Расхождение в копейках в 1С обычно проявляется там, где цена умножается на количество и накладывается НДС: в итогах реализаций, счетах-фактурах, ценах номенклатуры, курсовых пересчётах и печатных формах. Первое, что стоит проверить, — разрядность цен и сумм в настройках плана счетов, регистров и констант (например, хранение цен с двумя знаками вместо четырёх), а также правила округления валют и НДС: в большинстве случаев «ошибка» оказывается следствием округления промежуточных значений, а не сбоем арифметики программы.
Копеечные расхождения опасны не сами по себе, а последствиями: счёт не сходится с накладной на одну копейку, банковская выписка не закрывает документ оплаты, взаиморасчёты «висят» на 0,01 рубля, а в отчёте по НДС появляется разница между книгой покупок и книгой продаж. Поэтому исправлять округление нужно не «в лоб» правкой суммы, а через понимание того, где именно оно возникает.
Ниже разобраны основные источники округления в типовых конфигурациях (1С:Бухгалтерия, Управление торговлей, ERP, Комплексная автоматизация), способы диагностики и конкретные шаги исправления — от настроек интерфейса до изменения разрядности в конфигураторе.
Где именно 1С округляет: определяем точку возникновения
Прежде чем что-то менять, важно понять, на каком этапе теряются копейки. Округление при отображении (число хранится точно, но выводится без копеек) — безобидная ситуация, решаемая форматом. Округление при расчёте (цена умножается на количество, а итог не сходится) — уже вопрос настроек точности. Округление при проведении (в регистрах сумма отличается от суммы документа) — самый неприятный вариант, требующий перепроведения.
Простой тест: введите в документ цену 10,125 и количество 3. Если в поле цены значение сразу превратилось в 10,13 — округление настроено на уровне ввода (точность цены). Если цена сохранилась, но сумма строки стала 30,38 вместо 30,375 — округляется сумма строки. Если в документе всё верно, а в печатной форме копеек нет — проблема только в формате вывода.
Проверьте точность цены в типе цен или валюте документа
Проверьте порядок расчёта суммы и точность сумм в конфигурации
Проверьте формат вывода суммы в макете или настройках печати
Сравните сумму документа с движениями, потребуется перепроведение
Настройка точности цен и сумм в пользовательском режиме
В типовых конфигурациях есть штатные настройки, которые управляют точностью без вмешательства в код. В «1С:Бухгалтерии 8» разрядность цен задаётся в разделе «Администрирование → Параметры учёта» (в ряде релизов — в настройках плана счетов или общих настройках). В «Управлении торговлей» и ERP точность цены привязана к виду цен: откройте нужный вид цен и проверьте поле «Точность округления» и вариант округления (в большую сторону, в меньшую, по арифметическим правилам).
Отдельно проверьте валюту документа. В справочнике «Валюты» у рубля может быть задана разрядность дробной части. Если для рубля стоит два знака, а для валютного договора — четыре, то при пересчёте сумм по курсу промежуточные значения округляются по-разному, и копейки «уезжают». Приведите разрядность к единому принципу: для рублёвых документов достаточно двух знаков в итогах, но цены в прайсах часто хранят с четырьмя знаками, чтобы итог по строке сходился.
- 1Воспроизведите проблему на копии базы или тестовом документе и зафиксируйте, где округляется значение
- 2Проверьте точность цены в виде цен / типе цен (УТ, ERP) или параметры учёта (БП)
- 3Проверьте разрядность валюты документа в справочнике валют
- 4Проверьте формат вывода в печатной форме документа
- 5Исправьте настройку и перезаполните цены в проблемном документе
- 6Проверьте, что итог документа, НДС и печатная форма сходятся до копейки
Округление в ценах и скидках торговых документов
Самый частый сценарий в торговле: задана скидка в процентах, цена со скидкой получается дробной, 1С округляет её до копеек, и сумма строки перестаёт равняться ожидаемой. Например, цена 100 руб., скидка 15 % — цена со скидкой 85 руб. ровно, но при цене 33,33 и скидке 7 % результат дробный, и в зависимости от того, что округляется (цена или сумма), итог по документу разойдётся с расчётом менеджера на калькуляторе.
Здесь действует простое правило: 1С сначала считает сумму строки, потом при необходимости пересчитывает цену как сумму, делённую на количество. Если точность цены меньше точности промежуточного расчёта, цена «грязнится». Решение — либо увеличить точность хранения цены до 3–4 знаков, либо принять, что цена в документе может быть дробной, а контроль вести по сумме строки и сумме документа.
Копеечные разницы в НДС и взаиморасчётах
НДС в 1С считается построчно: для каждой строки документа сумма налога округляется до копеек, а затем строки складываются. Если считать НДС от общей суммы документа одним действием, результат может отличаться на несколько копеек. Это не ошибка — это следствие построчного метода, который соответствует требованиям к заполнению счетов-фактур. Но при сверке с контрагентом, считающим «от итога», разница будет.
Во взаиморасчётах копеечные остатки возникают из-за курсовых разниц и частичных оплат: документ реализации по курсу на дату отгрузки, оплата — по курсу на дату платежа, а рублевая сумма задолженности пересчитывается. В результате после полной оплаты в валюте на счёте расчётов «висит» 0,01 руб. Такие остатки закрываются документом «Корректировка долга» (списание задолженности) или корректировкой расчётов — в зависимости от учётной политики.
Сверка НДС: как проверить
Откройте документ, сформируйте печатную форму счёта-фактуры и сложите суммы НДС по строкам вручную. Если сумма налога в шапке равна сумме построчных округлений — всё корректно. Если отличается — вероятно, документ заполнялся вручную с правкой суммы НДС, и эту правку нужно найти и устранить.
Округление в печатных формах и форматах чисел
Отдельный класс проблем — когда данные в базе точные, а на печати или в отчёте копейки пропадают. В управляемых формах и макетах за вывод отвечает строка формата. Типичная запись в макете выглядит как ЧЦ=15; ЧДЦ=2 — пятнадцать знаков всего, два после запятой. Если в конкретном макете стоит ЧДЦ=0, сумма выведется без копеек, хотя в документе они есть.
В отчётах на СКД формат задаётся в настройках поля на вкладке «Наборы данных» или «Настройки». Проверьте оформление поля суммы: если там задана разрядность дробной части равной нулю, отчёт покажет округлённые значения, а итоги могут не сойтись с детализацией.
Формат(СуммаДокумента, "ЧЦ=15; ЧДЦ=2; ЧРД=,; ЧРГ=' '")Изменение разрядности в конфигураторе: когда настроек не хватает
Если штатная точность (обычно 2 знака у сумм и 2–4 у цен) не подходит — например, вы торгуете товаром с ценой за единицу меньше копейки или ведёте расчёты в условных единицах с высокой точностью — разрядность меняется в конфигураторе. Это делается у соответствующих реквизитов и ресурсов регистров: у числового типа задаются длина и точность.
Определение типа с точностью в конфигураторе:
// Квалификаторы числа: длина 15, точность 4
ТипЧисло = Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(15, 4, ДопустимыйЗнак.Неотрицательный));
Критически важно: изменение разрядности реквизитов и ресурсов требует реструктуризации базы. На больших таблицах это долгая операция, выполняемая только в монопольном режиме и только после полной резервной копии. Кроме того, для типовых конфигураций на поддержке изменение состава реквизитов усложнит обновление — изменённые объекты придётся сопоставлять вручную при каждом релизе.
Исправление уже накопленных расхождений
Если копеечные разницы уже накопились в учёте, действуйте по нарастающей. Сначала перепроведите проблемные документы за период — часто расхождения возникают после ручного изменения сумм или обменов, и перепроведение восстанавливает расчёт по правилам программы. В «1С:Бухгалтерии» для этого есть обработка «Групповое перепроведение документов».
Второй шаг — закрытие копеечных остатков по взаиморасчётам через «Корректировку долга» с видом операции списания или проведением взаимозачёта на сумму остатка. Третий шаг — исправление НДС: если расхождение попало в книгу покупок или продаж закрытого периода, корректировка делается через корректировочные записи текущим периодом, а не правкой закрытого.
Как проверить, что проблема решена
После изменения настроек создайте новый тестовый документ с «неудобными» значениями: дробная цена со скидкой, количество больше единицы, ставка НДС 20 %. Проверьте три уровня: сумма строки равна цене, умноженной на количество; итог документа равен сумме строк; печатная форма и счёт-фактура показывают те же значения до копейки.
Затем проведите документ и сформируйте отчёт по движениям (или оборотно-сальдовую ведомость по счету расчётов): сумма в регистрах должна совпадать с суммой документа. Только когда все три уровня сходятся, настройку можно считать завершённой.
Как проверить результат
Равно сумме строки до копейки
Разница в копейках уже на уровне строки
Полное совпадение
Итог отличается — где-то ручная правка
Копейки совпадают с документом
На печати округление — проблема формата макета
Суммы в регистрах равны сумме документа
Расхождение после проведения — нужно перепроведение
Что важно запомнить
Округление копеек в 1С — почти всегда следствие настроек точности цен, валют, скидок или формата вывода, а не сбоя. Диагностируйте уровень округления, исправляйте настройку, а не сумму, и контролируйте результат на трёх уровнях: строка, документ, регистры. Изменение разрядности в конфигураторе — крайняя мера, только с копией базы.
Частые вопросы
Почему сумма в документе не сходится с расчётом на калькуляторе ровно на копейку?
1С округляет цену со скидкой или сумму строки до копеек по заданной точности, а калькулятор считает без округления промежуточных значений. Проверьте точность цены в виде цен и порядок расчёта: если контроль вести по сумме строки, а не по цене, расхождение исчезает из расчётов.
Можно ли в 1С хранить цены с тремя или четырьмя знаками после запятой?
Да. В торговых конфигурациях точность цены настраивается в виде цен, а в бухгалтерии — в параметрах учёта. Если штатной точности не хватает, разрядность реквизита увеличивается в конфигураторе, но это требует реструктуризации базы и усложняет обновление типовой конфигурации.
После полной оплаты по счёту расчётов висит 0,01 рубля. Что делать?
Это копеечная разница от курсовых пересчётов или округления. Оформите документ «Корректировка долга» с операцией списания задолженности на сумму остатка. Не правьте суммы исходных документов реализации или оплаты — это исказит первичку.
Почему НДС в счёте-фактуре отличается от НДС, посчитанного от общей суммы?
1С считает НДС построчно с округлением каждой строки до копеек, а затем суммирует. Расчёт «от итога» одним действием даёт другой результат на копейку-две. Построчный метод соответствует правилам заполнения счетов-фактур, поэтому эталоном считается именно он.
На печати сумма без копеек, а в документе с копейками. Это ошибка?
Нет, это настройка формата вывода в макете печатной формы. Проверьте параметр формата суммы в макете: разрядность дробной части должна быть равна двум (ЧДЦ=2). Данные в базе при этом хранятся корректно и исправления не требуют.
Опасно ли менять разрядность чисел в конфигураторе?
Да, это операция повышенного риска: она запускает реструктуризацию таблиц базы, требует монопольного доступа и полной резервной копии. На типовой конфигурации изменённые объекты дополнительно усложнят обновления. Сначала исчерпайте пользовательские настройки точности — в большинстве случаев их достаточно.