С переходом на прогрессивную шкалу НДФЛ в 2025 году многие пользователи "1С:Зарплата и управление персоналом" столкнулись с трудностями при формировании отчетности. Одна из ключевых проблем — некорректное отображение общего дохода в справке о доходах (бывшая 2-НДФЛ). Например, в релизе ЗУП 3.1.31.67 доход может неверно распределяться по вкладкам с разными ставками (13%, 15%, 18% и т.д.), особенно если общая сумма за месяц превышает установленные законодательством пределы. Давайте разберемся, почему так происходит и какие существуют пути решения.
Проанализируем ситуацию. Если вы заметили, что в справке о доходах общая сумма дохода на вкладке с базовой ставкой неверна, а на вкладках с повышенными ставками (18%, 20%, 22%) доход и вовсе не отражается, хотя лимиты превышены, — скорее всего, вы столкнулись с программной ошибкой. Это подтверждается обсуждениями на профильных форумах и официальными исправлениями от 1С.
Главный вывод: описанная проблема — это ошибка конкретного релиза конфигурации. Разработчики знают о ней и выпускают исправления в виде патчей и полноценных обновлений.
Решение: Самый простой и правильный способ — обновить вашу конфигурацию 1С:ЗУП до последней актуальной версии. Перед обновлением обязательно сделайте резервную копию базы данных.
Хотя основная причина — ошибка, обсуждение проблемы выявило более глубокие, архитектурные недочеты в механизме расчета НДФЛ, которые способствуют появлению таких ситуаций при каждом изменении законодательства. Рассмотрим один из ключевых моментов, который вызвал критику со стороны разработчиков.
В коде конфигурации ставки и пределы для расчета НДФЛ по прогрессивной шкале на 2025 год оказались "зашиты" напрямую, а не вынесены в настраиваемый регистр сведений. Посмотрим на пример из общего модуля:
Функция ПараметрыРасчетаНДФЛПоПрогрессивнойШкалеС2025Года() Экспорт
...
ПараметрыНалоговаяБаза.Вставить("СтавкаДляРезидента", СтавкаДляРезидента);
ПараметрыНалоговаяБаза.Вставить("СтавкаСПревышения1", 0.15);
ПараметрыНалоговаяБаза.Вставить("СтавкаСПревышения2", 0.18);
ПараметрыНалоговаяБаза.Вставить("СтавкаСПревышения3", 0.20);
ПараметрыНалоговаяБаза.Вставить("СтавкаСПревышения4", 0.22);
ПараметрыНалоговаяБаза.Вставить("Предел1", 2400000);
ПараметрыНалоговаяБаза.Вставить("Предел2", 5000000);
ПараметрыНалоговаяБаза.Вставить("Предел3", 20000000);
ПараметрыНалоговаяБаза.Вставить("Предел4", 50000000);
...
Что это значит для пользователя и разработчика? Такой подход, известный как "хардкод", делает систему негибкой. При любом изменении ставок или пороговых значений в Налоговом кодексе потребуется выпуск нового релиза программы. Если бы эти параметры хранились в регистре сведений (РегистрСведений), их можно было бы обновлять более гибко, а в некоторых случаях даже настраивать вручную, не дожидаясь обновления. Это одна из причин, почему расчет НДФЛ в ЗУП является сложным и "хрупким" механизмом.
Проблема с распределением дохода в справке — лишь верхушка айсберга. Обновления, связанные с новой шкалой НДФЛ, породили и другие ошибки. Рассмотрим наиболее частые из них.
После обновления у сотрудников, имеющих право на стандартные или социальные вычеты, мог задваиваться налог в последующих расчетах. Причина в том, что в регистр сведений «Предоставленные стандартные и социальные вычеты (НДФЛ)» добавили новый реквизит «Налоговая база». Для документов, созданных до обновления, этот реквизит остался незаполненным, что и приводило к ошибкам.
Как исправить: Необходимо перезаполнить и перепровести документы начисления, в которых предоставлялись вычеты. Если документов много, можно воспользоваться групповой обработкой или написать небольшой скрипт для заполнения нового реквизита в существующих записях регистра.
Были замечены случаи, когда при расчете отпуска или больничного в середине месяца (межрасчетная выплата) в документ попадала сумма НДФЛ с будущей зарплаты, но без самой базы для расчета — дохода. Это приводит к завышению удержанного налога в ведомости.
Как исправить: В таких случаях рекомендуется вручную проверять расчет налога в документе начисления отпуска или больничного и удалять строки с некорректно рассчитанным "лишним" налогом на вкладке "НДФЛ".
При расчете зарплаты за июнь с выплатой в июле (на стыке 2-го и 3-го кварталов) программа может неверно отнести часть исчисленного НДФЛ к предыдущему кварталу. Это вызывает расхождения в контрольных соотношениях при проверке отчета 6-НДФЛ.
Как исправить: Тщательно проверяйте отчеты «Анализ НДФЛ по месяцам» и «Сводная справка 2-НДФЛ». Убедитесь, что даты получения дохода и удержания налога соответствуют нужным периодам. Иногда для исправления ситуации требуется отменить проведение документов, изменить дату выплаты и провести их заново в правильной последовательности.
Свежие релизы не только исправляют старые ошибки, но иногда и добавляют новые. В одном из обновлений (3.1.32.17) добавили новые виды начислений: «Компенсация не использованных дней отдыха» и «Компенсация не использованных часов отдыха». Однако в их настройках по умолчанию было неверно указано, что они не облагаются НДФЛ и страховыми взносами. При этом настройка обложения взносами была заблокирована для редактирования (отображалась серым цветом).
Для исправления этой проблемы программист может внести изменения в код конфигурации. Давайте разберем, как это сделать.
Нужно найти в модуле менеджера плана видов расчета ПланВидовРасчета.Начисления код, отвечающий за свойства этих начислений, и внести правку. Проблема в том, что некоторые свойства программно добавляются в список недоступных для изменения. Наша задача — удалить их из этого списка.
Пример кода для исправления:
// Компенсация отгулов
Описание = СвойстваНачисленияПоКатегорииПоУмолчанию();
// ... (прочие свойства начисления)
Описание.КодДоходаСтраховыеВзносы = Справочники.ВидыДоходовПоСтраховымВзносам.НеОблагаетсяЦеликом; // Это неверная настройка
// ...
Описание.НедоступныеСвойства.Добавить("ВидВремени");
Описание.НедоступныеСвойства.Добавить("ОбозначениеВТабелеУчетаРабочегоВремени");
// Вот строки, которые нужно изменить или добавить, чтобы разблокировать поля
// Удаляем свойство "КодДоходаНДФЛ" из списка недоступных для редактирования в интерфейсе
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Описание.НедоступныеСвойства, "КодДоходаНДФЛ");
// Аналогично можно поступить и для других свойств, например, для взносов
// (в исходном примере с форума этого не было, но логика та же)
// ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Описание.НедоступныеСвойства, "КодДоходаСтраховыеВзносы");
// ... (дальнейший код)
После внесения таких изменений и обновления конфигурации базы данных, заблокированные ранее поля в настройках вида начисления станут доступны для редактирования, и вы сможете установить корректные параметры обложения НДФЛ и страховыми взносами.
Подводя итог, можно дать несколько ключевых советов:
«Анализ НДФЛ по месяцам», «Проверка расчета взносов») для контроля.Сложность расчета НДФЛ в 1С:ЗУП — это отражение сложности самого налогового законодательства. Совместная работа бухгалтеров-расчетчиков и программистов 1С позволяет успешно справляться с этими вызовами.