gifts2017

Косяк или нюанс в документе "Справка 2-НДФЛ для передачи в ИФНС" (ЗУП 2.5.46.1)

Опубликовал Vitaliy Tokarev (VitaliyTokarev) в раздел Печать - Справки

В Документе "Справка 2-НДФЛ для передачи в ИФНС" при отгуленном отпуске больше, чем нужно и
последующем увольнении проставляется доход 2012 со знаком минус.
Контур такой отчёт не принимает. Необходимо, чтобы этот минус учитывался в последнем месяце
начислений по коду 2012.

В Документе "Справка 2-НДФЛ для передачи в ИФНС" при отгуленном отпуске больше, чем нужно и
последующем увольнении проставляется доход 2012 со знаком минус.
Контур такой отчёт не принимает. Необходимо, чтобы этот минус учитывался в последнем месяце
начислений по коду 2012.

Также я учёл нюанс, когда в последнем положительном месяце не хватает денег, чтобы учесть минус.

Ещё момент: Справка 2-НДФЛ для сотрудника должна печататься так, как было.

Решение:


1.
Документ "СправкаПоНДФЛВНалоговыйОрган", ФормаДокумента

Процедура КнопкаОбновитьДанныеОДоходахНажатие(Элемент)

..........

СправкиПоНДФЛ.УдалитьДанныеСправки(ТекущийНомерСправки, СведенияОДоходах);
СправкиПоНДФЛ.УдалитьДанныеСправки(ТекущийНомерСправки, СведенияОВычетах);
СправкиПоНДФЛ.УдалитьДанныеСправки(ТекущийНомерСправки, СуммыНалогов);
///
СправкиПоНДФЛ.ПрочитатьДанныеСправки(ТекущаяСтрока, СведенияОДоходах, СведенияОВычетах, СуммыНалогов, НалоговыйПериод, Организация, мГоловнаяОрганизация, ОКАТО_КПП, НачалоМесяца(Дата), Истина); //(Добавил для отсечки данной процедуры от другого документа)
// TVA/>
КонецЕсли;
КонецПроцедуры

2. Документ "СправкаПоНДФЛВНалоговыйОрган", Модуль объекта

Процедура Автозаполнение() Экспорт

..........

(там формируется большой запрос в "Если ... Иначе", после этого я добавил строку)

..........

СотрудникиОрганизации.Загрузить(СправкиПоНДФЛ.ДанныеСотрудников(Запрос.Выполнить().Выгрузить(), Дата, НалоговыйПериод));
Для каждого СтрокаТЧ Из СотрудникиОрганизации Цикл
СтрокаТЧ.НомерСправки = НомерПервойСправки + СотрудникиОрганизации.Индекс(СтрокаТЧ)
КонецЦикла;
СтруктураДанных = СправкиПоНДФЛ.ДанныеОДоходах(СотрудникиОрганизации.Выгрузить(), НалоговыйПериод, Организация, ОбщегоНазначения.ГоловнаяОрганизация(Организация), ОКАТО_КПП, НачалоМесяца(Дата));
///
СправкиПоНДФЛ.ПереносОтрицательногоОстаткаНДФЛПоКоду2012(СтруктураДанных.Доходы);
// TVA/>
СведенияОДоходах.Загрузить(СтруктураДанных.Доходы);
СведенияОВычетах.Загрузить(СтруктураДанных.Вычеты);

..........

КонецПроцедуры // Автозаполнение()

 

3. Общий модуль "СправкиПоНДФЛ".

 

///
Процедура ПрочитатьДанныеСправки(ОписаниеСправки, СведенияОДоходах, СведенияОВычетах, СуммыНалогов, НалоговыйПериод, Организация, ГоловнаяОрганизация, ОКАТО_КПП, Дата, ЭтоИсправление = Ложь) Экспорт //(Добавил для отсечки данной процедуры от другого документа)
// TVA/>

 

ФизЛицо = ОписаниеСправки.Сотрудник;
Ставка = ОписаниеСправки.Ставка;

Если Не ЗначениеЗаполнено(Организация) Или Не ЗначениеЗаполнено(ФизЛицо) Или (НалоговыйПериод < 2011 и Не ЗначениеЗаполнено(Ставка)) Тогда
Возврат
КонецЕсли;

ТаблицаСотрудников = Новый ТаблицаЗначений;
ТаблицаСотрудников.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
ТаблицаСотрудников.Колонки.Добавить("Ставка", Новый ОписаниеТипов("ПеречислениеСсылка.НДФЛСтавки"));
ТаблицаСотрудников.Колонки.Добавить("НомерСправки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(8, 0)));
ЗаполнитьЗначенияСвойств(ТаблицаСотрудников.Добавить(), ОписаниеСправки);
СтруктураДанных = ДанныеОДоходах(ТаблицаСотрудников, НалоговыйПериод, Организация, ГоловнаяОрганизация, ОКАТО_КПП, Дата);
///
Если ЭтоИсправление Тогда
ПереносОтрицательногоОстаткаНДФЛПоКоду2012(СтруктураДанных.Доходы);
КонецЕсли;
// TVA/>
Для каждого СтрокаТЗ Из СтруктураДанных.Доходы Цикл

..........

КонецПроцедуры

..........

(И в этом же общем модуле полностью новая процедура)

..........

 

///
//В Документе СправкаПоНДФЛВНалоговыйОрган при отгуленном отпуске больше, чем нужно и
//последующем увольнении проставляется доход 2012 со знаком минус.
//Контур такой отчёт не принимает. Необходимо, чтобы этот минус учитывался в последнем месяце
//начислений по коду 2012.
Процедура ПереносОтрицательногоОстаткаНДФЛПоКоду2012(ТЗ) Экспорт

ДоходНДФЛ2012 = Справочники.ДоходыНДФЛ.Код2012;
ДоходыСКодом2012 = Новый ТаблицаЗначений;
ДоходыСКодом2012.Колонки.Добавить("НомерСтроки");
ДоходыСКодом2012.Колонки.Добавить("НомерСправки");
ДоходыСКодом2012.Колонки.Добавить("СуммаДохода");
ДоходыСКодом2012.Колонки.Добавить("СуммаВычета");
Для Каждого СтрокаТЗ Из ТЗ Цикл
Если СтрокаТЗ.КодДохода = ДоходНДФЛ2012 Тогда
НоваяСтрока = ДоходыСКодом2012.Добавить();
НоваяСтрока.НомерСтроки = ТЗ.Индекс(СтрокаТЗ);
НоваяСтрока.НомерСправки = СтрокаТЗ.НомерСправки;
НоваяСтрока.СуммаДохода = СтрокаТЗ.СуммаДохода;
НоваяСтрока.СуммаВычета = СтрокаТЗ.СуммаВычета;
КонецЕсли;
КонецЦикла;
ъ = ДоходыСКодом2012.Количество() - 1;
СуммаДоходаДляПравки = 0;
СуммаВычетаДляПравки = 0;
НомерСправки = -1;
Пока ъ >= 0 Цикл
Если (НомерСправки <> ДоходыСКодом2012[ъ].НомерСправки) И (НомерСправки <> -1) Тогда
СуммаДоходаДляПравки = 0;
СуммаВычетаДляПравки = 0;
КонецЕсли;
НомерСправки = ДоходыСКодом2012[ъ].НомерСправки;
Если ДоходыСКодом2012[ъ].СуммаДохода < 0 Тогда
СуммаДоходаДляПравки = СуммаДоходаДляПравки + ДоходыСКодом2012[ъ].СуммаДохода;
СуммаВычетаДляПравки = СуммаВычетаДляПравки + ДоходыСКодом2012[ъ].СуммаВычета;
ТЗ.Удалить(ДоходыСКодом2012[ъ].НомерСтроки);
Иначе
Если (СуммаДоходаДляПравки <> 0) Или (СуммаВычетаДляПравки <> 0) Тогда
Если (ДоходыСКодом2012[ъ].СуммаДохода + СуммаДоходаДляПравки) > 0 Тогда
ТЗ[ДоходыСКодом2012[ъ].НомерСтроки].СуммаДохода = ТЗ[ДоходыСКодом2012[ъ].НомерСтроки].СуммаДохода + СуммаДоходаДляПравки;
СуммаДоходаДляПравки = 0;
ТЗ[ДоходыСКодом2012[ъ].НомерСтроки].СуммаВычета = ТЗ[ДоходыСКодом2012[ъ].НомерСтроки].СуммаВычета + СуммаВычетаДляПравки;
СуммаВычетаДляПравки = 0;
Иначе
СуммаДоходаДляПравки = СуммаДоходаДляПравки + ТЗ[ДоходыСКодом2012[ъ].НомерСтроки].СуммаДохода;
ТЗ.Удалить(ДоходыСКодом2012[ъ].НомерСтроки);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ъ = ъ - 1;
КонецЦикла;

КонецПроцедуры
// TVA/>

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Вячеслав (Slavez) 21.03.12 18:20
И никогда не принимали.
Таких справок бывает совсем немного.
Смысл исправлять модуль?
Проще в руки объединить с доходами любого месяца.
2. Vitaliy Tokarev (VitaliyTokarev) 22.03.12 03:20
Смысл в том, что у нас в компании таких справок больше сотни...
Менялось Юр.лицо.
А политика такая, что должно всё автоматом считаться.
Возможно кому-то пригодится.
3. Dimon (klel) 24.03.12 09:29
Спасибо за информацию думаю пригодится фирма то у нас немаленькая =)