Почему в 1С:Бухгалтерии 2.0 неверно заполняется код налогового периода в декларации по акцизам?

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

При сдаче регламентированной отчетности бухгалтеры нередко сталкиваются с ситуацией, когда программа 1С автоматически подставляет некорректные данные в титульный лист декларации. Особенно остро эта проблема проявляется в конфигурациях, находящихся на ограниченной поддержке, таких как «Бухгалтерия предприятия» редакции 2.0 (БП 2.0). В данной статье мы детально разберем ошибку, из-за которой в регламентированной финансовой отчетности по акцизам указывается неверный «налоговый период (код)» (например, вместо требуемого кода "ВВ" подставляется стандартный код месяца "12").

Нормативная база: что означает код «ВВ» и когда он применяется?

Для начала давайте разберемся в методологии налогового учета. Согласно инструкциям ФНС по заполнению деклараций по акцизам, коды налоговых периодов отражают не просто календарный месяц, но и особые условия предоставления отчетности. В стандартных ситуациях, когда отчет сдается в обычные сроки (не позднее 25-го числа месяца, следующего за отчетным), используются числовые коды от "01" (январь) до "12" (декабрь).

Однако Налоговый кодекс РФ (в частности, пункт 3 статьи 204 НК РФ) устанавливает альтернативные сроки представления отчетности для отдельных операций и условий. Например, при представлении декларации по акцизам в срок не позднее 25-го числа третьего месяца, следующего за отчетным, применяются специальные буквенные коды:

Существуют также серии кодов от "С1" до "СВ" для отчетности, представляемой не позднее 25-го числа шестого месяца. Если организация находится в процессе ликвидации или реорганизации, указание правильного кода критически важно для корректного приема декларации налоговым органом. Ошибка в коде периода приведет к отказу в приеме отчета со стороны ФНС.

Технический анализ проблемы: где скрывается ошибка в коде 1С?

Перейдем к технической стороне вопроса. Пользователи замечают, что даже при ручном выборе даты и условий, соответствующих коду "ВВ", программа все равно упорно выводит на печать и в файл выгрузки стандартный код "12" (декабрь). Почему так происходит? Выясним причину, заглянув в конфигуратор.

Проблема кроется в коде регламентированного отчета РегламентированныйОтчетАкцизыГСМ. Если мы откроем основную форму отчета (Форма.ОсновнаяФорма) и проанализируем процедуру ОсновныеДействияФормыОК(Кнопка), то обнаружим там следующий фрагмент кода:


Если Найти("1234", СрокПредставления) Тогда
    ВыбФормаОтчета.ВариантСрокаПредставления = Число(СрокПредставления);
Иначе
    ВыбФормаОтчета.ВариантСрокаПредставления = 1;
КонецЕсли;

Давайте подробно разберем, как именно этот фрагмент нарушает логику программы и приводит к ошибке:

  1. Логическая ошибка в функции Найти(): Функция Найти(СтрокаПоиска, ПодстрокаПоиска) ищет вхождение подстроки в строке. В данном случае разработчики попытались проверить, относится ли выбранный срок представления к стандартным числовым вариантам (1, 2, 3 или 4). Однако параметры функции перепутаны местами или использованы некорректно. Когда переменная СрокПредставления принимает текстовое значение "ВВ", выражение Найти("1234", "ВВ") пытается найти строку "ВВ" внутри строки "1234". Естественно, совпадений нет, и функция возвращает 0.
  2. Неявное приведение типов в условии: В языке 1С условие Если Число Тогда интерпретирует 0 как Ложь (False), а любое другое число — как Истина (True). Поскольку функция вернула 0, управление передается в ветку Иначе. В результате переменной ВариантСрокаПредставления жестко присваивается значение 1 (что соответствует стандартному ежемесячному сроку сдачи). Программа игнорирует буквенный код и подставляет код периода "12".
  3. Опасность аварийного завершения работы (Runtime-ошибка): Даже если бы разработчики поменяли параметры местами и написали Найти(СрокПредставления, "1234"), при передаче буквенного кода "ВВ" функция вернула бы ложное значение, но в случае успешного прохождения проверки строка Число(СрокПредставления) вызвала бы аварийное завершение работы программы с ошибкой «Преобразование значения к типу Число не может быть выполнено». Программа изначально не была спроектирована под корректную обработку нечисловых кодов в этой переменной.

Почему обновление релиза 1С не решает проблему?

Многие пользователи надеются, что регулярное обновление конфигурации решит эту проблему. Однако практика показывает, что даже после обновления «Бухгалтерии предприятия 2.0» до актуальных релизов (например, 2.0.101 и выше), ошибка сохраняется.

Дело в том, что редакция 2.0 конфигурации «Бухгалтерия предприятия» уже много лет находится на стадии ограниченной поддержки. Фирма «1С» выпускает для нее обновления, содержащие только самые критически важные изменения законодательства: новые формы отчетности, изменения ставок налогов и форматов выгрузки. Логические ошибки в узкоспециализированных и редко используемых механизмах (таких как отчетность по акцизам при реорганизации или ликвидации) зачастую остаются без внимания разработчиков. Поэтому исправлять ситуацию приходится самостоятельно.

Способы решения проблемы

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

Вариант А. Создание и использование внешнего отчета (Рекомендуемый способ)

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

Выполним следующие действия по шагам:

  1. Откройте информационную базу в режиме Конфигуратор.
  2. В дереве метаданных найдите ветку Отчеты -> РегламентированныйОтчетАкцизыГСМ (или другой аналогичный отчет по акцизам, в котором наблюдается данная ошибка).
  3. Нажмите на отчет правой кнопкой мыши и выберите пункт Сохранить как внешний отчет.... Сохраните файл на диск под понятным именем, например, РегламентированныйОтчетАкцизыГСМ_Исправленный.erf.
  4. Откройте сохраненный файл внешнего отчета через меню Файл -> Открыть в Конфигураторе.
  5. В структуре внешнего отчета перейдите на вкладку Формы и откройте форму с именем ОсновнаяФорма.
  6. Перейдите в модуль формы и найдите процедуру ОсновныеДействияФормыОК(Кнопка).
  7. Замените ошибочный фрагмент кода на безопасный вариант (см. пример в Варианте Б).
  8. Сохраните изменения во внешнем отчете.
  9. Запустите программу в режиме 1С:Предприятие, перейдите в справочник Дополнительные отчеты и обработки и зарегистрируйте ваш внешний отчет. Теперь бухгалтеры смогут использовать его для корректного формирования декларации с кодом «ВВ».

Вариант Б. Корректировка кода в конфигураторе (если база изменена)

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

Вместо ошибочного условия в процедуре ОсновныеДействияФормыОК следует написать следующий код:


// Проверяем, является ли СрокПредставления стандартным числовым значением
Если СрокПредставления = "1" Или СрокПредставления = "2" Или СрокПредставления = "3" Или СрокПредставления = "4" Тогда
    ВыбФормаОтчета.ВариантСрокаПредставления = Число(СрокПредставления);
Иначе
    // Для буквенных кодов (ВВ, С1 и др.) передаем строковое значение напрямую
    ВыбФормаОтчета.ВариантСрокаПредставления = СрокПредставления; 
КонецЕсли;

Такой подход полностью исключает неявное приведение типов и корректно обрабатывает любые буквенные коды сроков сдачи, передавая их напрямую в форму отчета без попытки преобразовать строку в число. После внесения изменений выполните обновление конфигурации базы данных (клавиша F7).

Вариант В. Переход на редакцию 3.0 «Бухгалтерия предприятия»

Если вы регулярно сталкиваетесь с подобными техническими недоработками в редакции 2.0, настоятельно рекомендуем рассмотреть вопрос перехода на актуальную версию «1С:Бухгалтерия предприятия» редакции 3.0. В новой редакции полностью переработан механизм регламентированной отчетности, улучшено юзабилити, а все актуальные изменения форматов выгрузки и заполнения кодов (включая реорганизацию и ликвидацию) отслеживаются и оперативно исправляются разработчиками в рамках плановых обновлений.

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

← На главную