Где в 1С:ERP хранятся данные для расчета курсовых разниц и как устранить их ошибочное начисление?

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

При работе в 1С:ERP Управление предприятием часто возникает ситуация, когда бухгалтерские счета (например, 60.21, 62.21) обнулены, ручные операции введены, а документ Расчет курсовых разниц продолжает упорно начислять суммы по закрытым договорам. Это происходит потому, что в ERP расчет курсовых разниц базируется не на остатках по плану счетов, а на данных оперативных регистров накопления. Если в этих регистрах «зависла» хотя бы копейка в одной из валют, система будет пытаться ее переоценить.

Рассмотрим подробно, где именно лежат эти данные, как их найти и что нужно исправить, чтобы избавиться от «фантомных» проводок.

Анализируем архитектуру взаиморасчетов

Прежде всего, нам необходимо понять, какая архитектура взаиморасчетов используется в вашей базе: «Онлайн» (новая) или «Оффлайн» (старая). От этого зависит список регистров, которые система использует в качестве «базы».

Проанализируем основные регистры, в которых хранятся остатки для расчета:

  1. Регистры расчетов с контрагентами: РасчетыСКлиентами и РасчетыСПоставщиками. Это первичные регистры, где фиксируется задолженность в разрезе объектов расчетов.
  2. Регистры расчетов по документам: РасчетыСКлиентамиПоДокументам и РасчетыСПоставщикамиПоДокументам. Именно здесь чаще всего кроется причина проблем, если остатки по «шапке» договора закрыты, а в разрезе документов (накладных, заказов) висят перекосы.
  3. Регистры новой архитектуры (по срокам): РасчетыСКлиентамиПоСрокам и РасчетыСПоставщикамиПоСрокам. Если в настройках включена новая архитектура, система берет данные именно отсюда. Эти регистры учитывают плановые и фактические даты оплаты, и ошибки в них часто не видны в стандартных отчетах.

Проверка ресурсов валютного учета

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

В 1С:ERP расчет разниц срабатывает, если есть ненулевой остаток в любом из трех измерений:

Если вы обнулили USD, но в ресурсе СуммаРегл осталась копейка из-за округления курсов, документ Расчет курсовых разниц будет пытаться «дотянуть» эту копейку до актуального курса, порождая новые движения. Выясним причину, сформировав запрос к регистрам через консоль или воспользовавшись универсальным отчетом, выведя все три ресурса одновременно.

Как найти корень проблемы через конфигуратор

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

Посмотрим на примерную структуру запроса, который система выполняет «под капотом»:


// Фрагмент логики сбора остатков для переоценки
// Система объединяет данные из нескольких регистров
ВЫБРАТЬ
    Рег.ОбъектРасчета КАК ОбъектРасчета,
    Рег.Валюта КАК Валюта,
    СУММА(Рег.СуммаОстаток) КАК Сумма,
    СУММА(Рег.СуммаРеглОстаток) КАК СуммаРегл
ИЗ
    РегистрНакопления.РасчетыСКлиентами.Остатки(&Период, ) КАК Рег
СГРУППИРОВАТЬ ПО
    Рег.ОбъектРасчета,
    Рег.Валюта
ОБЪЕДИНИТЬ ВСЕ
// Далее следует присоединение регистров "ПоДокументам" или "ПоСрокам"

Найдите в модуле запрос, формирующий временную таблицу ВТ_ОстаткиДляПереоценки. В нем вы увидите точный перечень регистров, актуальный для вашей версии конфигурации. Обратите внимание на Объект расчетов — это может быть не только договор, но и конкретный заказ или накладная.

Пошаговый план исправления ситуации

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

  1. Обнуление регистров: Используйте документ Корректировка регистров. Нужно обнулить остатки по всем измерениям и всем ресурсам в регистрах РасчетыСКлиентами (или поставщиками), а также обязательно в регистрах ...ПоДокументам и ...ПоСрокам.
  2. Синхронизация с бухгалтерией: Убедитесь, что движения в регистрах накопления соответствуют проводкам на счетах 60.21/62.21. В 1С:ERP оперативный и бухгалтерский учет должны быть зеркальны.
  3. Техническое обслуживание: Запустите регламентное задание «Выполнение отложенных движений по расчету расчетов с клиентами». Пока система не пересчитает итоги по цепочкам документов, старые данные могут оставаться в кэше.
  4. Исправление остатков: В разделе НСИ и Администрирование — Обслуживание — Регламентные операции можно попробовать выполнить операцию Исправление остатков взаиморасчетов, если проблема вызвана техническим сбоем при переходе на новые релизы.

Важный момент: Если договор уже закрыт и корректировки внесены, но документ Расчет курсовых разниц за новый месяц все равно «видит» суммы, проверьте регистр сведений СостоянияВзаиморасчетов. Иногда запись в этом регистре помечает объект расчетов как «требующий пересчета», даже если фактический остаток равен нулю.

Таким образом, для решения проблемы необходимо смотреть шире стандартных бухгалтерских отчетов и проверять всю цепочку регистров оперативного учета, уделяя особое внимание ресурсам в валюте регламентированного и управленческого учета.

← На главную