Работа в программе 1С:Управление нашей фирмой (УНФ) часто сопряжена с оформлением заказов покупателей, где точность взаиморасчетов имеет критическое значение. Распространенной является ситуация, когда общая сумма документа кажется верной, но после проведения, записи или смены статуса на Завершен система автоматически добавляет к итогу 1-2 копейки. Рассмотрим подробно, почему это происходит, и проанализируем механизмы решения данной проблемы.
Первое, что необходимо понять: программа 1С всегда стремится соблюсти жесткую математическую зависимость в табличной части Запасы. Формула расчета строки выглядит следующим образом: Цена * Количество = Сумма. Проанализируем ситуацию на конкретном примере из практики пользователей.
Допустим, у нас есть заказ на 6 единиц товара, и мы хотим получить итоговую сумму 18 730,00 рублей. Если мы разделим эту сумму на количество (18730 / 6), мы получим бесконечную дробь: 3121,666666.... Поскольку стандартная точность цены в УНФ составляет два знака после запятой, система вынуждена округлить цену до 3121,67.
Теперь проведем обратный расчет, который система выполняет при каждой записи документа:
3121,67 (Цена) * 6 (Количество) = 18 730,02 (Сумма)
Эти "лишние" 2 копейки возникают именно в момент перезаписи документа или смены его статуса, так как программа заново инициализирует пересчет табличной части. Даже если вы вручную исправили итоговую сумму, при нажатии кнопки Провести и закрыть сработает стандартный обработчик, который перемножит цену на количество и вернет математически "правильный", по мнению системы, результат.
Еще один важный фактор — это способ расчета налога. В 1С:УНФ существует два режима работы с НДС, которые выбираются в карточке Вид цен или непосредственно в документе:
Проанализируем ситуацию: если в настройках договора или вида цен установлен расчет НДС сверху, а в заказе вы пытаетесь подогнать итоговую сумму с учетом налога до круглого числа, копейки будут появляться из-за округления суммы налога по каждой строке. Если строк в заказе много, погрешность округления каждой строки накапливается в общем итоге документа.
Одним из самых корректных способов убрать лишние копейки, не нарушая логику Цена * Количество, является использование колонки Скидка. Разберем по шагам, как это сделать:
Запасы найдите колонку Скидка сумма (если её нет, включите отображение через настройки формы).(Цена * Количество) - Скидка.В этом случае математическая связь не нарушается, и при смене статуса заказа сумма останется неизменной.
Если копейки появляются постоянно, стоит проверить настройки Вида цен, который используется в заказе. Перейдем в раздел Продажи — Виды цен и обратим внимание на следующие параметры:
Если специфика вашего бизнеса требует точного соответствия суммы без использования скидок (например, при работе с государственными контрактами), можно рассмотреть вариант увеличения разрядности цены. В конфигураторе 1С можно изменить точность хранения цены с 2 до 3 или 4 знаков после запятой. Рассмотрим пример логики, которая могла бы быть реализована в коде при расчете:
// Пример логики пересчета суммы при изменении цены
Процедура ПриИзмененииРеквизитовСтроки(СтрокаТабличнойЧасти)
СуммаБезНДС = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
// Округление до 2 знаков происходит здесь
СтрокаТабличнойЧасти.Сумма = Окр(СуммаБезНДС, 2);
КонецПроцедуры
Увеличение точности позволит хранить цену 3121,6667, что при умножении на 6 даст ровно 18 730,00. Однако помните, что это требует внесения изменений в конфигурацию и может усложнить печать документов, так как стандартные формы ожидают 2 знака в цене.
Часто путаница возникает из-за того, что в Заказе покупателя НДС стоит "в сумме", а в созданной на его основании Расходной накладной или Счете-фактуре — "сверху". Рассмотрим, как избежать этого расхождения:
Цены и валюта в нижней части документа.Счет-фактура налог рассчитывается "сверху", то и в Заказе лучше использовать этот же метод, чтобы видеть реальную итоговую сумму сразу.Подводя итог, можно сказать, что появление копеек в 1С:УНФ — это не программная ошибка, а следствие строгого соблюдения арифметических правил. Для быстрого исправления ситуации используйте механизм ручных скидок или подбирайте цену таким образом, чтобы результат умножения на количество не давал дробного остатка за пределами двух знаков.