Работа в двух конфигурациях одновременно — 1С:Управление торговлей 11.4 и 1С:Бухгалтерия предприятия 3.0 — часто преподносит сюрпризы в виде расхождений в рублевых суммах документов, оформленных в иностранной валюте — для этого есть инструмент для выявления расхождений между УТ и БП. Казалось бы, курсы валют в обеих базах идентичны, суммы в EUR совпадают до цента, но итоговая рублевая сумма реализации или НДС отличается на одну или несколько копеек. В этой статье мы подробно разберем, почему это происходит, и проанализируем методы решения данной проблемы.
Разберем фундаментальное различие в том, как системы получают итоговые цифры. Проанализируем стандартное поведение типовых конфигураций. В 1С:Бухгалтерии принят «строчный» метод учета: система рассчитывает рублевый эквивалент для каждой строки табличной части (Цена * Количество * Курс), округляет результат до копеек и суммирует эти значения для получения итога по документу.
В 1С:Управлении торговлей алгоритм зачастую работает «от документа»: система сначала суммирует валютный итог по всей реализации, а затем умножает этот итог на курс валюты. Рассмотрим на примере: если в документе 100 строк, и в каждой из них возникает погрешность округления в 0,001 копейки, то в БП эта погрешность может накопиться или быть отсечена на уровне каждой строки, в то время как в УТ она проявится только один раз в финальном расчете. Именно поэтому мы видим разницу в итоговых суммах 343 862,17 и 343 862,18.
Выясним причину, связанную с законодательством. Согласно ПБУ 3/2006, выручка в части, оплаченной авансом, фиксируется по курсу на дату аванса, а в оставшейся части — по курсу на дату отгрузки. Если в УТ 11 и БП 3.0 механизмы зачета авансов сработали по-разному, итоговые рублевые суммы никогда не совпадут.
Проверим следующие моменты в наших базах:
Посмотрим на настройки налогообложения. В УТ 11 в форме «Цены и валюта» можно указать вариант «НДС в сумме» или «НДС сверху». В БП 3.0 при проведении валютных документов система обязана рассчитать рублевый НДС от рублевой налоговой базы. Если последовательность операций «Валюта -> Рубли -> НДС» и «Валюта -> НДС (вал) -> Рубли» нарушена или отличается между базами, возникнет разница в распределении копеек между чистой стоимостью и налогом. Для оперативного выявления таких погрешностей пригодится отчет для проверки сумм НДС в документах реализации.
Рассмотрим пример кода, который помогает принудительно выравнивать суммы в БП при загрузке данных или проведении, если бухгалтерия требует полного соответствия первичке из УТ. Проанализируем процедуру в модуле УчетДоходовРасходов или в обработке проведения документа РеализацияТоваровУслуг. Один из вариантов — использование корректировки через сравнение с внешними данными (например, из регистра сверки):
// Пример корректировки рублевых сумм для совпадения с УТ
ТаблицыРеализация = УчетДоходовРасходов.ПодготовитьТаблицыВыручкиОтРеализации(ПараметрыПроведения.РеализацияТаблицаДокумента, ТаблицаВзаиморасчеты, ТаблицаСписанныеТовары, ПараметрыПроведения.Реквизиты, Отказ);
ТаблицаСобственныеТоварыУслуги = ТаблицыРеализация.СобственныеТоварыУслуги;
// Выполняем проверку по регистру сверки или входящим данным
Если Рег.Количество() = 1 Тогда
ЗаписьСверки = Рег[0];
ИтогНДС_Руб = ТаблицаСобственныеТоварыУслуги.Итог("СуммаНДСРуб");
ИтогБезНДС_Руб = ТаблицаСобственныеТоварыУслуги.Итог("СуммаБезНДСРуб");
Если НЕ ИтогНДС_Руб = ЗаписьСверки.дельтаНДС Тогда
ДельтаНДС = ЗаписьСверки.дельтаНДС - ИтогНДС_Руб;
ДельтаСумма = ЗаписьСверки.дельтаСумма - ИтогБезНДС_Руб;
// Корректируем первую строку таблицы для выравнивания общего итога
ТаблицаСобственныеТоварыУслуги[0].СуммаНДСРуб = ТаблицаСобственныеТоварыУслуги[0].СуммаНДСРуб + ДельтаНДС;
ТаблицаСобственныеТоварыУслуги[0].СуммаБезНДСРуб = ТаблицаСобственныеТоварыУслуги[0].СуммаБезНДСРуб + ДельтаСумма;
КонецЕсли;
// Выравнивание сумм БУ и НУ
Если НЕ ТаблицаСобственныеТоварыУслуги.Итог("СуммаБУ") = (ТаблицаСобственныеТоварыУслуги.Итог("СуммаБезНДСРуб") + ТаблицаСобственныеТоварыУслуги.Итог("СуммаНДСРуб")) Тогда
ТаблицаСобственныеТоварыУслуги[0].СуммаБУ = ТаблицаСобственныеТоварыУслуги[0].СуммаБУ + ДельтаСумма;
ТаблицаСобственныеТоварыУслуги[0].СуммаНУ = ТаблицаСобственныеТоварыУслуги[0].СуммаНУ + ДельтаСумма;
КонецЕсли;
КонецЕсли;
Данный подход позволяет «подтянуть» итоги БП под значения УТ, однако он требует осторожности при работе с налоговым учетом.
Рассмотрим пошагово, что нужно сделать пользователю или администратору, чтобы минимизировать количество таких ситуаций:
Зачет оплаты (поможет автоматическая сверка взаиморасчетов между базами 1С). Проанализируем, какие именно платежные документы система видит как авансы. Сравним этот список с проводками по счету 62.22 в БП. Суммы в валюте и рублевый эквивалент по каждому авансу должны совпадать до копейки.Операция, введенная вручную с видом Корректировка регистров. Это позволит поправить рублевые остатки на счетах расчетов, не затрагивая сложную логику валютного пересчета.EnterpriseData, помните, что БП часто пересчитывает присланные валютные суммы по своему внутреннему курсу. Рекомендуется сначала загружать курсы валют в обе базы из одного источника, и только потом выполнять обмен документами.Подведем итог: Полностью избежать расхождений в копейках при валютных расчетах в разных конфигурациях 1С крайне сложно из-за фундаментальных различий в архитектуре (построчный расчет в БП против документного в УТ). Основная задача — обеспечить идентичность цепочки документов (аванс -> отгрузка) и настроек договоров. В случаях, когда алгоритмы дают сбой, ручная корректировка суммы НДС в БП или использование программных «дотягиваний» сумм в расширении конфигурации остаются самыми эффективными методами.