Как исправить ошибку заполнения 6-НДФЛ за 4 квартал 2021 года в 1С:Бухгалтерии 7.7?

Программист 1С v7.7 1C:Бухгалтерия Налоговый учет
← На главную

При подготовке отчетности 6-НДФЛ за 4 квартал 2021 года в конфигурации «1С:Бухгалтерия 7.7» пользователи столкнулись с системной ошибкой. Программа выдает сообщение о том, что не заполнены коды вычетов во всех строках отчета, даже если у сотрудников отсутствуют вычеты. Это препятствует печати и выгрузке файла в формате XML. Разберем, как мы можем устранить эту проблему самостоятельно.

Анализ причины возникновения ошибки

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

Для решения задачи нам потребуется внести изменения непосредственно в файл внешней обработки 6NDFL2104.ERT. Рассмотрим, какие именно действия нужно предпринять.

Пошаговое исправление кода обработки

Чтобы обойти блокировку печати и выгрузки, нам необходимо изменить логическое условие, которое отвечает за контроль заполненности данных. Выполним следующие действия:

  1. Откроем файл 6NDFL2104.ERT в конфигураторе или во внешнем редакторе кода.
  2. Найдем в модуле обработки строку номер 2183 (номер может незначительно отличаться в зависимости от релиза, поэтому ищите блок проверки условий).
  3. Разберем текущую структуру условия, которая выглядит следующим образом:

Если (ПустаяСтрока(ТекДанныеКодМесяцП) = 0)
и (ПустаяСтрока(ТекДанныеКодДоходП) = 0)
и (ПустаяСтрока(ТекДанныеСумДоходП) = 0)
и (ПустаяСтрока(ТекДанныеКодВычетП) = 0)
и (ПустаяСтрока(ТекДанныеСумВычетП) = 0)
Тогда

Суть нашего вмешательства: На текущий момент все условия соединены оператором И. Это означает, что система проверяет наличие данных во всех перечисленных полях одновременно. Если хотя бы одно поле (например, ТекДанныеКодВычетП) пустое, условие не выполняется, и программа считает отчет незаполненным.

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


Если (ПустаяСтрока(ТекДанныеКодМесяцП) = 0)
и (ПустаяСтрока(ТекДанныеКодДоходП) = 0)
и (ПустаяСтрока(ТекДанныеСумДоходП) = 0)
// Убираем или меняем на ИЛИ условия проверки вычетов:
ИЛИ (ПустаяСтрока(ТекДанныеКодВычетП) = 0)
ИЛИ (ПустаяСтрока(ТекДанныеСумВычетП) = 0)
Тогда

Рекомендации по тестированию

После внесения изменений в файл 6NDFL2104.ERT обязательно проведем следующие тесты:

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

Будьте внимательны при изменении кода: всегда сохраняйте резервную копию оригинального файла 6NDFL2104.ERT перед внесением любых правок, чтобы иметь возможность вернуть исходное состояние конфигурации в случае возникновения непредвиденных проблем.

← На главную