Переход с версии 1С:ЗУП 2.5 на 3.1 часто сопровождается техническими сложностями, связанными с переносом остатков и оборотов. Одной из самых распространенных проблем является некорректный расчет удержаний по исполнительным листам в первом месяце работы после переноса. Рассмотрим ситуацию, когда база начислений для исполнительного листа собирается верно, а итоговая сумма удержания получается завышенной.
Для начала разберем, по какой формуле программа рассчитывает сумму к удержанию по исполнительному листу (если установлен процент). Согласно законодательству, расчет производится из суммы «чистого» дохода, то есть после вычета НДФЛ. Математически в системе это выглядит следующим образом:
Результат = (РасчетнаяБаза – НДФЛ) * ПроцентУдержания
Где РасчетнаяБаза — это совокупность всех начислений сотрудника, входящих в базу исполнительного листа, а НДФЛ — исчисленный налог именно с этих начислений. Если в текущем месяце часть данных пришла из документа Перенос данных, а часть была введена вручную типовыми документами (например, Премия или Материальная помощь), алгоритм программы должен корректно сопоставить весь доход и весь налог.
Проанализируем ситуацию, описанную в теме: программа видит всю сумму начислений (и перенесенные, и новые), но при вычитании НДФЛ учитывает только тот налог, который был рассчитан в текущем документе Начисление зарплаты и взносов с новой премии. НДФЛ, который «прилетел» из переноса данных, игнорируется. В результате база для умножения на процент становится искусственно завышенной.
Чтобы понять, почему программа «теряет» часть НДФЛ при расчете исполнительного листа, нам необходимо заглянуть в «подкапотное пространство» системы — регистры накопления. Именно в них хранятся данные, которые использует модуль расчета. Проверим основные регистры, отвечающие за учет доходов и налогов:
Рассмотрим подробнее регистр Расчеты налогоплательщиков с бюджетом по НДФЛ. В контексте нашей проблемы критически важно поле Начисление. Если при переносе данных из старой базы это поле осталось незаполненным, программа не может «связать» конкретную сумму налога с конкретным видом дохода. Для алгоритма расчета исполнительного листа этот налог становится «бесхозным», и он не вычитает его из расчетной базы.
Выясним причину некорректного поведения системы, проанализировав записи документа Перенос данных. Обычно данные по НДФЛ и начислениям переносятся документами с кодами ЗП_СЗП, НДФЛ или ПД.
Рассмотрим пошаговый алгоритм исправления:
Шаг 1. Проверка категории дохода.
Откроем документ Перенос данных и перейдем на закладку, соответствующую регистру Расчеты налогоплательщиков с бюджетом по НДФЛ. Проанализируем колонку Категория дохода. Часто при автоматическом переносе там может стоять значение, не соответствующее настройкам начислений в новой базе ЗУП 3.1. Например, если начисление в программе настроено как Оплата труда, а в регистре указано Прочие доходы, связь может быть нарушена. Установите корректное значение, соответствующее виду дохода (чаще всего это Оплата труда (в т.ч. мартовская зарплата)).
Шаг 2. Заполнение аналитики «Начисление».
Это самый важный момент. В том же регистре найдите колонку Начисление. Если она пуста, программа не понимает, к какому начислению относится данный налог. Вам необходимо вручную (или с помощью групповой обработки, если данных много) указать конкретный вид начисления из справочника Начисления (например, Оплата по окладу), за который был исчислен этот налог в старой базе.
Шаг 3. Сопоставление с регистром доходов.
Перейдите на закладку регистра Учет доходов для исчисления НДФЛ. Проверьте, чтобы суммы доходов там совпадали с суммами, указанными в регистре расчетов по НДФЛ. Убедитесь, что Дата получения дохода совпадает в обоих регистрах. Если даты или категории будут различаться, механизм сопоставления базы и налога в документе Начисление зарплаты не сработает.
Стоит отметить, что в старых релизах (например, ветка 3.1.6, которая упоминалась в обсуждении) существовали зарегистрированные ошибки (баги) фирмы 1С. Например, ошибка 10173487, при которой к расчетной базе прибавлялся отрицательный НДФЛ или некорректно учитывались возвраты налога. Если вы работаете на устаревшем релизе, настоятельно рекомендуется выполнить обновление до актуальной версии (минимум 3.1.10 и выше), где алгоритмы расчета исполнительных листов были значительно переработаны и стали более стабильными.
В современных версиях ЗУП 3.1 также реализован механизм ограничения взысканий. Если после всех исправлений сумма все равно кажется вам странной, проверьте настройки документа Ограничение взысканий. Программа может автоматически уменьшать сумму по исполнительному листу, если общая сумма всех удержаний превышает 50% (или 70% в особых случаях) от заработка сотрудника.
Проанализируем ситуацию визуально. Допустим, у сотрудника в расчетном листке мы видим:
Если в Переносе данных не заполнено поле Начисление для НДФЛ в 5 200 руб., то при расчете исполнительного листа (25%) программа сделает следующее:
((40 000 + 10 000) - 1 300) * 25% = 12 175 руб.
Хотя правильный расчет должен быть:
((40 000 + 10 000) - (5 200 + 1 300)) * 25% = 10 875 руб.
Разница в 1 300 рублей — это как раз результат того, что программа «не вычла» налог с перенесенных данных из базы удержания. Исправление аналитики в регистрах документа Перенос данных позволяет системе увидеть все 6 500 руб. налога и прийти к верному результату.
Подведем итог. Если вы столкнулись с неверным расчетом удержаний после переноса данных, не спешите править результат вручную. Проверьте технологическую цепочку данных:
Настройках удержания (раздел Настройки — Удержания — Исполнительный лист) на вкладке Расчет базы включены все необходимые виды начислений.Перенос данных на наличие заполненных полей Начисление и Категория дохода в регистрах НДФЛ.Премия -> Выплата, где удержание могло зафиксироваться частично.После внесения правок в регистры обязательно пересчитайте сотрудника в документе Начисление зарплаты и взносов. Для этого не обязательно пересчитывать весь документ, достаточно нажать правой кнопкой мыши на строке сотрудника и выбрать команду Пересчитать сотрудника. Программа обновит связи в оперативной памяти и должна показать корректный результат.