При работе с контролируемыми сделками в системах 1С:ERP, 1С:Комплексная автоматизация или 1С:Бухгалтерия 8 программисты и бухгалтеры часто сталкиваются с ситуацией, когда в регистре накопления КонтролируемыеСделкиОрганизаций значения в колонках «Сумма в валюте» и «Сумма в рублях» (включая «Сумма без НДС в рублях») оказываются идентичными, хотя сделка была совершена в иностранной валюте. Попытки исправить это прямой правкой запроса в коде часто не приносят результата. Давайте подробно разберем, как устроен этот механизм и как добиться корректного пересчета по курсу валюты на дату документа.
Первое, что мы должны понять: данные в регистр КонтролируемыеСделкиОрганизаций попадают не совсем обычным способом. В отличие от стандартных регистров бухгалтерии, которые заполняются сразу при проведении первичного документа (например, «Реализация товаров и услуг»), записи по контролируемым сделкам зачастую формируются или обновляются специальной регламентной операцией. Рассмотрим этот процесс подробнее:
Проанализируем ситуацию: если мы правим запрос в конфигураторе, но не запускаем процедуру обновления в Помощнике, мы видим старые «закешированные» данные. Программа может использовать временные таблицы, сформированные на момент последнего запуска регламентной операции.
Согласно ст. 105.14 НК РФ, для целей налогового контроля суммовые критерии рассчитываются по особым правилам. Выясним причину, почему стандартный пересчет может отличаться от ожидаемого бухгалтером:
В типовых конфигурациях 1С для контролируемых сделок используется курс ЦБ РФ на дату совершения сделки (обычно это дата перехода права собственности или дата документа). Однако здесь есть важный нюанс, связанный с авансами. В обычном бухгалтерском учете (согласно ПБУ 3/2006) часть стоимости, оплаченная авансом, фиксируется по курсу на дату аванса. Но для уведомления о контролируемых сделках 1С часто реализует расчет без учета правил ПБУ 3/2006, то есть пересчитывает всю сумму по курсу на дату документа. Если в вашем случае курс все равно не подтягивается, нужно проверить настройки в справочнике Валюты.
Если в регистре суммы в валюте и в рублях совпадают (например, 100 USD превращаются в 100 RUB), давайте проанализируем следующие возможные ошибки:
Валюта расчетов (установлена «руб.», хотя должна быть валюта), система воспримет сделку как рублевую.РегистрацияКонтролируемыхСделок для ручного добавления записей, автоматического пересчета при изменении сумм в табличной части не произойдет. В таких документах нужно вручную инициировать заполнение или проверять каждую строку.Если вы — разработчик и вам все же нужно программно вмешаться в процесс, важно понимать, где именно в коде происходит формирование сумм. Рассмотрим типичную структуру вызовов. Заполнение регистра обычно вынесено в модуль менеджера регистра накопления или специализированные общие модули.
Обратите внимание на функцию ЗаполнитьСуммыВРублях (название может незначительно отличаться в зависимости от версии конфигурации). Проанализируем примерный алгоритм, который использует система:
// Пример логики пересчета в модуле
Процедура ЗаполнитьСуммыВРублях(СтрокаСделки, ПараметрыЗаполнения)
КурсВалюты = ПолучитьКурсНаДату(СтрокаСделки.Валюта, СтрокаСделки.ДатаСделки);
СтрокаСделки.СуммаВРублях = СтрокаСделки.СуммаВВалюте * КурсВалюты.Курс / КурсВалюты.Кратность;
// Расчет суммы без НДС
СтрокаСделки.СуммаБезНДСВРублях = РасчитатьСуммуБезНДС(СтрокаСделки.СуммаВРублях, СтрокаСделки.СтавкаНДС);
КонецПроцедуры
Если вы меняете запрос, но не учитываете, что после выполнения запроса данные проходят через подобную программную обработку в общем модуле (например, КонтролируемыеСделкиПереопределяемый), ваши изменения будут затерты типовым алгоритмом. Проверьте, не переопределяются ли значения полей СуммаВРублях и СуммаБезНДСВРублях после выполнения основного запроса по выборке данных.
Сумма без НДС в рублях в данном регистре вычисляется одним из двух способов:
Если вы видите некорректные цифры, проанализируйте настройки группировки сделок в Помощнике. При включенной агрегации (группировке) нескольких мелких сделок в одну, 1С может применять усредненные показатели, что визуально искажает итоговую сумму в рублях. Попробуйте отключить лишние группировки и сформировать список заново.
Подведем итог и составим план действий для решения проблемы:
СуммаВРублях. Посмотрите, какие значения приходят в параметрах структуры.Помните, что регистр КонтролируемыеСделкиОрганизаций — это специализированный инструмент налогового мониторинга, и его поведение жестко привязано к логике Помощника подготовки уведомления. Совместная работа бухгалтера по проверке первичных данных и программиста по анализу регламентных заданий позволит быстро добиться соответствия сумм в валюте и рублях.