Как в формуле 1С:ЗУП получить процент НДФЛ (13% или 15%) для расчета удержаний?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Налоговый учет
← На главную

При настройке сложных удержаний в программе 1С:Зарплата и управление персоналом 3.1 (ЗУП) пользователи часто сталкиваются с необходимостью рассчитать сумму «от чистого дохода». Типичный пример — профсоюзные взносы, которые должны исчисляться из базы за вычетом фактически удержанного НДФЛ. Однако, когда ставка налога становится прогрессивной (13% до 5 млн рублей и 15% свыше), простая формула перестает работать корректно.

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

Разберем причину: почему ставка НДФЛ недоступна в формуле удержания?

Проанализируем внутреннюю логику работы документа НачислениеЗарплатыИВзносов. Программа выполняет расчет строго последовательно по вкладкам, слева направо:

  1. Начисления — рассчитываются основные доходы сотрудника.
  2. Договоры — расчет по гражданско-правовым договорам.
  3. Пособия — расчет за счет ФСС.
  4. Удержания — именно здесь отрабатывает ваша формула для профсоюзных взносов или исполнительных листов.
  5. НДФЛ — расчет подоходного налога происходит в самую последнюю очередь.

Таким образом, в момент, когда программа вычисляет результат по формуле удержания, сумма НДФЛ еще не рассчитана. В движке формул 1С просто нет показателя, который мог бы «заглянуть в будущее» и узнать, какая ставка (13% или 15%) применится на следующей вкладке документа. Это фундаментальное ограничение типового механизма.

Способ 1. Использование штатного механизма «Чистой базы»

Прежде чем пытаться прописать ставку 13% или 15% вручную в тексте формулы, рассмотрим самый корректный методический путь. В 1С:ЗУП 3.1 предусмотрена возможность автоматического уменьшения расчетной базы на сумму налога.

Выясним, как это настроить по шагам:

  1. Откроем карточку вашего удержания (например, Профсоюзные взносы).
  2. Перейдем на вкладку Расчет базы.
  3. В нижней части окна найдем флажок Является чистым доходом или настройку уменьшения базы на сумму НДФЛ (в зависимости от релиза конфигурации).
  4. При включении этой настройки программа сама выполнит итерационный расчет: она предварительно вычислит НДФЛ, вычтет его из базы и только потом определит сумму удержания.

Этот способ является наиболее точным, так как он учитывает не только ставку 13/15%, но и право сотрудника на налоговые вычеты, которые также влияют на «чистый» доход.

Способ 2. Использование показателя «Доход с начала года» в формуле

Если специфика вашего расчета требует именно ручного управления ставкой в формуле, мы можем попытаться имитировать логику налогового кодекса. Для этого воспользуемся встроенным показателем ДоходСНачалаГода.

Рассмотрим пример построения такой формулы:


Результат = (РасчетнаяБаза - (РасчетнаяБаза * ?(ДоходСНачалаГода > 5000000, 0.15, 0.13))) * ПроцентПрофвзносов / 100

Проанализируем ситуацию, которая возникает при таком подходе. Эта формула будет работать стабильно только в «крайних» случаях: когда доход либо точно меньше 5 млн, либо уже давно их превысил.

Важный нюанс: в месяц перехода через порог 5 000 000 рублей такая формула сработает неправильно. Она применит ставку 15% ко всей базе текущего месяца, в то время как по закону часть дохода до порога должна облагаться по ставке 13%, а часть после — по 15%. Формула в ЗУП не умеет автоматически дробить базу внутри одного расчета.

Способ 3. Прогрессивная шкала 2025 года и сложные условия

С 1 января 2025 года ситуация усложняется введением пятиступенчатой шкалы НДФЛ (13%, 15%, 18%, 20% и 22%). Попытка реализовать это через вложенные условия ?() превратит формулу в нечитаемую конструкцию.

Посмотрим на пример того, как могла бы выглядеть такая логика:


?(ДоходСНачалаГода <= 2400000, 0.13, 
  ?(ДоходСНачалаГода <= 5000000, 0.15, 
    ?(ДоходСНачалаГода <= 20000000, 0.18, 0.20)
  )
)

Как мы видим, такой подход становится крайне трудозатратным и хрупким. При любом изменении законодательства вам придется вручную переписывать формулы во всех видах удержаний.

Способ 4. Механизм «Данные для расчета зарплаты» (для программистов)

Если штатные средства не подходят, разберем более гибкий, но требующий небольшого вмешательства вариант. Мы можем создать новый Показатель расчета зарплаты (например, ТекущаяСтавкаНДФЛ).

Алгоритм реализации будет следующим:

  1. Создаем показатель ТекущаяСтавкаНДФЛ с типом «Числовой» и назначением «Для сотрудника».
  2. Создаем документ Данные для расчета зарплаты, через который этот показатель будет вводиться.
  3. Используем расширение или внешнюю обработку, которая перед расчетом зарплаты будет анализировать доходы сотрудника и программно записывать актуальную ставку (0.13 или 0.15) в этот показатель.
  4. В формуле удержания просто обращаемся к этому показателю: РасчетнаяБаза * ТекущаяСтавкаНДФЛ.

Резюме и рекомендации

Подводя итог нашему анализу, можно сделать следующие выводы:

1. Прямого способа получить ставку НДФЛ в формуле не существует из-за очередности расчета документа (удержания считаются раньше налога).

2. Рекомендуемый способ — использование настройки «Расчет базы за вычетом НДФЛ» в настройках самого удержания. Это избавит вас от необходимости вручную прописывать ставки и условия перехода через 5 миллионов.

3. Использование показателя ДоходСНачалаГода допустимо для простых оценочных расчетов, но оно дает погрешность в месяц перехода лимита.

4. С учетом расширения прогрессивной шкалы в 2025 году, старайтесь уходить от «жесткого» кодирования ставок (13, 15) в формулах в пользу системных механизмов 1С:ЗУП.

← На главную