Почему расчет рублёвого покрытия в 1С:Бухгалтерии и 1С:УНФ может различаться?

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

Мы часто сталкиваемся с ситуациями, когда автоматизированные системы учета, несмотря на общие задачи, по-разному обрабатывают одни и те же операции. Один из таких случаев – расхождение в расчёте рублёвого покрытия по валютным документам между 1С:Бухгалтерией (БП) и 1С:Управлением нашей фирмой (УНФ). Рассмотрим эту проблему подробно, выясним её причины и проанализируем, как эти различия влияют на учет.

Суть проблемы: разные суммы в рублях для одного документа

Представим типовую ситуацию. У нас есть документ Реализация товаров, сумма которого в валюте составляет 834 856,10 единиц, а курс на момент реализации – 13,4168. Часть этой суммы была предоплачена: 82 228,66 валютных единиц по курсу 13,4098 и еще 141 488,32 валютных единиц также по курсу 13,4098. В результате, общая предоплата в рублях составила 3 000 000.00.

На момент оформления реализации остаток задолженности в валюте составляет 611 139,12. И вот тут начинаются расхождения:

  1. По мнению 1С:Бухгалтерии, рублевый эквивалент этой задолженности рассчитывается как 611 139,12 * (11 201 097,32 / 834 856,1) = 8 199 531,34. Здесь 11 201 097,32 – это общая сумма документа в рублях, которая, по-видимому, была рассчитана ранее. Фактически, используется средний курс документа, который очень точно (13,41679999703) применяется к остатку валюты.
  2. По мнению 1С:УНФ, расчет происходит проще: 611 139,12 * 13,41680000000 = 8 199 531,35. Здесь используется прямой курс документа, без дополнительного пересчёта общего рублевого эквивалента.

Это приводит к тому, что даже в печатной форме УПД общая сумма по документу в Бухгалтерии может быть 11 199 531,34, а в УНФ – 11 199 531,35. Разница, хоть и незначительная, но создает вопросы к корректности учета и отчетности.

Анализ кода и алгоритмов расчета

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

В 1С:Бухгалтерии за расчет отвечает фрагмент кода в модуле УчетВзаиморасчетов, строки 4941-4945:


КоэффициентРуб = ?(НЕ СтрокаДокумента.РасчетыВВалюте, 1, ?(СтрокаДокумента.СуммаВзаиморасчетов = 0, 0, СтрокаДокумента.СуммаРуб / СтрокаДокумента.СуммаВзаиморасчетов));
КонецЕсли;
СтрокаВзаиморасчетов.СуммаРуб = Окр(НераспределеннаяСумма * КоэффициентРуб, 2);

Здесь мы видим, что коэффициент для пересчета в рубли (КоэффициентРуб) вычисляется как отношение уже рассчитанной рублевой суммы документа (СтрокаДокумента.СуммаРуб) к валютной сумме (СтрокаДокумента.СуммаВзаиморасчетов). Это означает, что БП изначально считает общую сумму документа в рублях (вероятно, по курсу документа), а затем этот "средний" коэффициент применяет для распределения по строкам или для остатка задолженности. Результат затем округляется до двух знаков после запятой.

В 1С:УНФ же используется более прямой подход. Фрагмент кода из модуля РасчетыПроведениеДокументов, строки 5350-5352, выглядит так:


Движение.Сумма = Движение.СуммаВал * ДополнительныеСвойства.КурсДокумента * ДополнительныеСвойства.КратностьВалютыУчета / (?(ДополнительныеСвойства.КратностьДокумента = 0, 1, ДополнительныеСвойства.КратностьДокумента) * ?(ДополнительныеСвойства.КурсВалютыУчета = 0, 1, ДополнительныеСвойства.КурсВалютыУчета));

Здесь рублевая сумма (Движение.Сумма) рассчитывается путём прямого умножения валютной суммы (Движение.СуммаВал) на курс документа (ДополнительныеСвойства.КурсДокумента) с учетом кратности валют. Такой подход является более "прямым" и, казалось бы, логичным, но он может давать отличающиеся результаты из-за особенностей округления и распределения.

Различия в распределении сумм по строкам

Еще одно интересное наблюдение заключается в том, как общая сумма документа в рублях распределяется по строкам:

  1. В УНФ общая сумма документа в рублях распределяется по строкам пропорционально валютной сумме каждой строки. Это обеспечивает сохранение пропорций между строками в валюте и в рублях.
  2. В Бухгалтерии распределение происходит пропорционально рублёвой сумме, которая была посчитана просто по курсу документа и округлена до двух знаков после запятой для каждой строки. Это приводит к тому, что в строках суммы могут отличаться, и отклонения могут быть как в плюс, так и в минус, что в итоге вызывает расхождения как в сумме документа в целом, так и в отдельных строках печатной формы УПД.

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

Нормы бухгалтерского учета и предназначение конфигураций

Важно понимать, что каждая из конфигураций 1С создана для своих целей:

По нормам бухгалтерского учета, пересчет в рубли выполняется на сумму операции в целом, а не на каждую отдельную строку операции. Это объясняет логику 1С:Бухгалтерии, которая сначала, вероятно, определяет общую рублевую сумму документа, а затем уже распределяет её или использует для расчета остатков. Такая методология позволяет избежать накопления ошибок округления при построчном пересчете.

Ключевые принципы учета валютных операций в 1С и российском законодательстве:

  1. Пересчет в рубли. Все валютные операции в бухгалтерском учете должны быть отражены в рублях по официальному курсу ЦБ РФ на дату совершения операции, если иное не установлено договором.
  2. Курсовые разницы. Возникают при изменении стоимости валютной операции между датой сделки и датой оплаты или отчетной датой. Они учитываются как прочие доходы или расходы. Авансы, выданные или полученные в валюте, не переоцениваются.
  3. Переоценка валютных средств. Активы и обязательства в иностранной валюте регулярно переоцениваются по курсу ЦБ РФ на отчетную дату или дату совершения операции. В 1С:УНФ можно настроить расчет курсовых разниц в момент проведения или при закрытии периода, а 1С:Бухгалтерия поддерживает автоматическую загрузку курсов ЦБ.

Различия между 1С:Бухгалтерией и 1С:УНФ:

Таким образом, расхождения в расчетах являются следствием разного предназначения конфигураций, различных подходов к округлению и интерпретации бухгалтерских норм. 1С:Бухгалтерия стремится к строгому соблюдению регламентированного учета, тогда как 1С:УНФ предоставляет больше гибкости для управленческих нужд.

Что же делать и каковы перспективы решения?

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

  1. Принять текущее поведение. Если расхождения минимальны и не критичны для ваших бизнес-процессов, можно принять текущее поведение как особенность типовых конфигураций. В случае 1С:Бухгалтерии, её расчеты более точно следуют нормам бухгалтерского учета, которые предписывают пересчет на сумму операции в целом.
  2. Доработать конфигурацию. Если для вашей организации критически важно полное совпадение расчетов, потребуется доработка одной из конфигураций, чтобы унифицировать алгоритм расчета рублевого покрытия. Это может быть как адаптация УНФ под логику БП, так и наоборот, в зависимости от того, какой подход считается "правильным" для ваших внутренних правил. Однако, стоит помнить, что любое изменение типовой логики требует поддержки и обновления при выходе новых релизов.
  3. Ожидать обновления от разработчиков. Самое важное в данной ситуации то, что разработчики 1С уже осведомлены о проблеме и заявили, что займутся её устранением. Это означает, что в будущих релизах конфигураций, вероятно, будут внесены изменения, направленные на унификацию или улучшение алгоритмов расчета, что позволит избежать подобных расхождений. Рекомендуем следить за обновлениями и патчами для обеих конфигураций.

В любом случае, критически важно определить, какой подход к расчету рублёвого покрытия является наиболее правильным для вашей организации с точки зрения внутренних политик и требований законодательства. Обсудите этот вопрос с ответственными лицами в вашей компании, в частности с бухгалтерами и финансовыми специалистами, чтобы принять обоснованное решение.

← На главную