Почему в 1С:УПП переоценка валютных средств не выполняется в момент проведения документа и как это настроить?

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

При работе с валютными операциями в конфигурации «1С:Управление производственным предприятием 1.3» (УПП) пользователи и руководство часто обращают внимание на то, что рублевый эквивалент по валютным счетам и договорам не пересчитывается непосредственно в момент проведения первичных расчетно-платежных документов, в отличие от «1С:Бухгалтерии предприятия» (БП). Из-за этого в оборотно-сальдовой ведомости до конца месяца могут возникать парадоксальные ситуации: например, положительный валютный остаток сопровождается отрицательным рублевым сальдо.

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

Нормативная база и суть курсовых разниц

Согласно ПБУ 3/2006 («Учет активов и обязательств, стоимость которых выражена в иностранной валюте»), пересчет стоимости активов и обязательств в рубли должен производиться:

  1. На дату совершения операции в иностранной валюте (по конкретному расчету/сделке);
  2. На отчетную дату (традиционно — последний день месяца).

Рассмотрим, как возникает курсовая разница на простом примере:

  1. 1-е число: Поступили товары на сумму $100 по курсу 10 руб./$. Рублевая задолженность составила 1000 руб.
  2. 15-е число: Произведена частичная оплата в сумме $50 по курсу 20 руб./$ (рублевый эквивалент платежа — 1000 руб.).

Если в момент оплаты 15-го числа не рассчитать курсовую разницу, то после списания 1000 руб. долга по бухгалтерским проводкам останется валютный долг $50, а рублевый долг станет равным 0 руб. Чтобы избежать искажения рублевого покрытия, в момент операции или по итогам переоценки остаток обязательств пересчитывается, и фиксируется курсовая разница (доход или расход).

Архитектурные различия: почему в 1С:БП и 1С:УПП реализован разный подход?

В 1С:Бухгалтерии предприятия расчет курсовых разниц встроен непосредственно в проведение первичных расчетных документов (платежных поручений, поступлений, реализаций). В общем модуле УчетДоходовРасходов вызываются специализированные экспортные функции подготовки таблиц переоценки:


Функция ПодготовитьТаблицуПереоценкаВалютныхОстатковПоПроводкамДокумента(ТаблицаРеквизиты, Движения, Отказ, Ошибки = Неопределено, ЭтоЭкспрессПроверка = Ложь) Экспорт
    // Формирование проводок по курсовым разницам в транзакции документа
    ...
    ПодготовитьТаблицуПереоценкаВалютныхОстатков(СтруктураПараметров, Отказ, Ошибки, ЭтоЭкспрессПроверка);
КонецФункции

В 1С:УПП 1.3 разработчики применили совершенно иной архитектурный подход по следующим причинам:

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

Варианты настройки и решения задачи в 1С:УПП

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

Вариант 1. Использование регламентной обработки «Восстановление состояния расчетов»

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

Вариант 2. Автоматическое создание документов переоценки регламентным заданием

Проанализируем программный способ автоматизации: запуск переоценки в фоновом режиме через РегламентныеЗадания. Документы переоценки создаются автоматически в конце дня или ночью.


Процедура ВыполнитьПереоценкуВалютныхСредствПоРасписанию() Экспорт
    
    Организации = РегламентированныйУчет.ПолучитьСписокОрганизаций();
    
    Для Каждого ТекОрганизация Из Организации Цикл
        
        ДокументПереоценки = Документы.ПереоценкаВалютныхСредств.СоздатьДокумент();
        ДокументПереоценки.Дата = КонецДня(ТекущаяДата());
        ДокументПереоценки.Организация = ТекОрганизация;
        ДокументПереоценки.ОтражатьВБухгалтерскомУчете = Истина;
        ДокументПереоценки.ОтражатьВНалоговомУчете = Истина;
        ДокументПереоценки.ОтражатьВУправленческомУчете = Истина;
        
        // Заполнение табличных частей по остаткам
        ДокументПереоценки.Заполнить();
        
        Попытка
            ДокументПереоценки.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
            ЗаписьЖурналаРегистрации("ФоноваяПереоценка", УровеньЖурналаРегистрации.Ошибка,,, 
                ОписаниеОшибки());
        КонецПопытки;
        
    КонецЦикла;

КонецПроцедуры

Вариант 3. Настройка регистра «Счета с особым порядком переоценки»

Для специфических счетов (например, расчетов по долгосрочным кредитам, депозитам или договорам с особыми условиями) в типовой конфигурации предусмотрен регистр сведений СчетаСОсобымПорядкомПереоценки. В нем можно гибко настроить способ пересчета — например, производить переоценку остатка только в момент погашения задолженности или по индивидуальному правилу.

Почему не рекомендуется встраивать переоценку в первичные документы УПП?

Попытка доработать конфигурацию и перенести логику начисления курсовых разниц напрямую в модули документов (ПлатежноеПоручениеВходящее, ПоступлениеТоваровУслуг) несет серьезные риски:

  1. Рассинхронизация регистров: При проведении любого первичного документа «задним числом» расчет курсовой разницы в последующих документах станет некорректным. Потребуется каскадное перепроведение всей цепочки документов по контрагенту.
  2. Падение производительности: Резко возрастет количество транзакционных блокировок при одновременной выписке счетов, накладных и платежей.

Таким образом, наиболее надежным и штатным решением для УПП является сохранение типовой архитектуры с автоматическим регулярным формированием документов переоценки через фоновые регламентные задания или обработку восстановления расчетов.

← На главную