Исправление ошибки переноса стандартных вычетов по НДФЛ при конвертации данных ЗиК->ЗУП 2.5.45.3
При конвертации данных штатными средствами ЗУП 2.5.45.3, неверно переносится сведения о предоставленных вычетах по НДФЛ.
- Описание
- Подробнее
Описание
При выгрузке данных, обработкой v77exp.ert, которая идет в составе ЗУП 2.5.45.3, неверно выгружаются сведения о предоставленных вычетах по НДФЛ..
Кто не знает — эта обработка хранится в ЗУП в справочнике «Конвертации из информационных баз 1С:Предприятие 7.7»
Ошибка закралась в функции ЗаполнитьТаблицуНДФЛПредоставленныеСтдВычетыФизЛиц()
Функция ЗаполнитьТаблицуНДФЛПредоставленныеСтдВычетыФизЛиц(
ИсходящиеДанные = «», ВходящиеДанные = «», Источник = «», Приемник = «», ТипПриемника = «», Значение = «», Выражение = «»,
Пусто = «», ВыборкаДанных = «», Объект = «», КоллекцияОбъектов = «», ОбъектКоллекции = «», ИмяПКО = «», ИмяПКОВидСубконто = «»,
НомерПКО = «», НомерПКС = «», Правило = «», КлючВыгружаемыхДанных = «», НеЗапоминатьВыгруженные = «», НеЗамещатьОбъектПриЗагрузке = «»,
ВсеОбъектыВыгружены = «», ТолькоПолучитьУзелСсылки = «», РежимЗаписи = «», РежимПроведения = «», СтандартнаяОбработка = «»,
НеЗамещать = «», НеОчищать = «», УзелСсылки = «», УзелКоллекцииОбъектов = «», УзелОбъектаКоллекции = «», УзелСвойства = «»,
ВидСубконто = «», Субконто = «», Отказ = «»)
СписокФизлиц = ИсходящиеДанные;
ДоходыВычетыНалогиСотрудников = ВходящиеДанные;
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц = Источник;
Год = Приемник;
ВсегоСотров = СписокФизлиц.РазмерСписка();
НомерРелизаИБ = Число(СтрЗаменить(Константа.НомерРелиза, «.»,»»));
Если ВсегоСотров > 0 Тогда
БуферРазделов=СоздатьОбъект(«СписокЗначений»);
Для СчСотров = 1 По ВсегоСотров Цикл
СтрокаИтоговойТаблицы = (СчСотров-1)*12;
ФизЛицо = СписокФизлиц.ПолучитьЗначение(СчСотров);
БуферРазделов.УдалитьВсе();
ПоследнийМесяц = 0;
// заполняем буферы
Если (Год>=2011) и (НомерРелизаИБ >= 770318) Тогда
ТаблицаВычетов = ПолучитьСписокСтандартныхВычетов(ФизЛицо,ДоходыВычетыНалогиСотрудников,СтрокаИтоговойТаблицы,Год, ПоследнийМесяц);
Если (ТаблицаВычетов.КоличествоСтрок() <> 0) Тогда
Для СчМес = 1 По ПоследнийМесяц Цикл
ПериодРегистрацииДохода = Дата(Год,СчМес,1);
ПодразделениеОрганизации = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+СчМес,»Подразделение»);
МесяцНалоговогоПериода = Дата(Год,СчМес,1);
НомСтроки = «»;
Если ТаблицаВычетов.НайтиЗначение(СчМес,НомСтроки,»Месяц»)>0 Тогда
Для СчСтрок = НомСтроки По ТаблицаВычетов.КоличествоСтрок() Цикл
ТаблицаВычетов.ПолучитьСтрокуПоНомеру(СчСтрок);//вот этой строки не хватает
Если ТаблицаВычетов.Месяц<>СчМес Тогда
Прервать;
КонецЕсли;
Если ТаблицаВычетов.СуммаВычета<>0 Тогда
ПримененныйВычет = ТаблицаВычетов.СуммаВычета;
КодВычета = ТаблицаВычетов.КодВычета;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Иначе
Если Год>=2009 Тогда
глЗаполнитьРазделыНК2009(ФизЛицо,»»,Год,ДоходыВычетыНалогиСотрудников,СтрокаИтоговойТаблицы,БуферРазделов,БуферРазделов,БуферРазделов,БуферРазделов,БуферРазделов,ПоследнийМесяц);
Иначе
глЗаполнитьРазделыНК2005(ФизЛицо,»»,Год,ДоходыВычетыНалогиСотрудников,СтрокаИтоговойТаблицы,БуферРазделов,БуферРазделов,БуферРазделов,БуферРазделов,БуферРазделов,ПоследнийМесяц);
КонецЕсли;
Если (БуферРазделов.РазмерСписка() <> 0) Тогда
Для СчМес = 1 По ПоследнийМесяц Цикл
ПериодРегистрацииДохода = Дата(Год,СчМес,1);
ПодразделениеОрганизации = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+СчМес,»Подразделение»);
МесяцНалоговогоПериода = Дата(Год,СчМес,1);
СчСтрок = ?(СтрДлина(СчМес)=1, «0»+СчМес, СчМес);
Если Год>=2009 Тогда
Сумма103 = Число(Сокрлп(БуферРазделов.Получить(«СВМес3» + СчСтрок)));
Если Сумма103<>0 Тогда
ПримененныйВычет = Сумма103;
КодВычета = «103»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма104 = Число(Сокрлп(БуферРазделов.Получить(«СВМес4» + СчСтрок)));
Если Сумма104<>0 Тогда
ПримененныйВычет = Сумма104;
КодВычета = «104»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма105 = Число(Сокрлп(БуферРазделов.Получить(«СВМес5» + СчСтрок)));
Если Сумма105<>0 Тогда
ПримененныйВычет = Сумма105;
КодВычета = «105»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма108 = Число(Сокрлп(БуферРазделов.Получить(«СВМес8» + СчСтрок)));
Если Сумма108<>0 Тогда
ПримененныйВычет = Сумма108;
КодВычета = «108»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма109 = Число(Сокрлп(БуферРазделов.Получить(«СВМес9» + СчСтрок)));
Если Сумма109<>0 Тогда
ПримененныйВычет = Сумма109;
КодВычета = «109»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма110 = Число(Сокрлп(БуферРазделов.Получить(«СВМес10» + СчСтрок)));
Если Сумма110<>0 Тогда
ПримененныйВычет = Сумма110;
КодВычета = «110»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма111 = Число(Сокрлп(БуферРазделов.Получить(«СВМес11» + СчСтрок)));
Если Сумма111<>0 Тогда
ПримененныйВычет = Сумма111;
КодВычета = «111»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма112 = Число(Сокрлп(БуферРазделов.Получить(«СВМес12» + СчСтрок)));
Если Сумма112<>0 Тогда
ПримененныйВычет = Сумма112;
КодВычета = «112»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма113 = Число(Сокрлп(БуферРазделов.Получить(«СВМес13» + СчСтрок)));
Если Сумма113<>0 Тогда
ПримененныйВычет = Сумма113;
КодВычета = «113»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Иначе
Сумма101 = Число(Сокрлп(БуферРазделов.Получить(«СВМес1» + СчСтрок)));
Если Сумма101<>0 Тогда
ПримененныйВычет = Сумма101;
КодВычета = «101»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма102 = Число(Сокрлп(БуферРазделов.Получить(«СВМес2» + СчСтрок)));
Если Сумма102<>0 Тогда
ПримененныйВычет = Сумма102;
КодВычета = «102»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма103 = Число(Сокрлп(БуферРазделов.Получить(«СВМес3» + СчСтрок)));
Если Сумма103<>0 Тогда
ПримененныйВычет = Сумма103;
КодВычета = «103»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма104 = Число(Сокрлп(БуферРазделов.Получить(«СВМес4» + СчСтрок)));
Если Сумма104<>0 Тогда
ПримененныйВычет = Сумма104;
КодВычета = «104»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма105 = Число(Сокрлп(БуферРазделов.Получить(«СВМес5» + СчСтрок)));
Если Сумма105<>0 Тогда
ПримененныйВычет = Сумма105;
КодВычета = «105»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма106 = Число(Сокрлп(БуферРазделов.Получить(«СВМес6» + СчСтрок)));
Если Сумма106<>0 Тогда
ПримененныйВычет = Сумма106;
КодВычета = «106»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
Сумма107 = Число(Сокрлп(БуферРазделов.Получить(«СВМес7» + СчСтрок)));
Если Сумма107<>0 Тогда
ПримененныйВычет = Сумма107;
КодВычета = «107»;
ЗаполнитьТаблицуПредоставленныхВычетов(
ФизЛицо,
ПериодРегистрацииДохода,
ПодразделениеОрганизации,
МесяцНалоговогоПериода,
КодВычета,
ПримененныйВычет,
ТаблицаНДФЛПредоставленныеСтандартныеВычетыФизЛиц);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецФункции // ЗаполнитьТаблицуНДФЛПредоставленныеСтдВычетыФизЛиц()
