При формировании отчетности по НДФЛ (Справка о доходах, 2-НДФЛ) пользователи нередко сталкиваются с ситуацией, когда изменение кода дохода начисления с 2000 на 2002 приводит к неожиданному росту налоговой базы и исчисленного налога. Если в расчетном периоде проводился перерасчет зарплаты за прошлые месяцы со сторнированием премии (плюс и минус в сумме давали ноль), то в справке отображается только положительная сумма перерасчета, а сторно текущего месяца игнорируется. В результате происходит задвоение дохода. Разберем, почему возникает эта ошибка в механизмах расчета и какими способами ее можно устранить.
Проанализируем механику работы периодических расчетов и налогового учета. Код дохода 2000 присваивается вознаграждению за выполнение трудовых обязанностей (окладу, регулярной оплате труда). По нормам налогового законодательства датой фактического получения такого дохода признается последний день месяца, за который он был начислен. В типовых конфигурациях виды расчетов с кодом 2000 учитываются по периоду действия.
Код дохода 2002 введен для премий за производственные результаты. В конфигурациях прошлых версий алгоритмы сбора данных для НДФЛ распределяли начисления по двум спискам: учитываемые по периоду действия и учитываемые по периоду регистрации (по дате фактической выплаты). Код 2002 по умолчанию попадал в категорию выплат по периоду регистрации.
Когда расчетчик оформляет исправление прошлого периода, в журнале расчетов создается сторнирующая запись за прошлый месяц, зарегистрированная в текущем расчетном месяце. Налоговые форматы не допускают отрицательных сумм в доходах за отдельный месяц. Типовой механизм сбора данных, обрабатывая доходы «по периоду регистрации», отсекает отрицательные сторно-записи, чтобы не образовался отрицательный доход в месяце регистрации. Положительное доначисление принимается, а сторно теряется, что и приводит к завышению облагаемой базы.
Рассмотрим быстрое решение, когда перерасчеты и сторно касаются исключительно ежемесячных производственных премий, входящих в систему оплаты труда. Для таких премий датой признания дохода является конец расчетного месяца, аналогично коду 2000.
Откроем конфигуратор и перейдем в глобальный модуль. Найдем процедуру ГлПолучитьСписокВРДляРасчетаНДФЛ2016 (или аналогичную функцию сбора списков видов расчета для соответствующего налогового периода). В исходном коде распределение начислений выглядит следующим образом:
Если (КодДохода="2000") Или ((КодДохода="2012") И (УчетОтпуска=0)) Тогда
СписокВРПоПериодуДействияГод.ДобавитьЗначение(ВР);
Иначе
СписокВРПоПериодуРегистрацииГод.ДобавитьЗначение(ВР);
КонецЕсли;
Изменим условие, добавив проверку кода дохода 2002, чтобы премия учитывалась в налоговой базе по периоду действия:
Если (КодДохода="2000") Или (КодДохода="2002") Или ((КодДохода="2012") И (УчетОтпуска=0)) Тогда
СписокВРПоПериодуДействияГод.ДобавитьЗначение(ВР);
Иначе
СписокВРПоПериодуРегистрацииГод.ДобавитьЗначение(ВР);
КонецЕсли;
При таком подходе сторно и доначисление связываются по исходному периоду действия, закрывая друг друга в ноль в рамках одного месяца, и искажение базы устраняется.
Первый способ решает проблему точечно для премии, но оставляет уязвимость для других выплат, которые обязаны учитываться строго по периоду регистрации (например, больничные листы или отпускные). Включать больничные листы в список по периоду действия нельзя: если сотрудник предоставит справку о заработке за прошлые годы, перерасчет больничного затронет уже закрытый налоговый период, менять базу которого задним числом недопустимо.
Разберем универсальное решение. Найдем в глобальном модуле функцию глСобратьДанныеДляНДФЛ2016 и строку с установкой флага ДоходыПоРегистрацииСторно=1. Исходный проблемный блок выглядит так:
//если вызов функции осуществлен для распределения НДФЛ по ИФ, не регистрируем в таблице доходов
//сторно дохода по периоду регистрации, зарегистрированные в периоде формирования отчета
Если (ВызовДляРаспределенияНДФЛ=0) или ((ВызовДляРаспределенияНДФЛ=1) и (ЖрнЗарплата.НачалоПериодаПоДате(ПериодРегистрации)<>ЖрнЗарплата.НачалоПериодаПоДате(ДатаАктуальности))) Тогда
ДоходыПоРегистрацииСторно=1;
КонецЕсли;
Заменим этот фрагмент на обработку с проверкой групп расчетов. Если сторнируемый вид расчета относится к отпускам или больничным и зарегистрирован в рамках текущего отчетного года, включим его в доходы по регистрации напрямую:
Если (ВызовДляРаспределенияНДФЛ=0) или ((ВызовДляРаспределенияНДФЛ=1) и (ЖрнЗарплата.НачалоПериодаПоДате(ПериодРегистрации)<>ЖрнЗарплата.НачалоПериодаПоДате(ДатаАктуальности))) Тогда
Если (ВР.ВходитВГруппу(ГруппаРасчетов.Отпуска)=1) или (ВР.ВходитВГруппу(ГруппаРасчетов.БольничныеЛисты)=1) Тогда
Если (ПериодРегистрации>=НачалоГода) и (ПериодРегистрации<=ОкончаниеГода) Тогда
ДоходыПоРегистрации=1;
Иначе
Продолжить;
КонецЕсли;
Иначе
ДоходыПоРегистрацииСторно=1;
КонецЕсли;
КонецЕсли;
Посмотрим на результат модификации: программа перестает отбрасывать сторнирующие записи внутри текущего года для указанных групп начислений, обеспечивая корректный итоговый расчет базы без искажения закрытых налоговых периодов.
Если внесение правок в глобальный модуль конфигурации нежелательно или база находится на строгой типовой поддержке, проанализируем регламентные пути решения проблемы:
2002 и 2003.Корректировка данных по НДФЛ позволяет зарегистрировать правильные суммы дохода с нужным кодом без вмешательства в журналы расчетов.2002 и признаком учета в конце месяца), и для разовых поощрительных выплат, выплачиваемых нерегулярно.