При работе с конфигурацией 1С:Бухгалтерия КОРП 3.0, особенно если она снята с поддержки или используется для специфических внутренних нужд, может возникнуть задача полностью исключить автоматический расчет НДФЛ. Это необходимо в тех случаях, когда учет налогов ведется в сторонних системах или когда требуется ручное управление суммами выплат без вмешательства алгоритмов программы. В данной статье мы разберем несколько эффективных способов решения этой задачи: от простых настроек в пользовательском режиме до глубокой модификации программного кода.
Это самый простой и правильный с точки зрения логики системы способ. Мы проанализируем настройки справочника Начисления и укажем программе, что данные выплаты не являются объектом налогообложения. Рассмотрим этот процесс по шагам:
Начисления (или План видов расчета Начисления через «Все функции»).Оплата по окладу).После внесения этих изменений при заполнении и расчете документа Начисление зарплаты система перестанет определять налоговую базу для этих строк, и вкладка НДФЛ останется пустой. Проанализируем ситуацию: этот метод хорош тем, что он не требует внесения изменений в конфигуратор и сохраняет целостность системы.
Если нам необходимо, чтобы документ Начисление зарплаты в 1С:Бухгалтерия КОРП 3.0 вообще не пытался выполнять функции расчета налогов и взносов, мы можем воспользоваться штатной настройкой параметров учета. Разберем, как это сделать:
В настройках зарплаты выберем вариант ведения учета «Во внешней программе». В этом режиме функционал документа Начисление зарплаты существенно сокращается. Система предполагает, что все расчеты (включая НДФЛ и Страховые взносы) производятся в специализированной конфигурации (например, 1С:ЗУП), а в бухгалтерию загружаются только итоговые данные. При такой настройке автоматический расчет налога при проведении документа будет отключен, что избавит от необходимости править код.
Для конфигураций, которые уже сняты с поддержки, часто удобнее внести правку непосредственно в программный код, чтобы гарантированно заблокировать расчет. Рассмотрим пример вмешательства в алгоритмы расчета налога. Проанализируем код общего модуля, отвечающего за расчеты.
Выясним причину, по которой расчет запускается: документ обращается к экспортным процедурам расчета налогов. Мы можем найти функцию, определяющую ставку налога, и принудительно ее обнулить. Посмотрим на пример модификации кода в процедуре РассчитатьНалогПоОсновнойСтавке:
// В общем модуле, где происходит расчет НДФЛ
Процедура РассчитатьНалогПоОсновнойСтавке(...) Экспорт
// Принудительно устанавливаем ставку в 0 для блокировки расчетов
СтавкаДляРезидента = 0;
// Далее следует штатный код, который при ставке 0 выдаст нулевой результат
...
КонецПроцедуры
Важно понимать, что это «грубое» решение. Проанализируем последствия: при таком подходе система все равно будет пытаться обращаться к таблицам доходов, но итоговая сумма налога всегда будет равна нулю. Если требуется полное исключение захода в процедуры, следует искать точку вызова в процедуре РассчитатьНДФЛ в общем модуле УчетНДФЛ.
Рассмотрим более детально, как устроена архитектура 1С:Бухгалтерия КОРП 3.0 в части учета НДФЛ. Основная логика сосредоточена в модуле УчетНДФЛ. Если мы хотим полностью исключить расчет, разберем следующие объекты:
РассчитатьНДФЛ — это входная точка. Если в самом начале этой процедуры поставить Возврат;, то расчет не будет производиться ни для каких документов.ПодготовитьДанныеДляРасчетаНДФЛ — здесь формируется временная таблица доходов. Если очистить эту таблицу перед передачей в алгоритм расчета, налог также не будет начислен.Также проанализируем влияние функциональных опций. В системе существует проверка на использование расширенного функционала зарплаты. Мы можем программно подменить значение функциональной опции ИспользоватьРасчетЗарплатыИКадров в конкретных сеансах, что приведет к скрытию закладок с налогами в документе.
Существует еще один способ «обмануть» алгоритм без радикальной правки кода. Выясним, как программа определяет, нужно ли считать налог. Она ориентируется на справочник Виды доходов НДФЛ. Если в справочнике для конкретного кода дохода (например, 2000) очистить поле Группа налога, алгоритм может проигнорировать эти суммы. Однако помните, что 1С часто блокирует изменение предопределенных элементов, поэтому использование Способа 1 (через настройки начисления) является более предпочтительным.
Также можно рассмотреть установку сотрудникам специфического статуса налогоплательщика. Если установить статус, по которому согласно международным договорам доходы не являются объектом налогообложения в РФ, расчет автоматически обнулится.
Проанализируем ситуацию с движениями документа. Просто обнулить сумму НДФЛ в документе часто недостаточно для корректного учета, так как 1С формирует записи в регистры накопления:
Расчеты налогоплательщиков с бюджетом по НДФЛНДФЛ к перечислениюЕсли вы выбрали программный путь решения проблемы, убедитесь, что при проведении документа не формируются пустые (нулевые) записи в эти регистры, так как большое количество лишних движений может замедлить работу базы данных. Рекомендуется закомментировать вызовы процедур, формирующих движения по этим регистрам, в модуле проведения документа НачислениеЗарплаты.
Подводя итог, разберем, какой метод выбрать. Если вы хотите сохранить типовой функционал и иметь возможность легкого возврата к расчету налогов, используйте Способ 1 и Способ 2. Если же конфигурация глубоко переработана и вам требуется полное исключение программного кода НДФЛ из цикла работы системы, используйте методы программной модификации, описанные в Способах 3 и 4.