Обновление конфигурации «Зарплата и управление персоналом» до версии 3.1.4.120 стало настоящим испытанием для многих бухгалтеров и технических специалистов. Основная проблема, получившая название «бешеный НДФЛ», выражается в том, что программа начинает массово пересчитывать налог за все прошлые месяцы года во всех документах начисления (отпусках, больничных, начислении зарплаты). В некоторых случаях суммы исчисленного налога достигают астрономических значений (триллионов рублей), а в расчетных листках появляются бесконечные строки с плюсовыми и минусовыми корректировками.
В этой статье мы подробно разберем, почему это произошло, как функционирует новая архитектура учета НДФЛ и какими способами можно привести учет в порядок, не дожидаясь исправительных релизов.
Рассмотрим архитектурное изменение, которое внедрили разработчики 1С в версии 3.1.4. В программу был введен новый обязательный реквизит — Категория дохода. Ранее категория (оплата труда, прочие доходы и т.д.) определялась алгоритмами «на лету» на основании кода дохода. Теперь же это жесткое измерение в регистрах накопления СведенияОДоходахНДФЛ и РасчетыНалогоплательщиковСБюджетомПоНДФЛ.
Проанализируем ситуацию: при обновлении запускается обработчик, который должен проставить категорию во всех записях за текущий год. Однако из-за ошибки в алгоритме пакетной обработки (так называемая «ошибка первой тысячи») система корректно обрабатывает только первую порцию данных, оставляя остальные записи пустыми. Когда вы открываете любой документ текущего месяца, движок расчета НДФЛ видит разницу между записями в регистрах (где-то категория есть, а где-то нет) и воспринимает это как необходимость пересчета. Программа пытается «сторнировать» доход без категории и «начислить» его заново с категорией, порождая огромные таблицы корректировок.
Если в вашей организации используются документы Операция учета НДФЛ (например, для ввода остатков или корректировок), начнем исправление с них. Выяснено, что после обновления движения этих документов могут «разъезжаться»: в документе указан один сотрудник, а в регистры записываются данные по другим.
Рассмотрим порядок действий:
Операция учета НДФЛ.Проанализируем работу регистра РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Опытным путем установлено, что для корректного расчета реквизит Дата получения дохода фиксирована должен иметь определенные значения. Разберем по шагам:
Для записей с категорией Оплата труда этот реквизит должен иметь значение Истина (ДА). Для остальных категорий (отпуска, больничные) — Ложь (НЕТ). При проведении документов система пытается заполнить этот признак автоматически. Посмотрим на фрагмент логики, который заложен в системе:
НоваяСтрока.ДатаПолученияДоходаФиксирована =
НоваяСтрока.КатегорияДохода = Перечисления.КатегорииДоходовНДФЛ.ОплатаТруда
Или НоваяСтрока.КатегорияДохода = Перечисления.КатегорииДоходовНДФЛ.ДоходВНатуральнойФормеОтТрудовойДеятельности
Или НоваяСтрока.КатегорияДохода = Перечисления.КатегорииДоходовНДФЛ.ПрочиеНатуральныеДоходы;
Если автоматическое перепроведение не помогает, необходимо воспользоваться обработкой для заполнения пустых значений КатегорияДохода в регистрах. Важно, чтобы категория в регистре СведенияОДоходахНДФЛ полностью совпадала с категорией в РасчетыНалогоплательщиковСБюджетомПоНДФЛ.
Если вы имеете доступ к конфигуратору, можно внести изменения в общий модуль УчетНДФЛ, чтобы стабилизировать расчет. Выяснено, что в процедуре РассчитатьНалогПоОсновнойСтавке сортировка таблицы физического лица работает некорректно для некоторых сотрудников.
Найдем строку:
ВспомогательнаяТаблицаФизическогоЛица.Сортировать("МесяцНалоговогоПериода Убыв");
Попробуем дополнить сортировку, чтобы система более предсказуемо обрабатывала суммы налога:
ВспомогательнаяТаблицаФизическогоЛица.Сортировать("МесяцНалоговогоПериода Убыв, НалогПоСтавке13 Убыв");
Это помогает избежать ситуаций, когда программа хаотично распределяет налог по разным датам получения дохода внутри одного месяца.
Многие пользователи заметили, что в версии 3.1.4 документы Ведомость на выплату стали сами «начислять» НДФЛ. Разберем, почему это происходит. В ведомостях появилась Дата выплаты. Для межрасчетных доходов (отпуска, больничные) налог теперь окончательно фиксируется в момент выплаты. Если дата реальной выплаты отличается от той, что была указана в документе Отпуск, ведомость делает корректировку.
Чтобы избежать «праздника» лишних начислений в ведомостях в переходный период:
Отпуск и Больничный лист указана актуальная планируемая дата выплаты.Если масштаб бедствия слишком велик (тысячи сотрудников и триллионные суммы), а выплаты нужно делать «вчера», рассмотрим вариант отката на релиз 3.1.3.274.
Важно: этот метод требует осторожности и предварительного бэкапа!
.cf.Проанализируем опыт коллег, успешно победивших проблему без отката. Основной ключ к успеху — последовательность. Нельзя просто перепровести документы за декабрь, если в январе-феврале «дыры» в категориях доходов.
УчетНДФЛПовтИсп.КатегорияДоходаПоЕгоКоду(КодДохода).Помните, что фирма 1С признала данную проблему под кодом 10188179 и полностью исправила алгоритмы обновления только в ветке 3.1.5. Если вы еще не обновились на 3.1.4.120 — настоятельно рекомендуем пропустить этот релиз и переходить сразу на более поздние, стабильные версии.