дивиденды в справках НДФЛ, УСН 7.70.179
21.03.2011
15:23
#1
"Обнаружилась такая вот "беда", возможно кому то поможет сделать справки как надо.
Ситуация: у сотрудника предприятия имеются начисленные дивиденды и НДФЛ с них. Открываем налоговую карточку, заполняем, сохраняемся, делаем отчет "Справки по НДФЛ", имеем потерю всех сведений о дивидендах.
Причина в том, что по отношению к доходам с НДФЛ 13% в алгоритме система делает сбор сведений помесячно с накоплением, а по отношению к дивидендам без накопления. А потом корректирует сведения так, как будто они собраны по единому принципу. Вот ключевые места:
Это описание места, куда собираются доходы.
Это место, где регистрируется 13%-ный доход в глСобратьДанныеДляНДФЛВыбор:
смотрим в ДобавитьДоходВТаблицу и видим, что там организовано вычисление с накоплением:
И теперь смотрим как сделано по отношению к дивидендам в глСобратьДанныеДляНДФЛВыбор:
А ключевое место, из за которого все теряется находится в СобратьДанныеОДоходахСотрудника:
Зачем оно надо? Чтобы снова вычислить не валовые значения доходов. Принцип простой. "Валовая сумма" + (-1)*"Валовая сумма по предыдущий месяц", получим доход текущего месяца. Так вот для дивидендов по валовому принципу в таблицу данные не помещали, поэтому они зануляются если не отражены в декабре, конечно.
Решений 2:
Вариант 1:
Организовать регистрацию дивидендов по валовому принципу. В глСобратьДанныеДляНДФЛВыбор переделываем строки на такие:
Вариант 2:
Убираем пересчет из валовых сумм в текущие для дивидендов (я сделал именно так). Для этого в СобратьДанныеОДоходахСотрудника меняем строки на такие:
Ситуация: у сотрудника предприятия имеются начисленные дивиденды и НДФЛ с них. Открываем налоговую карточку, заполняем, сохраняемся, делаем отчет "Справки по НДФЛ", имеем потерю всех сведений о дивидендах.
Причина в том, что по отношению к доходам с НДФЛ 13% в алгоритме система делает сбор сведений помесячно с накоплением, а по отношению к дивидендам без накопления. А потом корректирует сведения так, как будто они собраны по единому принципу. Вот ключевые места:
Это описание места, куда собираются доходы.
// 2-ая колонка содержит таблицу доходов // имеет 7 колонок: код дохода, размер дохода, код вычета, размер вычета,размер дохода из справочника, размер вычета из справочника и// в седьмой колонке - таблица сумм "СписокСуммПоВР", из которых собрана сумма текущего дохода (первая колонка - сумма, вторая колонка - ВР)ДоходыВычетыНалогиСотрудников.НоваяКолонка(,"ТаблицаЗначений");
Это место, где регистрируется 13%-ный доход в глСобратьДанныеДляНДФЛВыбор:
ДобавитьДоходВТаблицу(Доходы, ПоляКарточки, НомерМесяца, "П003", 3, "П068", 68);...
смотрим в ДобавитьДоходВТаблицу и видим, что там организовано вычисление с накоплением:
СуммаДохода = 0;Для ТекНомерМесяца = 1 по НомерМесяца Цикл...СуммаДохода = СуммаДохода + ПоляКарточки.Получить(ИмяСуммыДохода);КонецЦикла;...Доходы.УстановитьЗначение(НомерДохода, 1, Прав(ПоляКарточки.Получить(ИмяКодаДохода), 4));
И теперь смотрим как сделано по отношению к дивидендам в глСобратьДанныеДляНДФЛВыбор:
СуммаДивидендов = ПоляКарточки.Получить("П" + глДополнитьСтроку(Строка(163+НомерМесяца), 3));Если СуммаДивидендов <> 0 Тогда...Доходы.НоваяСтрока();...КонецЕсли; А ключевое место, из за которого все теряется находится в СобратьДанныеОДоходахСотрудника:
ТаблицаДоходовПрошлогоМесяцаСИндексом.ВыбратьСтроки();
Пока ТаблицаДоходовПрошлогоМесяцаСИндексом.ПолучитьСтроку()=1 Цикл
ТаблицаДоходовПрошлогоМесяцаСИндексом._2=(-1)*ТаблицаДоходовПрошлогоМесяцаСИндексом._2;
ТаблицаДоходовПрошлогоМесяцаСИндексом._4=(-1)*ТаблицаДоходовПрошлогоМесяцаСИндексом._4;
КонецЦикла;
Зачем оно надо? Чтобы снова вычислить не валовые значения доходов. Принцип простой. "Валовая сумма" + (-1)*"Валовая сумма по предыдущий месяц", получим доход текущего месяца. Так вот для дивидендов по валовому принципу в таблицу данные не помещали, поэтому они зануляются если не отражены в декабре, конечно.
Решений 2:
Вариант 1:
Организовать регистрацию дивидендов по валовому принципу. В глСобратьДанныеДляНДФЛВыбор переделываем строки на такие:
СуммаДивидендовСНакоплением=0;СуммаВычетовСНакоплением=0;Для НомерМесяца = 1 по 12 Цикл... СуммаДивидендов = ПоляКарточки.Получить("П" + глДополнитьСтроку(Строка(163+НомерМесяца), 3)); СуммаВычетов = СуммаДивидендов - ПоляКарточки.Получить("ОбДив" + глДополнитьСтроку(НомерМесяца, 2)); СуммаДивидендовСНакоплением=СуммаДивидендовСНакоплением+Сумм аДивидендов; СуммаВычетовСНакоплением=СуммаВычетовСНакоплением+СуммаВычет ов; Если СуммаДивидендовСНакоплением <> 0 Тогда ВидыРасчетов = СоздатьОбъект("ТаблицаЗначений"); ВидыРасчетов.НоваяКолонка("Число"); ВидыРасчетов.НоваяКолонка(); Доходы.НоваяСтрока(); НомерДохода = Доходы.НомерСтроки; Доходы.УстановитьЗначение(НомерДохода, 1, "1010"); Доходы.УстановитьЗначение(НомерДохода, 2, СуммаДивидендовСНакоплением); Доходы.УстановитьЗначение(НомерДохода, 4, СуммаВычетов); Доходы.УстановитьЗначение(НомерДохода, 7, ВидыРасчетов); КонецЕсли;
...Вариант 2:
Убираем пересчет из валовых сумм в текущие для дивидендов (я сделал именно так). Для этого в СобратьДанныеОДоходахСотрудника меняем строки на такие:
ТаблицаДоходовПрошлогоМесяцаСИндексом.ВыбратьСтроки();Пока ТаблицаДоходовПрошлогоМесяцаСИндексом.ПолучитьСтроку()=1 Цикл Ключ = ТаблицаДоходовПрошлогоМесяцаСИндексом.Ключ; КодДохода = Лев(Ключ,4); Если ((КодДохода = "1010") или (КодДохода = "1110") или (КодДохода = "1120")) Тогда ТаблицаДоходовПрошлогоМесяцаСИндексом._2=0; ТаблицаДоходовПрошлогоМесяцаСИндексом._4=0; Иначе ТаблицаДоходовПрошлогоМесяцаСИндексом._2=(-1)*ТаблицаДоходовПрошлогоМесяцаСИндексом._2; ТаблицаДоходовПрошлогоМесяцаСИндексом._4=(-1)*ТаблицаДоходовПрошлогоМесяцаСИндексом._4; КонецЕсли;КонецЦикла;"
Читают тему
(гостей: 1)