Как в проводке 1С обнулить сумму налогового учета (СуммаНУ) и разделить проводки БУ и НУ

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Почему 1С автоматически заполняет СуммаНУ суммой БУ

В типовых конфигурациях 1С (таких как «Бухгалтерия предприятия») логика ведения учета опирается на балансовый принцип и требования ПБУ 18/02:

БУ = НУ + ПР + ВР (где БУ — бухгалтерский учет, НУ — налоговый учет, ПР — постоянные разницы, ВР — временные разницы).

Если в проводке по счету, на котором включен признак налогового учета, заполнена сумма БУ, а разработчик принудительно обнуляет СуммаНУ, СуммаПР и СуммаВР, типовой модуль набора записей регистра Хозрасчетный расценивает налоговый учет как незаполненный. В обработчиках перед записью срабатывает алгоритм автоматического выравнивания, который дублирует значение из БУ в НУ, предотвращая нарушение базового равенства.

Кроме того, при формировании проводок через создание отдельного набора записей РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей() в процессе проведения документа сам документ при завершении транзакции может перезаписать движения собственным стандартным набором.

Способ 1. Использование механизма ручной корректировки документа

Если требуется жестко зафиксировать движения документа и исключить их автоматический пересчет типовыми механизмами проведения, необходимо задействовать флаг РучнаяКорректировка непосредственно в объекте документа. Проанализируем, как это реализовать программно:

  1. Обращаемся к коллекции движений документа Источник.Движения.Хозрасчетный.
  2. Загружаем скорректированную таблицу проводок или меняем записи непосредственно в наборе.
  3. Устанавливаем свойство РучнаяКорректировка = Истина.
  4. Записываем объект документа.

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


// Предположим, что в таблице ПроводкиТЗ сформированы нужные строки движений
Источник.Движения.Хозрасчетный.Загрузить(ПроводкиТЗ);
Источник.РучнаяКорректировка = Истина;
Источник.Записать();

Установка флага РучнаяКорректировка указывает платформе, что движения отредактированы пользователем или специальным алгоритмом, поэтому стандартные типовые процедуры пересчета и автозаполнения НУ при проведении будут пропущены.

Способ 2. Корректное отражение временных разниц (ВР) по правилам ПБУ 18/02

С методологической точки зрения, если выручка или себестоимость в налоговом учете признаются в другой период относительно бухгалтерского учета, возникает временная разница. Чтобы модуль регистра не пытался восстановить СуммаНУ, мы должны явно соблюсти равенство БУ = НУ + ПР + ВР.

Разберем, как должны заполняться ресурсы проводки, если в текущем документе отражается только БУ:

  1. Сумма (БУ) = Значение суммы операции.
  2. СуммаНУДт / СуммаНУКт = 0.
  3. СуммаВРДт / СуммаВРКт = Значение суммы операции (со знаком плюс или минус, в зависимости от направления разницы).
  4. СуммаПРДт / СуммаПРКт = 0.

Посмотрим на пример заполнения проводки в цикле:


Для Каждого Проводка Из Проводки Цикл
    Если Проводка.СчетДт = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД 
       И Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукцияОтгруженная Тогда
        
        Проводка.СуммаНУДт = 0;
        Проводка.СуммаНУКт = 0;
        
        // Отражаем временную разницу для соблюдения равенства БУ = НУ + ПР + ВР
        Проводка.СуммаВРДт = Проводка.Сумма;
        Проводка.СуммаВРКт = Проводка.Сумма;
        
        Проводка.СуммаПРДт = 0;
        Проводка.СуммаПРКт = 0;
    КонецЕсли;
КонецЦикла;

При таком подходе равенство выполняется (БУ = 0 + 0 + ВР), типовой алгоритм контроля не перезаписывает СуммаНУ, а процедура закрытия месяца корректно рассчитывает отложенные налоговые активы и обязательства (счета 09 и 77).

Типовые альтернативы без доработки кода

Если ситуация связана со стандартными операциями с особым переходом права собственности (например, продажа объектов недвижимости или товаров в пути), рекомендуется использовать штатный документооборот:

  1. При передаче объекта оформляется документ с признаком отложенного перехода права собственности (например, «Передача ОС» с соответствующим флагом или «Реализация товаров и услуг» с видом операции «Отгрузка без перехода права собственности»). На этом этапе доходы/расходы фиксируются в НУ, а в БУ стоимость переходит на счет 45.
  2. После государственной регистрации или выполнения условий договора проводится документ «Реализация отгруженных товаров», который списывает счет 45 и признает доходы и расходы в БУ.

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

← На главную