Исправление ошибки вычисления суммы удержанного НДФЛ в ЗиК 320-322
Задачи пользователя - Адаптация типовых решений
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Иллюстрация ошибки:
Допустим, сотрудник принят на работу в январе 2012 года. Согласно иллюстрации (Журнал) за январь НДФЛ исчисленный = 283 руб, НДФЛ удержанный = 0 руб. В феврале произошла выплата з/п за январь, и была начислена з/п за февраль. Мы видим, что за февраль НДФЛ исчисленный = 494 руб, НДФЛ удержанный = 777 руб.
А что же нам возвращает глСобратьДанныеДляНДФЛ2011()? Результат мы видим в иллюстрации (ТаблицаНалогов), и в строке за февраль чудесным образом оказывается сумма 1060 руб., вместо правильных 777 руб.
Чем это нам грозит?
Во-первых, эта ошибка будет являтся причиной неправльного распределения сумм перечисленного НДФЛ в документе "Перечисление НДФЛ в бюджет РФ" по методу "по удержанному".
Во-вторых, это явится причиной неправльного формирования справок 2-НДФЛ, если сотрудник, например, в марте 2012 года будет переведён в подразделение с другим ОКАТО/КПП (в итоге по одной справке будет НДФЛ излишне удержанный, по другой - недоудержанный).
Как исправить?
Идём в функцию глСобратьДанныеДляНДФЛ2011(), почти в конец, и наблюдаем такой кусок кода:
Налог13уВсего = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(НомерСтрокиСотрудника+12,10);
Для Сч = 1 По 12 Цикл
СтрокаМесяца=НомерСтрокиСотрудника+Сч;
Налог13и = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца,4);
Налог13у = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца,10);
Если Сч>1 Тогда
Налог13и = Макс(0,Налог13и - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца-1,4));
Налог13у = Макс(0,Налог13у - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца-1,10));
КонецЕсли;
Налог13у = Макс(Налог13и,Налог13у); // учтем ситуацию, когда в месяце удержали больше чем начислили
Налог13у = Мин(Налог13у,Налог13уВсего);
Налог13уВсего = Налог13уВсего - Налог13у;
Если Сч>1 Тогда
Налог13у = Налог13у + ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца-1,"НУ1");
КонецЕсли;
ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаМесяца,"НУ1",Налог13у);
КонецЦикла;
Смешивать при суммировании нарастающим итогом суммы НДФЛ удержанного и исчисленного плохая идея, не правда ли? Но и превышение суммы исчисленного НДФЛ над суммой удержанного НДФЛ тоже надо учесть. Как же сделать правильно? Ну, например, я предлагаю так:
Налог13уВсего = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(НомерСтрокиСотрудника+12,10);
Налог13у_пред=0;
Для Сч = 1 По 12 Цикл
СтрокаМесяца=НомерСтрокиСотрудника+Сч;
Налог13и_нараст = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца,4);
Налог13у_нараст = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца,10);
Если Сч>1 Тогда
Налог13у_тек = Макс(0,Налог13у_нараст - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаМесяца-1,10));
Иначе
Налог13у_тек=Налог13у_нараст;
КонецЕсли;
Налог13у_тек = Мин(Налог13у_тек,Налог13уВсего);
Налог13уВсего = Налог13уВсего - Налог13у_тек;
Если Сч>1 Тогда
Налог13у_тек = Налог13у_тек + Налог13у_пред;
КонецЕсли;
Налог13у_пред=Налог13у_тек;
Налог13у_тек = Макс(Налог13и_нараст,Налог13у_тек); // учтем ситуацию, когда в месяце удержали больше чем начислили
ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаМесяца,"НУ1",Налог13у_тек);
КонецЦикла;
P.S. Для тех, кто боится "промахнуться", прилагаю текстовый файл с полным содержимым исправленной функции глобального модуля глСобратьДанныеДляНДФЛ2011(). Для установки идём на начало функции глСобратьДанныеДляНДФЛ2011(), переименовываем её в глСобратьДанныеДляНДФЛ2011_старая(), а всё содержимое прилагаемого текстового файла копируем перед строчкой глСобратьДанныеДляНДФЛ2011_старая(), и всё, сохраняем конфигурацию
Внимание! Перед внесением изменений в конфигурацию крайне настоятельно рекомендую делать бэкап.
Вступайте в нашу телеграмм-группу Инфостарт