Проблема некорректного исчисления НДФЛ, проявляющаяся в виде огромных отрицательных или необоснованно завышенных сумм (вплоть до миллионов), стала массовой для пользователей 1С:Бухгалтерия 3.0 в начале 2018 года. Ситуация была связана с глобальным изменением механизмов учета налога и его привязкой к конкретным датам выплаты дохода. В этой статье мы подробно разберем, почему возникают такие ошибки и как привести учет в порядок.
Выясним причину такого поведения программы. Основная техническая проблема заключалась в некорректном заполнении регистров накопления, таких как РасчетыНалогоплательщиковСБюджетомПоНДФЛ и УчетДоходовДляИсчисленияНДФЛ. В этих регистрах появилось обязательное поле КатегорияДохода. При обновлении на проблемные релизы (начиная с 3.0.57.10) алгоритм обработки существующих записей работал со сбоями.
Проанализируем ситуацию: если в регистре оказывались записи с пустой категорией дохода или записи, где одна и та же сумма учитывалась по разным датам получения дохода, система «теряла» связь между начислением и выплатой. В результате программа пыталась либо доначислить налог за весь год, либо сторнировать его, что и приводило к аномальным цифрам в документе НачислениеЗарплаты.
Рассмотрим последовательность действий, рекомендованную технической поддержкой 1С. Поскольку ошибка была признана разработчиками и исправлялась в последующих патчах, первым делом необходимо обновить конфигурацию до релиза не ниже 3.0.58.26 (или актуального на текущий момент).
Однако простого обновления недостаточно, так как «битые» движения в регистрах уже сформированы. Разберем по шагам процесс восстановления данных:
НачислениеЗарплаты, затем Отпуск, БольничныйЛист, и только после них документы выплаты — ВедомостьНаВыплатуЗарплаты, СписаниеСРасчетногоСчета (или ВыдачаНаличных).СписаниеСРасчетногоСчета, которыми оформлялось перечисление НДФЛ в бюджет.Проанализируем ситуацию, если автоматическое перепроведение не помогает. В этом случае может потребоваться перезаполнение табличных частей в документах начисления зарплаты, чтобы программа заново рассчитала налог по исправленным алгоритмам.
Иногда пользователи замечают, что даже при нажатии кнопки «Пересчитать НДФЛ» суммы не меняются. Посмотрим на скрытые механизмы документа НачислениеЗарплаты. В нем существуют реквизиты КорректировкаНДФЛ и КорректировкаВзносов. Если эти флаги установлены в значение Истина, программа считает, что бухгалтер внес изменения вручную, и блокирует автоматический расчет.
При обновлении на проблемные релизы эти флаги у многих сотрудников могли установиться ошибочно. Чтобы вернуть возможность автоматического расчета, необходимо программно сбросить эти значения. Рассмотрим пример кода, который можно использовать во внешней обработке для исправления конкретного документа:
// Пример программного сброса флагов корректировки
ОбъектДокумент = СсылкаНаДокумент.ПолучитьОбъект();
Для Каждого СтрокаНДФЛ Из ОбъектДокумент.НДФЛ Цикл
// Устанавливаем флаг корректировки в Ложь для пересчета
ОбъектДокумент.КорректировкаНДФЛ = Ложь;
КонецЦикла;
Для Каждого СтрокаВзносы Из ОбъектДокумент.Взносы Цикл
ОбъектДокумент.КорректировкаВзносов = Ложь;
КонецЦикла;
ОбъектДокумент.Записать(РежимЗаписиДокумента.Проведение);
После снятия этих признаков документ при перезаполнении начнет учитывать актуальные данные регистров и корректно рассчитывать налог.
Если проблема сохраняется даже на более новых релизах (например, 3.0.67), и вы наблюдаете нереальные суммы начислений, можно прибегнуть к исправлению программного кода через механизм расширений. Проанализируем функцию ЭтоДанныеМежрасчетногоПериода в модуле УчетНачисленнойЗарплаты.
Ошибка часто возникает из-за того, что программа неверно определяет тип расчета (основной или межрасчетный), из-за чего налог может дублироваться. Предложенный ниже метод заставляет систему всегда считать данные актуальными для проверки в текущем периоде:
&Вместо("ЭтоДанныеМежрасчетногоПериода")
Функция Ипр_ЭтоДанныеМежрасчетногоПериода(ПорядокВыплаты)
// Комментируем стандартную логику проверки
// Если ПорядокВыплаты = Перечисления.ПорядокВыплатыЗарплатыПеречислением.ВМежрасчетныйПериод Тогда
// Возврат Истина;
// КонецЕсли;
// Принудительно возвращаем Истина для корректного анализа всех начислений периода
Возврат Истина;
КонецФункции
Внимание: Данный метод является радикальным и должен применяться только опытными специалистами, когда стандартные средства исправления учета не дали результата.
Разберем еще один важный момент: потерю стандартных налоговых вычетов на детей. Проблема часто возникает, если сотрудники меняли структурное подразделение или если в регистре УчетДоходовДляИсчисленияНДФЛ отсутствует привязка к налоговому органу (регистрация в ИФНС).
Рекомендуем воспользоваться отчетом «Универсальный отчет» по регистру накопления УчетДоходовДляИсчисленияНДФЛ. Настройте группировку по сотруднику и полю КатегорияДохода. Если вы увидите пустые значения в колонке категории или регистрации в налоговом органе — это и есть причина «минусов». Такие записи нужно исправить путем перепроведения первичных документов или с помощью документа ОперацияУчетаНДФЛ, который позволяет вручную скорректировать остатки по регистрам налога, не затрагивая бухгалтерские проводки.
Подводя итог, отметим: в большинстве случаев корректный результат достигается после обновления на последний релиз и строго хронологического перепроведения цепочки документов «Начисление — Ведомость — Списание с расчетного счета». Если же суммы «замерли» и не меняются, используйте групповое изменение реквизитов для сброса флагов ручной корректировки НДФЛ.