При оформлении поступлений и реализаций в иностранной валюте пользователи часто сталкиваются с ситуацией, когда итоговая рублевая сумма в печатной форме ТОРГ-12 отличается от суммы проводок регламентированного учета на 1 копейку. Разберем технические причины этого явления и рассмотрим надежные варианты решения проблемы без нарушения целостности учета.
Проанализируем программные механизмы типовой конфигурации. Расхождение возникает из-за фундаментальной разницы в логике пересчета валютных сумм в рубли при проведении документа и при выводе данных на печать.
1. Как рассчитывается сумма при формировании проводок:
В модулях проведения пересчет валюты в регламентированную валюту выполняется построчно. Каждая позиция табличной части пересчитывается по курсу и немедленно округляется до 2 знаков после запятой:
// Пример логики расчета рублевой суммы для бухгалтерской проводки
Сумма = ?(СуммаВключаетНДС, СтрокаТаблицы.Стоимость - СтрокаТаблицы.НДС, СтрокаТаблицы.Стоимость);
СуммаРуб = Окр((Сумма * ПоКурсуНач * ПоКратностьКон) / (ПоКурсуКон * ПоКратностьНач), 2);
При таком подходе итоговая сумма по документу в проводках представляет собой простую сумму уже округленных рублевых значений по каждой строке.
2. Как рассчитывается сумма в печатной форме ТОРГ-12:
Алгоритм печати часто использует пропорциональное распределение общей суммы документа. Сначала вычисляется общая рублевая сумма документа путем умножения валютного итога на курс, после чего эта сумма распределяется по строкам с помощью коэффициентов:
// Пример логики расчета суммы в типовом макете ТОРГ-12
Сумма = Окр(ИсхСумма * МассивКоэф[СтрокаТаблицы.ИсходныйИндекс] / СуммаКоэф, Точность, 1);
В результате при умножении дробных чисел (цены, ставки НДС и курса валюты с четырьмя знаками) математическое округление суммы строк не всегда совпадает с округлением итога, что приводит к возникновению погрешности в 1 копейку.
Самый безопасный и методически правильный способ с точки зрения программиста — исключить повторный пересчет валюты в печатной форме. Печатный документ должен точно отражать то, что зафиксировано в регистрах учета.
Разберем по шагам создание внешней печатной формы:
Хозрасчетный (или к регистрам накопления ВзаиморасчетыСКонтрагентами и ПартииТоваровНаСкладах).ВнешниеОбработки.Такой подход гарантирует, что бумажный документ будет на 100% совпадать с данными бухгалтерского и налогового учета компании.
Если копеечные расхождения уже привели к образованию висящих остатков на счетах расчетов (например, счета 60 или 62), когда валютный долг закрыт в ноль, а в рублях осталась 1 копейка, используем типовые инструменты выравнивания:
КорректировкаДолга с видом операции Списание задолженности.Если документов с валютными расчетами много, регулярная ручная корректировка отнимает много времени. В этом случае разработаем сервисную обработку для бухгалтера:
СуммаВалОстаток = 0 И СуммаОстаток <> 0 при условии, что ABS(СуммаОстаток) <= 0.05.ОперацияБух (или КорректировкаДолга), списывая зависшие копейки на счет 91.Важное предупреждение: крайне не рекомендуется переписывать типовые алгоритмы проведения документов по валютным операциям. Изменение правил округления в модуле проведения одного документа неизбежно приведет к рассинхронизации данных в регистрах НДС (книге покупок/продаж), регистрах партионного учета и взаиморасчетов.