При работе в 1С:ERP Управление предприятием часто возникает ситуация, когда бухгалтерские счета (например, 60.21, 62.21) обнулены, ручные операции введены, а документ Расчет курсовых разниц продолжает упорно начислять суммы по закрытым договорам. Это происходит потому, что в ERP расчет курсовых разниц базируется не на остатках по плану счетов, а на данных оперативных регистров накопления. Если в этих регистрах «зависла» хотя бы копейка в одной из валют, система будет пытаться ее переоценить.
Рассмотрим подробно, где именно лежат эти данные, как их найти и что нужно исправить, чтобы избавиться от «фантомных» проводок.
Прежде всего, нам необходимо понять, какая архитектура взаиморасчетов используется в вашей базе: «Онлайн» (новая) или «Оффлайн» (старая). От этого зависит список регистров, которые система использует в качестве «базы».
Проанализируем основные регистры, в которых хранятся остатки для расчета:
РасчетыСКлиентами и РасчетыСПоставщиками. Это первичные регистры, где фиксируется задолженность в разрезе объектов расчетов.РасчетыСКлиентамиПоДокументам и РасчетыСПоставщикамиПоДокументам. Именно здесь чаще всего кроется причина проблем, если остатки по «шапке» договора закрыты, а в разрезе документов (накладных, заказов) висят перекосы.РасчетыСКлиентамиПоСрокам и РасчетыСПоставщикамиПоСрокам. Если в настройках включена новая архитектура, система берет данные именно отсюда. Эти регистры учитывают плановые и фактические даты оплаты, и ошибки в них часто не видны в стандартных отчетах.Разберем ситуацию, описанную в теме: менеджеры завели договор в рублях, но взаиморасчеты велись в USD. Вы могли обнулить остаток в валюте (USD), но забыть про ресурс СуммаРегл (сумма в рублях по курсу на дату операции).
В 1С:ERP расчет разниц срабатывает, если есть ненулевой остаток в любом из трех измерений:
Если вы обнулили USD, но в ресурсе СуммаРегл осталась копейка из-за округления курсов, документ Расчет курсовых разниц будет пытаться «дотянуть» эту копейку до актуального курса, порождая новые движения. Выясним причину, сформировав запрос к регистрам через консоль или воспользовавшись универсальным отчетом, выведя все три ресурса одновременно.
Если отладка на сервере недоступна из-за политик безопасности, проанализируем код модуля менеджера документа РасчетКурсовыхРазниц. Основная логика сбора данных обычно сосредоточена в процедурах формирования временных таблиц.
Посмотрим на примерную структуру запроса, который система выполняет «под капотом»:
// Фрагмент логики сбора остатков для переоценки
// Система объединяет данные из нескольких регистров
ВЫБРАТЬ
Рег.ОбъектРасчета КАК ОбъектРасчета,
Рег.Валюта КАК Валюта,
СУММА(Рег.СуммаОстаток) КАК Сумма,
СУММА(Рег.СуммаРеглОстаток) КАК СуммаРегл
ИЗ
РегистрНакопления.РасчетыСКлиентами.Остатки(&Период, ) КАК Рег
СГРУППИРОВАТЬ ПО
Рег.ОбъектРасчета,
Рег.Валюта
ОБЪЕДИНИТЬ ВСЕ
// Далее следует присоединение регистров "ПоДокументам" или "ПоСрокам"
Найдите в модуле запрос, формирующий временную таблицу ВТ_ОстаткиДляПереоценки. В нем вы увидите точный перечень регистров, актуальный для вашей версии конфигурации. Обратите внимание на Объект расчетов — это может быть не только договор, но и конкретный заказ или накладная.
Чтобы полностью остановить начисление курсовых разниц, выполним следующие действия:
Корректировка регистров. Нужно обнулить остатки по всем измерениям и всем ресурсам в регистрах РасчетыСКлиентами (или поставщиками), а также обязательно в регистрах ...ПоДокументам и ...ПоСрокам.Исправление остатков взаиморасчетов, если проблема вызвана техническим сбоем при переходе на новые релизы.Важный момент: Если договор уже закрыт и корректировки внесены, но документ Расчет курсовых разниц за новый месяц все равно «видит» суммы, проверьте регистр сведений СостоянияВзаиморасчетов. Иногда запись в этом регистре помечает объект расчетов как «требующий пересчета», даже если фактический остаток равен нулю.
Таким образом, для решения проблемы необходимо смотреть шире стандартных бухгалтерских отчетов и проверять всю цепочку регистров оперативного учета, уделяя особое внимание ресурсам в валюте регламентированного и управленческого учета.