В процессе работы с системой 1С:ERP Управление предприятием 2.5 пользователи часто сталкиваются с ситуацией, когда регламентная операция по расчету курсовых разниц ведет себя «странно»: проводки в бухгалтерском учете по счету 52 формируются, а движения в оперативном регистре ДенежныеСредстваБезналичные отсутствуют. Это приводит к разрыву между данными оперативного контура и бухгалтерской отчетностью (ОСВ). Проанализируем причины этой проблемы и разберем по шагам, как восстановить порядок в учете.
Для начала проанализируем базовый принцип работы системы. В отличие от «1С:Бухгалтерии», в ERP первичным является оперативный учет. Это означает, что данные в регистры бухгалтерии (проводки) попадают на основании движений в регистрах накопления. Если регламентная операция РасчетКурсовыхРазниц сформировала проводку по счету 52, но проигнорировала регистр ДенежныеСредстваБезналичные, это сигнализирует о серьезном логическом несоответствии в данных или настройках системы.
Рассмотрим подробнее изменения, произошедшие в последних релизах (начиная с 2.5.7). Вендор переработал механизм переоценки, разделив алгоритмы для взаиморасчетов и для денежных средств. Теперь за переоценку валюты на банковских счетах отвечает специфический блок внутри документа. Если этот блок не видит остатка в регистре ДенежныеСредстваБезналичные, он не создаст запись, даже если на 52 счете «висит» рублевая сумма.
Выясним, как настройки справочников влияют на движения регистров. Регистр ДенежныеСредстваБезналичные крайне чувствителен к заполнению аналитики. Для корректной работы системы должны быть настроены связи между расчетными счетами и финансовыми статьями.
Проанализируем следующие настройки:
Это одна из самых частых причин аномального поведения системы, когда последняя проводка списывает остаток по БУ «под ноль». Рассмотрим ситуацию: на валютном счете в какой-то момент образовался нулевой остаток в валюте (например, USD), но из-за округлений или ошибок прошлых периодов остался копеечный (или значительный) остаток в рублях в регистре Хозрасчетный.
Алгоритм системы работает следующим образом:
ДенежныеСредстваБезналичные остаток в валюте равен 0, то система считает, что переоценивать нечего. Движение по оперативному регистру не создается.В результате мы получаем ситуацию из Сообщения 0: в ОСВ остаток закрылся, а в оперативном регистре движений не было, так как там и так был ноль.
Разберем влияние документа Операция (регламентированный учет). Если бухгалтер вручную корректировал проводки по 52 счету, не затрагивая регистры накопления, возникает «разъезд» данных. Система ERP не умеет автоматически подстраивать оперативный учет под ручные проводки. Напротив, она всегда будет пытаться привести БУ к состоянию оперативных регистров.
Проанализируем ситуацию с помощью отчета «Сверка данных оперативного и регламентированного учета» (раздел «Финансовый результат и контроллинг»). Если отчет показывает расхождение по разделу «Денежные средства», значит, причина именно в рассинхронизации. Регламентная операция лишь пытается следствие этой ошибки устранить в БУ, но не лечит причину в регистрах.
Рассмотрим последовательность действий для исправления ситуации:
Шаг 1: Проверка остатков в регистрах
Необходимо убедиться, что данные в регистре ДенежныеСредстваБезналичные соответствуют реальности. Используйте консоль запросов или стандартный отчет «Ведомость по денежным средствам» с детализацией по валюте и сумме регл. учета. Если вы видите, что валюта — 0, а Сумма (регл.) — не 0, это и есть корень проблемы.
Шаг 2: Выравнивание через «Корректировку регистров»
Если найден разрыв, его нужно устранить. Рассмотрим пример: нам нужно доначислить рублевую сумму в оперативный учет, чтобы она соответствовала 52 счету перед расчетом курсовых разниц.
// Пример логики для корректировки (схематично)
Движение = РегистрыНакопления.ДенежныеСредстваБезналичные.СоздатьНаборЗаписей();
НоваяЗапись = Движение.Добавить();
НоваяЗапись.ВидДвижения = ВидДвиженияНакопления.Приход; // или Расход для обнуления хвоста
НоваяЗапись.БанковскийСчет = Объект.ВалютныйСчет;
НоваяЗапись.Сумма = 0; // Валютная сумма не меняется
НоваяЗапись.СуммаРегл = НужнаяСуммаДляВыравнивания;
НоваяЗапись.Период = КонецПрошлогоПериода;
Шаг 3: Перезапуск регламентных операций
После того как данные в оперативном регистре приведены в соответствие с бухгалтерскими (или здравым смыслом), необходимо перепровести документы РасчетКурсовыхРазниц. Теперь система увидит базу для переоценки (или отсутствие необходимости в «кривых» корректировках) и сформирует движения корректно.
Как было отмечено в обсуждении (Сообщение 6), остаток на счете 000 может косвенно указывать на некорректный ввод остатков. Если при вводе остатков по валютным счетам были допущены ошибки (неверный курс или не заполнена сумма регл. учета в документах ввода), это «всплывет» при первой же регламентной переоценке. Убедитесь, что сальдо по счету 000 равно нулю, прежде чем искать ошибки в алгоритмах расчета курсовых разниц.
Отсутствие движений в РН ДенежныеСредстваБезналичные при наличии проводок по 52 счету — это защитный механизм системы, указывающий на то, что данные оперативного учета «разошлись» с бухгалтерскими. Для решения задачи:
Помните, что в ERP 2.5 регламентированный учет — это «зеркало» оперативного, и исправлять нужно в первую очередь источник данных.