Почему не заполняется ставка НДС в проводках по счетам 76.АВ и 76.ВА и как это исправить

Программист 1С v8.3 (Управляемые формы) Налоговый учет
← На главную

В процессе работы с программой «1С:Бухгалтерия 8» (редакция 3.0) бухгалтеры и технические специалисты иногда сталкиваются с ситуацией, когда в документе «Формирование записей книги покупок» (или при начислении НДС с авансов) все данные заполнены верно, в регистрах НДС информация присутствует, однако в бухгалтерских проводках по счетам 76.АВ (НДС по авансам и предоплатам полученным) или 76.ВА (НДС по авансам и предоплатам выданным) поле «Ставка НДС» остается пустым.

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

Анализ стандартной методологии 1С

Для начала проанализируем, как устроена типовая конфигурация. В стандартном плане счетов счета 76.АВ и 76.ВА имеют только два предопределенных разреза аналитики (субконто):

  1. Контрагенты;
  2. Документы расчетов.

Разработчики фирмы «1С» намеренно не добавили третье субконто «Ставки НДС» на эти счета. Это связано с тем, что вся отчетность по НДС (Книга покупок, Книга продаж, Декларация по НДС) строится не на основании бухгалтерских проводок, а на данных специализированных регистров накопления:

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

Почему возникает проблема «пустого поля»

Ситуация, описанная пользователями, чаще всего возникает, когда бухгалтерия принимает решение самостоятельно добавить третье субконто «Ставки НДС» к счетам 76.АВ или 76.ВА в пользовательском режиме (через «План счетов»).

Выясним причину, по которой программа игнорирует это добавление при проведении документов. Проблема кроется в жестком кодировании алгоритмов формирования проводок. Когда мы запускаем отладчик и проходим по процедурам документа «Формирование записей книги покупок», мы видим следующий механизм:

  1. Программа обращается к общему модулю (например, УчетНДСФормированиеПроводок или УчетНДС).
  2. В коде прописан четкий порядок заполнения субконто. Система «знает», что на счете 76.АВ есть только два субконто, и передает данные только для них.
  3. Даже если в плане счетов появилось третье субконто, в программном коде нет инструкции, которая бы диктовала, какое именно значение из документа (ставку НДС, способ учета НДС или что-то еще) нужно туда поместить.

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

Варианты решения проблемы

Если ваша организация приняла решение, что аналитика по ставкам НДС на счетах 76.АВ/ВА критически необходима, у вас есть два основных пути решения задачи.

Способ 1: Использование расширения конфигурации (Рекомендуемый)

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

Рассмотрим пример логики, которую необходимо внедрить в расширение (на примере обработки проведения документа):


&После("СформироватьДвиженияПоБухгалтерскомуУчету")
Процедура Расш_СформироватьДвиженияПоБухгалтерскомуУчету(ТаблицаДвижений)
    
    Для Каждого СтрокаПроводки Из ТаблицаДвижений Цикл
        // Проверяем, что счет является счетом авансов по НДС
        Если СтрокаПроводки.СчетДт = ПланыСчетов.Хозрасчетный.НДСПоАвансамПолученным 
           ИЛИ СтрокаПроводки.СчетКт = ПланыСчетов.Хозрасчетный.НДСПоАвансамПолученным Тогда
            
            // Определяем, в какое субконто нужно записать ставку НДС
            // (предположим, это Субконто3)
            Если СтрокаПроводки.СчетДт.ВидыСубконто.Количество() >= 3 Тогда
                 СтрокаПроводки.СубконтоДт[СтрокаПроводки.СчетДт.ВидыСубконто[2].ВидСубконто] = СтрокаПроводки.СтавкаНДС;
            КонецЕсли;
            
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

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

Способ 2: Использование стандартных отчетов вместо изменения плана счетов

Прежде чем приступать к программированию, проанализируем, действительно ли нам нужно это субконто в ОСВ (Оборотно-сальдовой ведомости). Если цель — проверить корректность исчисления налога, то программа 1С предоставляет мощные инструменты анализа без изменения плана счетов:

Последствия и риски ручного добавления субконто

Разберем, к чему нужно быть готовым, если вы все же решили оставить ручное субконто без доработки кода или с частичной доработкой:

  1. Ошибки Экспресс-проверки ведения учета: Встроенный помощник может сигнализировать об ошибках, так как он не ожидает увидеть заполненную аналитику там, где ее нет в типовом решении.
  2. Сложности при закрытии месяца: Регламентные операции могут некорректно «закрывать» остатки по счету 76, если возникнет пересортица по субконто (например, в одном месяце ставка заполнена, а в другом — нет).
  3. Трудозатраты при обновлениях: Каждый раз при обновлении конфигурации «1С:Бухгалтерия» необходимо будет проверять, не изменились ли типовые общие модули, отвечающие за формирование проводок по НДС.

Резюме: Отсутствие ставки НДС в проводке при наличии её в документе — это не программная ошибка (баг), а следствие того, что типовая архитектура 1С хранит ставку в регистрах накопления, а не на счетах бухгалтерского учета. Если аналитика в проводках жизненно необходима, используйте расширение конфигурации для заполнения добавленного субконто.

← На главную