При закрытии месяца в программе 1С:ERP Управление предприятием (или 1С:Комплексная автоматизация 2) бухгалтеры часто сталкиваются со странным поведением системы: вместо одной лаконичной проводки по переоценке валютных остатков программа формирует огромные встречные обороты. Например, по дебету и кредиту счета 67.22 (или любого другого валютного счета расчетов, например 60.21, 62.21) одновременно начисляются и доходы, и расходы по курсовым разницам. При этом итоговое сальдо на конец месяца получается математически верным, но раздутые обороты искажают отчетность и вызывают закономерные вопросы у аудиторов.
В этой статье мы подробно разберем, почему возникает такая ситуация, как устроена архитектура валютного учета в ERP-системах и как пошагово локализовать и исправить эту ошибку. При использовании 1С:КА 2 альтернативным сценарием может стать перенос данных из КА 2 в БП 3.0 для ведения учета в более простой системе.
В отличие от классической «1С:Бухгалтерии 8», где переоценка валюты происходит линейно и опирается исключительно на бухгалтерский план счетов, в современных ERP-системах логика разделена на два независимых контура: оперативный (управленческий) учет и регламентированный (бухгалтерский) учет. При выполнении процедуры закрытия месяца расчет выполняется в два этапа: если такая архитектура избыточна, бухгалтерский контур можно выделить в отдельную базу с помощью переноса данных из ERP 2 в БП 3.0.
Этот документ ориентируется только на записи в оперативных регистрах накопления. Для расчетов по кредитам и займам ключевым является регистр РегистрНакопления.РасчетыПоКредитамИДепозитам (или РегистрНакопления.РасчетыСКлиентами / РасчетыСПоставщиками для взаиморасчетов с контрагентами). Программа берет остаток в валюте по регистру, пересчитывает его по курсу ЦБ на дату переоценки и транслирует полученную разницу в бухгалтерский учет (проводкой в дебет или кредит счета 91).
Этот документ запускается следом и анализирует исключительно проводки на счетах бухгалтерского учета (таблица РегистрБухгалтерии.Хозрасчетный). Его задача — сопоставить рублевый эквивалент валютного сальдо на счете (например, 67.22) с эталонным значением (валютный остаток, умноженный на курс на конец месяца). Если после проведения первого этапа («Расчета курсовых разниц») рублевое сальдо на счете БУ идеально совпадает с расчетным, регламентная операция не формирует никаких дополнительных движений. Но если обнаруживается расхождение, документ «насильно» доначисляет корректирующую проводку, чтобы выровнять баланс.
Если в вашей базе данных показатели оперативного контура (регистров) разошлись с бухгалтерским сальдо, система начинает вести себя следующим образом:
Дт 67.22 Кт 91.01 на сумму 92 368,93 руб.).67.22 сальдо искажено из-за ручной проводки или нестыковки документов. Чтобы подогнать итог под правильный баланс, он делает корректировку в противоположную сторону (проводка Дт 91.02 Кт 67.22 на сумму 98 244,65 руб.).Главный виновник этой рассинхронизации — некорректное отражение хозяйственных операций в прошлых периодах. Самый частый пример: перечисление или получение валюты было проведено по рублевому счету 51 вместо валютного 52, либо валютная операция была проведена ручной операцией (документом Операция (регламентированный учет)) в обход регистров накопления.
Для технического анализа расхождений разработчики и аналитики могут использовать следующий SQL-подобный запрос к базе данных, чтобы выявить нестыковку остатков по регистрам и бух. счетам:
ВЫБРАТЬ
ХозрасчетныйОстатки.Субконто1 КАК ДоговорКредита,
ХозрасчетныйОстатки.ВалютнаяСуммаОстаток КАК ВалютныйОстатокБУ,
ХозрасчетныйОстатки.СуммаОстаток КАК РублевыйОстатокБУ,
РасчетыКредитыОстатки.СуммаВзаиморасчетовОстаток КАК ВалютныйОстатокРегистр,
РасчетыКредитыОстатки.СуммаРеглОстаток КАК РублевыйОстатокРегистр
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоДолгосрочнымКредитамВВалюте)) КАК ХозрасчетныйОстатки
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыПоКредитамИДепозитам.Остатки(&Период) КАК РасчетыКредитыОстатки
ПО ХозрасчетныйОстатки.Субконто1 = РасчетыКредитыОстатки.Договор
ГДЕ
ХозрасчетныйОстатки.СуммаОстаток <> РасчетыКредитыОстатки.СуммаРеглОстаток
ИЛИ ХозрасчетныйОстатки.ВалютнаяСуммаОстаток <> РасчетыКредитыОстатки.СуммаВзаиморасчетовОстаток
Проанализируем банковские выписки за текущий и прошлый годы. Нам необходимо убедиться, что все движения денежных средств по валютным договорам отражены корректно:
67.22 (или иному анализируемому валютному счету) за весь период ведения учета.Дт 67.22 — Кт 51, это указывает на ошибку. Счет 51 («Расчетные счета») используется строго для рублевых операций. Корреспонденция с ним напрямую ломает расчет валютных разниц, так как рублевая сумма списывается по фактическому курсу банка, а оперативный регистр валютных взаиморасчетов не получает корректного закрытия по курсу ЦБ.52 («Валютные счета»).Иногда пользователи пытаются начислить проценты по кредитам или отразить сопутствующие затраты с помощью документа Регистрация расходов или обычных ручных бухгалтерских справок. Это грубая ошибка методологии учета в 1С:ERP.
Для корректного отражения таких операций всегда используйте только профильные документы:
Рассмотрим порядок действий для исправления накопившейся ошибки и восстановления правильного расчета курсовых разниц:
51 на 52. Убедитесь, что выбран правильный валютный банковский счет организации.После выполнения этих шагов вы увидите, что при повторном проведении процедур закрытия месяца документ Регламентная операция больше не будет генерировать корректирующие встречные проводки. Программа сформирует одну свернутую и красивую проводку по переоценке (например, только по дебету 91.02 в случае роста курса при кредиторской задолженности), полностью удовлетворив требования бухгалтера.
Чтобы в будущем не допускать подобных ошибок и оперативно отслеживать расхождения до момента закрытия месяца, рекомендуем использовать встроенные инструменты 1С:ERP: а для контроля корректности бухгалтерских и налоговых проводок между разными базами после доработок можно подключить инструмент автоматической сверки данных через COM-соединение.