Переходный период при изменении ставки НДС с 18% на 20% в начале 2019 года стал настоящим испытанием для пользователей и разработчиков систем на платформе «1С:Предприятие 7.7». Владельцы старых, но стабильно работающих конфигураций «Бухгалтерский учет» (релиз 7.70.648) столкнулись с неприятной системной ошибкой: выданные счета-фактуры на аванс за прошлые периоды перестали корректно отражаться в регламентированной отчетности. При этом в Книге продаж НДС ошибочно «сливался» в колонку 18%, в Разделе 3 декларации строка 070 оставалась абсолютно пустой, а в Разделе 9 сумма аванса отображалась некорректно.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем внутренние механизмы платформы 1С 7.7 и рассмотрим два надежных способа ее решения — как с помощью официальных обновлений, так и путем ручной корректировки кода в Конфигураторе для нетиповых (доработанных) баз данных.
Давайте проанализируем ситуацию изнутри. При формировании регламентированного отчета «Декларация по НДС» программа не собирает данные напрямую из регистров или бухгалтерских проводок по счету 68.02. Вместо этого алгоритм заполнения Раздела 3 (в частности, строки 070, где отражается НДС с полученных авансов) обращается к экспортным функциям встроенного отчета «Книга продаж по Постановлению № 1137».
В релизе конфигурации 7.70.648 разработчиками была допущена критическая логическая ошибка в коде обработки Книги продаж. Программа проверяла версию Постановления № 1137, но при распределении сумм по колонкам со ставками НДС происходило следующее: все операции со ставкой 20% из-за неверно написанного условия Если ... Иначе принудительно перенаправлялись в колонки, предназначенные для ставки 18%.
Поскольку алгоритм автозаполнения строки 070 в Разделе 3 декларации ожидал увидеть четкое разделение по ставкам, авансы со ставкой 20% отсекались как ошибочные и не попадали в итоговые показатели. В то же время Раздел 9 декларации (сведения из Книги продаж) заполнялся напрямую по документам, из-за чего суммы там присутствовали, но имели неверную привязку к ставкам налога. Это приводило к жесткому расхождению внутри самой декларации и невозможности сдать отчетность без ручных правок.
Если ваша конфигурация 1С 7.7 находится на поддержке и не подвергалась серьезным изменениям со стороны программистов, лучшим решением будет установка официальных обновлений от фирмы «1С». Разработчики оперативно исправили данную ошибку в два этапа:
Запись книги продаж.Рассмотрим по шагам, как правильно выполнить обновление регламентированной отчетности:
ExtForms. Если программа предложит заменить существующие файлы, согласитесь на замену.Что делать, если ваша база 1С 7.7 существенно доработана под нужды бизнеса, и быстрое обновление на релиз 649 невозможно из-за риска затереть важные кастомизированные алгоритмы? В этом случае мы можем исправить программную ошибку вручную через конфигуратор. Процедура не займет много времени.
Рассмотрим подробнее техническую деталь ошибки. Проблема локализована во внешнем файле отчета Книги продаж — КнигаПродаж1137.ert (или во встроенном отчете конфигурации).
Проанализируем некорректный участок кода, который присутствовал в релизе 648:
Если ВерсияПостановленияНДС1137 = 5 Тогда
Если Ставка = 20 Тогда
ПечСуммаБезНДС20 = ТабОтчета.СуммаБезНДС20;
ПечНДС20 = ТабОтчета.НДС20;
Иначе
ПечСуммаБезНДС18 = ТабОтчета.СуммаБезНДС20; // Логическая ошибка! Суммы 20% приравнивались к переменным 18%
ПечНДС18 = ТабОтчета.НДС20; // Логическая ошибка!
КонецЕсли;
КонецЕсли;
Из-за некорректного блока Иначе программа отправляла расчетные данные по ставке 20% в переменные, отвечающие за вывод 18% НДС в печатной форме и выгрузке. Нам необходимо исправить это ветвление.
Выполним следующие действия по шагам:
КнигаПродаж1137.ert (находится в папке ExtForms или PrnForms вашей информационной базы) через меню «Файл» — «Открыть».Ctrl + F), найдите переменную ВерсияПостановленияНДС1137 или строку Если Ставка = 20 Тогда.
Если ВерсияПостановленияНДС1137 = 5 Тогда
Если Ставка = 20 Тогда
ПечСуммаБезНДС20 = ТабОтчета.СуммаБезНДС20;
ПечНДС20 = ТабОтчета.НДС20;
ИначеЕсли Ставка = 18 Тогда
ПечСуммаБезНДС18 = ТабОтчета.СуммаБезНДС18;
ПечНДС18 = ТабОтчета.НДС18;
Иначе
// Обработка других ставок, если применимо
КонецЕсли;
КонецЕсли;
Сохраните изменения в файле отчета (или сохраните конфигурацию, нажав клавишу F7, если правка вносилась во встроенный отчет метаданных). После сохранения изменений запустите программу в режиме предприятия, переформируйте Книгу продаж и заполните декларацию заново. Проблема будет полностью устранена, а строка 070 примет корректное значение.
Иногда даже после успешного обновления или ручной правки кода строка 070 все равно может оставаться пустой. Это происходит из-за того, что в базе присутствуют документы, проведенные «задним числом» без актуального формирования записей Книги продаж.
Чтобы гарантировать правильность заполнения отчетности, выполним следующую проверку:
20% или 18/20% в зависимости от даты операции).Формирование книги продаж за каждый месяц отчетного квартала. Напомним, что именно эти регламентные документы фиксируют записи в Книге продаж по авансовым операциям.Применяя данные методики, мы гарантируем полное и корректное отражение всех авансовых счетов-фактур в Книге продаж и автоматическое заполнение Раздела 3 декларации по НДС без необходимости ручного ввода информации перед сдачей отчета в налоговую инспекцию.