Почему в ТОРГ-12 сумма на 1 копейку отличается от проводок по валютным операциям и как это исправить?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При оформлении поступлений и реализаций в иностранной валюте пользователи часто сталкиваются с ситуацией, когда итоговая рублевая сумма в печатной форме ТОРГ-12 отличается от суммы проводок регламентированного учета на 1 копейку. Разберем технические причины этого явления и рассмотрим надежные варианты решения проблемы без нарушения целостности учета.

Анализ причины: различия в алгоритмах расчета сумм

Проанализируем программные механизмы типовой конфигурации. Расхождение возникает из-за фундаментальной разницы в логике пересчета валютных сумм в рубли при проведении документа и при выводе данных на печать.

1. Как рассчитывается сумма при формировании проводок:

В модулях проведения пересчет валюты в регламентированную валюту выполняется построчно. Каждая позиция табличной части пересчитывается по курсу и немедленно округляется до 2 знаков после запятой:


// Пример логики расчета рублевой суммы для бухгалтерской проводки
Сумма = ?(СуммаВключаетНДС, СтрокаТаблицы.Стоимость - СтрокаТаблицы.НДС, СтрокаТаблицы.Стоимость);
СуммаРуб = Окр((Сумма * ПоКурсуНач * ПоКратностьКон) / (ПоКурсуКон * ПоКратностьНач), 2);

При таком подходе итоговая сумма по документу в проводках представляет собой простую сумму уже округленных рублевых значений по каждой строке.

2. Как рассчитывается сумма в печатной форме ТОРГ-12:

Алгоритм печати часто использует пропорциональное распределение общей суммы документа. Сначала вычисляется общая рублевая сумма документа путем умножения валютного итога на курс, после чего эта сумма распределяется по строкам с помощью коэффициентов:


// Пример логики расчета суммы в типовом макете ТОРГ-12
Сумма = Окр(ИсхСумма * МассивКоэф[СтрокаТаблицы.ИсходныйИндекс] / СуммаКоэф, Точность, 1);

В результате при умножении дробных чисел (цены, ставки НДС и курса валюты с четырьмя знаками) математическое округление суммы строк не всегда совпадает с округлением итога, что приводит к возникновению погрешности в 1 копейку.

Способ 1. Создание внешней печатной формы с забором данных из проводок

Самый безопасный и методически правильный способ с точки зрения программиста — исключить повторный пересчет валюты в печатной форме. Печатный документ должен точно отражать то, что зафиксировано в регистрах учета.

Разберем по шагам создание внешней печатной формы:

  1. Выгрузим типовую печатную форму ТОРГ-12 во внешнюю обработку.
  2. В модуле объекта внешней печатной формы заменим алгоритм расчета рублевых сумм: вместо формулы распределения обратимся запросом к движениям документа по регистру бухгалтерии Хозрасчетный (или к регистрам накопления ВзаиморасчетыСКонтрагентами и ПартииТоваровНаСкладах).
  3. Заполним колонки печатной формы фактическими суммами из набора записей регистра.
  4. Подключим обработку через справочник ВнешниеОбработки.

Такой подход гарантирует, что бумажный документ будет на 100% совпадать с данными бухгалтерского и налогового учета компании.

Способ 2. Списание копеечных разниц документом «Корректировка долга»

Если копеечные расхождения уже привели к образованию висящих остатков на счетах расчетов (например, счета 60 или 62), когда валютный долг закрыт в ноль, а в рублях осталась 1 копейка, используем типовые инструменты выравнивания:

  1. Создадим документ КорректировкаДолга с видом операции Списание задолженности.
  2. Укажем контрагента и договор.
  3. Заполним табличную часть остатками взаиморасчетов.
  4. В строке с расхождением вручную укажем сумму списания 0.01 руб. при нулевой сумме в валюте расчетов.
  5. В качестве счета списания выберем счет 91.02 (Прочие расходы) или 91.01 (Прочие доходы) со статьей списания курсовых/округлительных разниц.

Способ 3. Автоматизация закрытия копеек обработкой

Если документов с валютными расчетами много, регулярная ручная корректировка отнимает много времени. В этом случае разработаем сервисную обработку для бухгалтера:

  1. Обработка формирует запрос к остаткам по счетам 60 и 62 в разрезе контрагентов, договоров и документов расчетов.
  2. Устанавливается условие отбора: СуммаВалОстаток = 0 И СуммаОстаток <> 0 при условии, что ABS(СуммаОстаток) <= 0.05.
  3. По найденным расхождениям обработка автоматически формирует документ ОперацияБух (или КорректировкаДолга), списывая зависшие копейки на счет 91.

Важное предупреждение: крайне не рекомендуется переписывать типовые алгоритмы проведения документов по валютным операциям. Изменение правил округления в модуле проведения одного документа неизбежно приведет к рассинхронизации данных в регистрах НДС (книге покупок/продаж), регистрах партионного учета и взаиморасчетов.

← На главную