Как получить сумму начислений сотрудника за вычетом НДФЛ и с учетом вычетов в 1С?

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

При автоматизации управленческого учета, интеграции 1С со сторонними системами или расчете сложных систем мотивации часто возникает задача: получить сумму конкретных начислений сотрудника (например, только оклада и регулярных надбавок, исключая больничные и отпуска) «чистыми» — то есть за вычетом исчисленного НДФЛ и с учетом предоставленных налоговых вычетов.

В типовых конфигурациях 1С (таких как «Зарплата и Управление Персоналом 2.5» или «Управление производственным предприятием 1.3») НДФЛ рассчитывается в целом по сотруднику за налоговый период (месяц). Налог не привязывается напрямую к конкретным строкам начислений в расчетных листках. В этой статье мы подробно разберем, как решить эту задачу программно с помощью запросов и какие методологические подходы для этого существуют.

---

Метод 1. Пропорциональное распределение НДФЛ по видам расчета

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

Рассмотрим алгоритм распределения по шагам:

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

Математически формула выглядит следующим образом:

НДФЛ_Начисления = (Сумма_Начисления / Общая_Сумма_Облагаемого_Дохода) * Общий_НДФЛ_За_Месяц

После этого чистая сумма «на руки» по конкретному начислению рассчитывается как:

Чистая_Сумма = Сумма_Начисления - НДФЛ_Начисления

Проанализируем пример запроса для реализации этой схемы в ЗУП 2.5 / УПП 1.3:


ВЫБРАТЬ
    ОсновныеНачисления.Сотрудник КАК Сотрудник,
    ОсновныеНачисления.Результат КАК СуммаНачисления,
    ОсновныеНачисления.ВидРасчета КАК ВидРасчета
ПОМЕСТИТЬ ВТ_ЦелевыеНачисления
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
ГДЕ
    ОсновныеНачисления.ПериодРегистрации = &ПериодРегистрации
    И НЕ ОсновныеНачисления.ВидРасчета В (&ИсключаемыеВидыРасчета);

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НДФЛДоходы.Сотрудник КАК Сотрудник,
    СУММА(НДФЛДоходы.Сумма) КАК ОбщийОблагаемыйДоход
ПОМЕСТИТЬ ВТ_ОбщийДоход
ИЗ
    РегистрНакопления.НДФЛСведенияОДоходах КАК НДФЛДоходы
ГДЕ
    НДФЛДоходы.ПериодРегистрации = &ПериодРегистрации
ГРУППИРОВАТЬ ПО
    НДФЛДоходы.Сотрудник;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НДФЛРасчеты.Сотрудник КАК Сотрудник,
    СУММА(НДФЛРасчеты.Налог) КАК ОбщийНДФЛ
ПОМЕСТИТЬ ВТ_ОбщийНДФЛ
ИЗ
    РегистрНакопления.НДФЛСистемныйРегистр КАК НДФЛРасчеты // Имя регистра зависит от конфигурации
ГДЕ
    НДФЛРасчеты.ПериодРегистрации = &ПериодРегистрации
ГРУППИРОВАТЬ ПО
    НДФЛРасчеты.Сотрудник;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ЦелевыеНачисления.Сотрудник,
    ВТ_ЦелевыеНачисления.ВидРасчета,
    ВТ_ЦелевыеНачисления.СуммаНачисления,
    ВЫБОР
        КОГДА ЕСТЬNULL(ВТ_ОбщийДоход.ОбщийОблагаемыйДоход, 0) = 0 Тогда 0
        ИНАЧЕ (ВТ_ЦелевыеНачисления.СуммаНачисления / ВТ_ОбщийДоход.ОбщийОблагаемыйДоход) * ЕСТЬNULL(ВТ_ОбщийНДФЛ.ОбщийНДФЛ, 0)
    КОНЕЦ КАК ДоляНДФЛ
ИЗ
    ВТ_ЦелевыеНачисления КАК ВТ_ЦелевыеНачисления
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОбщийДоход КАК ВТ_ОбщийДоход
        ПО ВТ_ЦелевыеНачисления.Сотрудник = ВТ_ОбщийДоход.Сотрудник
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОбщийНДФЛ КАК ВТ_ОбщийНДФЛ
        ПО ВТ_ЦелевыеНачисления.Sotrudnik = ВТ_ОбщийНДФЛ.Сотрудник

---

Метод 2. Использование данных платежных ведомостей

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

Больничные листы и отпускные всегда должны выплачиваться отдельными межрасчетными ведомостями.

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

Чтобы получить «чистую» сумму на руки по регулярной зарплате, вам достаточно проанализировать табличные части документов ЗарплатаКВыплатеОрганизаций за отчетный месяц, отобрав только те ведомости, в которых способ выплаты указан как «Зарплата» (или «Расчет»), и исключив ведомости с выплатами по больничным листам и отпускам. К полученной сумме при необходимости нужно прибавить удержания по исполнительным листам, которые уменьшили сумму к выплате, но фактически являются частью дохода сотрудника.

---

Метод 3. Расчет по фиксированной ставке (упрощенный подход)

Иногда при детальном анализе бизнес-требований выясняется, что в сторонней программе, с которой ведется сравнение, вычеты вообще не учитываются, а «чистый» оклад рассчитывается путем математического вычитания 13%. В этом случае не имеет смысла усложнять алгоритмы в 1С.

Если в сторонней системе заложена логика «Оклад без НДФЛ = Оклад * 0.87», то и в 1С для сопоставления данных следует применить эту же формулу. Вычеты на детей, имущественные и социальные вычеты в таком случае полностью игнорируются при сравнении, так как они относятся к личным налоговым преференциям физического лица и не должны влиять на оценку выполнения производственных норм.

---

Сложные случаи: почему хронология расчетов имеет значение?

Разберем ситуацию, которая наглядно показывает, почему ручной расчет НДФЛ «на лету» с учетом вычетов практически невозможен без использования встроенных механизмов 1С. Представим сотрудника со следующими условиями:

Поскольку программа предоставляет вычеты строго в хронологическом порядке проведения документов, попытка рассчитать «чистый» оклад без привязки к датам проведения документов больничных и отпусков приведет к математическим искажениям. Именно поэтому рекомендуется использовать готовые данные регистров 1С (Метод 1) или ориентироваться на суммы к выплате в ведомостях (Метод 2).

---

Нюанс для современных конфигураций (ЗУП 3.1)

Если вы планируете переход или уже работаете в современных конфигурациях на платформе 1С v8.3 (например, ЗУП 3.1), задача существенно упрощается. В системе реализован специализированный регистр накопления НачисленияУдержанияПоСотрудникам.

Этот регистр хранит детальные сведения обо всех начислениях, удержаниях и исчисленном НДФЛ в разрезе сотрудников и документов-оснований. Простой запрос к этому регистру позволяет получить сопоставленные данные по начислениям и налогам без необходимости писать сложные распределения вручную.

← На главную