При расчете удержаний (например, алиментов или выплат по соглашениям) часто возникает задача удержать определенный процент от дохода сотрудника за вычетом налога на доходы физических лиц. Расчетчики и бухгалтеры нередко настраивают собственное удержание с произвольной формулой вида: Результат = Процент * (Расчетная база - Исчисленный НДФЛ). Однако при начислении зарплаты показатель Исчисленный НДФЛ оказывается равен нулю, и программа удерживает сумму от полной начисленной базы. Разберем причины такого поведения платформы и рассмотрим рабочие варианты решения этой проблемы.
Проанализируем механику работы расчетного механизма конфигурации 1С:Зарплата и Управление Персоналом 2.5. В плане видов расчета Удержания организаций предусмотрена возможность составления произвольных формул с использованием предопределенных показателей. Показатель Исчисленный НДФЛ действительно присутствует в списке доступных переменных, однако универсальный алгоритм сбора показателей не умеет динамически рассчитывать сумму налога «на лету» для произвольных удержаний.
В момент вычисления строки на вкладке Прочие удержания универсальный движок не обращается к табличной части НДФЛ текущего документа и не ищет в ней исчисленный налог. В результате для любой произвольной формулы значение показателя Исчисленный НДФЛ всегда возвращает 0. Вычитание налога из базы программно заложено разработчиками исключительно в предопределенные способы расчета, которые жестко зашиты в общие модули расчета регламентированной зарплаты.
Кроме того, имеет значение строгая очередность расчета внутри документа Начисление зарплаты работникам организаций. Даже в типовых алгоритмах удержание не сможет уменьшить базу на налог, если вкладка НДФЛ еще не рассчитана. Если пользователь запускает расчет по частям (сначала начисления, а затем удержания в обход вкладки налога), налог попросту отсутствует в оперативной памяти документа.
Самым надежным и методически правильным решением является использование штатного механизма исполнительных листов. Этот документ в 1С предназначен не только для удержаний по судебным решениям, но и для любых добровольных удержаний по заявлениям сотрудников (например, добровольная уплата алиментов).
Разберем по шагам, как настроить расчет через исполнительный лист:
Процентом и зададим требуемый процент (например, 25%).Исполнительный лист процентом.Теперь в документе Начисление зарплаты работникам организаций на вкладке Удержания при нажатии кнопки Рассчитать → Рассчитать (полный расчет) программа выполнит строгую последовательность: сначала будут рассчитаны начисления, затем налог на вкладке НДФЛ, и только после этого автоматически рассчитается сумма удержания с уменьшением расчетной базы на исчисленный налог.
Если специфика учета категорически запрещает регистрацию документа Исполнительный лист, а расчет требуется выполнить быстро, проанализируем математическую сторону вопроса.
В ситуации, когда доход сотрудника облагается стандартной ставкой НДФЛ 13% и работник не имеет налоговых вычетов (стандартных, социальных, имущественных), базу после налогообложения можно выразить через постоянный коэффициент:
БазаПослеНалога = РасчетнаяБаза * (1 - 0.13) = РасчетнаяБаза * 0.87
Соответственно, требуемый процент удержания можно скорректировать с учетом этого коэффициента. Например, если требуется удерживать 25% от заработка за вычетом НДФЛ:
ЭффективныйПроцент = 25 * 0.87 = 21.75%
В настройке вида расчета удержания достаточно использовать простую формулу: Результат = Процент * Расчетная база, а в качестве процента назначить 21,75%. При начислении 36 000 рублей удержание составит ровно 7 830 рублей, что в точности соответствует расчету: (36 000 - 4 680) * 25% = 7 830 рублей.
Важное ограничение: данный подход неприменим, если у сотрудника появляются налоговые вычеты или часть начислений облагается по другим ставкам, так как сумма исчисленного налога перестает быть строго пропорциональной всей начисленной базе.
Для сохранения произвольного вида расчета без изменения типовой конфигурации можно подключить внешнюю обработку табличной части для документа Начисление зарплаты работникам организаций.
Рассмотрим алгоритм, который должна выполнять внешняя обработка:
Начисления, НДФЛ и ПрочиеУдержания.ПрочиеУдержания вычисляется сумма налога из вкладки НДФЛ по совпадению сотрудника и периода.
Для Каждого СтрУдержания Из СсылкаНаОбъект.ПрочиеУдержания Цикл
Если СтрУдержания.ВидРасчета = НужныйВидРасчета Тогда
Отбор = Новый Структура("ФизЛицо", СтрУдержания.Физлицо);
СтрокиНДФЛ = СсылкаНаОбъект.НДФЛ.НайтиСтроки(Отбор);
НалогСотрудника = 0;
Для Каждого СтрНДФЛ Из СтрокиНДФЛ Цикл
НалогСотрудника = НалогСотрудника + СтрНДФЛ.Налог;
КонецЦикла;
БазаЗаВычетомНДФЛ = СтрУдержания.РасчетнаяБаза - НалогСотрудника;
СтрУдержания.Результат = Окр(БазаЗаВычетомНДФЛ * СтрУдержания.Показатель1 / 100, 2);
КонецЕсли;
КонецЦикла;
Если база данных уже снята с поддержки и находится на доработке, можно скорректировать заполнение структуры показателей. В типовых общих модулях расчета регламентированной зарплаты (в частности, в процедурах сбора показателей для расчета удержаний) выполняется выборка данных из табличной части НДФЛ.
Посмотрим на логику доработки: при формировании таблицы показателей для произвольных формул необходимо дополнить процедуру так, чтобы значение показателя с идентификатором ИсчисленныйНДФЛ заполнялось фактической суммой налога, рассчитанной для данного сотрудника в текущем документе. Это восстановит работоспособность произвольной формулы без необходимости перехода на другие документы.