Каждый бухгалтер, работающий с НДС в программе «1С:Бухгалтерия 8», стремится максимально автоматизировать учет и избежать рутины. Одной из удобных настроек является опция «Не регистрировать счета-фактуры на авансы, зачтенные до конца налогового периода». Она позволяет существенно сократить документооборот, избавляя от необходимости выписывать авансовые счета-фактуры (АвСФ) по тем предоплатам, которые закрылись отгрузкой внутри одного и того же квартала.
Однако на практике пользователи часто сталкиваются со сбоем этой логики: аванс зачитывается практически мгновенно (например, с разницей в несколько секунд между банковской выпиской и реализацией), но регламентная обработка РегистрацияСчетовФактурНаАванс все равно настойчиво предлагает создать документ. Давайте подробно разберем, почему программа игнорирует установленную настройку, изучим законодательную подоплеку и выясним, где искать техническую ошибку в кодовой базе системы.
Для начала проанализируем, почему разработчики «1С» вынуждены пересматривать алгоритмы автоматической регистрации авансовых НДС. Согласно Налоговому кодексу РФ и разъяснениям Минфина, если предоплата и отгрузка произошли в одном налоговом периоде с интервалом менее 5 дней, налогоплательщик имеет право не составлять счета-фактуры на аванс. Это правило активно применяется многими организациями.
Однако в последние годы правила заполнения книг покупок, книг продаж и самих бланков счетов-фактур претерпели изменения:
СчетФактураВыданный на аванс, то автозаполнение этой строки в документе реализации становится проблематичным или невозможным.Исключение из этого правила в явном виде сформулировано для плательщиков УСН, ставших плательщиками НДС. Согласно письмам ФНС, им разрешено не выставлять счета-фактуры на авансы, закрытые в одном периоде, и оставлять строку 5б пустой. Но для организаций на ОСНО система пытается следовать максимально строгому и безопасному сценарию.
Перед тем как переходить к анализу кода конфигурации, нам необходимо убедиться, что все пользовательские настройки и хронология документов в базе введены корректно. Проделаем следующие шаги:
Ручная корректировка и вручную изменил проводки по счету 62.02 или регистру НДС Расчеты с покупателями, регламентный механизм зачета авансов не сможет отработать штатно.Если все пользовательские настройки верны, документы перепроведены, но обработка РегистрацияСчетовФактурНаАванс всё равно выводит закрытые авансы в таблицу к регистрации, проблема кроется в алгоритмах запроса. Проанализируем, как работает этот механизм изнутри.
Основная логика фильтрации и подготовки данных сосредоточена в модуле менеджера обработки РегистрацияСчетовФактурНаАванс в процедуре ЗаполнитьСуммыАвансов. Именно здесь система должна отсекать строки с зачтенными авансами, вызывая метод удаления строки:
ТаблицаАвансов.Удалить(ТекущаяСтрока);
Рассмотрим упрощенную схему работы этого алгоритма:
// Пример логики обработки в модуле менеджера
Процедура ЗаполнитьСуммыАвансов(ТаблицаАвансов, ПараметрыРегистрации) Экспорт
Для Каждого ТекущаяСтрока Из ТаблицаАвансов Цикл
// Проверка настройки договора и учетной политики
Если ТекущаяСтрока.ВариантРегистрации = Перечисления.ВариантыРегистрацииСчетовФактурНаАванс.НеРегистрироватьЗачтенныеДоКонцаНалоговогоПериода Тогда
// Проверяем, действительно ли аванс был зачтен в пределах налогового периода
Если АвансБылЗачтенВПериоде(ТекущаяСтрока, ПараметрыРегистрации.КонецПериода) Тогда
// Если аванс полностью закрыт, удаляем строку из таблицы регистрации
ТаблицаАвансов.Удалить(ТекущаяСтрока);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Почему же управление может не заходить в условие удаления строки? Выделим основные технические причины:
62.02 и оборотов по зачету авансов. Если в документах не совпадает субконто (например, платеж пришел по одному договору или документу расчетов, а реализация проведена по другому), зачет фактически произошел на бумаге, но в регистрах учета НДС зависла «пересортица».НДС Расчеты с покупателями. Если в запросе жестко прописаны условия на дату конца периода без учета часовых поясов или с неверным сравнением секунд границы периода, зачет, произошедший в последний день периода, может не распознаваться алгоритмом.Для окончательного устранения проблемы выполним следующие действия:
РегистрацияСчетовФактурНаАванс и откроем ее модуль менеджера.ЗаполнитьСуммыАвансов на строке анализа вариантов регистрации авансов.ТекущаяСтрока. Особое внимание обратим на поля, отвечающие за суммы зачета и остатка аванса.