Вот код из модуля расчета НДФЛ, место где формируются суммы уменьшения базы для каждого вида доходов.
тбПоВидамДохода.ВыбратьСтроки();
Пока тбПоВидамДохода.ПолучитьСтроку() = 1 Цикл
спДопПараметры.Установить("Облагаемое", тбПоВидамДохода.Сумма);
спДопПараметры.Установить("ВидДохода", тбПоВидамДохода.ВидДохода);
спЛьготы = глПолучитьЛьготыДляНалога(Объект,"НалогНаДоходыФЛ", НачПериода, спДопПараметры);
Если флАванс = 1 Тогда
Иначе
тбПоВидамДохода.СуммаУменьшенияБазы = тбПоВидамДохода.СуммаУменьшенияБазы + Число(спЛьготы.Получить("СуммаУменьшенияБазы"));
КонецЕсли;
глТрассировка("Средние показатели по доходу " + тбПоВидамДохода.ВидДохода + ": Сумма = " + тбПоВидамДохода.Сумма + " СуммаУменьшенияБазы = " + тбПоВидамДохода.СуммаУменьшенияБазы, 1);
КонецЦикла;
В 29-м релизе был добавлен вид дохода "Больничный". В следствие этого, в ситуациях когда, например Зарплата (вид дохода) у человека 1000 грн, а Больничный 500, срабатывает НСЛ (в глПолучитьЛьготыДляНалога попадает Облагаемое 1000грн, меньше чем порог получения льготы). Естественно, что при попытке пересчитать февральскую зарплату на новом релизе, часть больничных "поплыла".
Попытался решить проблему так: рассчитать вначале Облагаемое как Зарплата + Больничные, и, от этой суммы посчитать сумму уменьшение базы для налога по льготам. Потом эту сумму прибавить к каждому виду дохода.
//Рассчитаем отдельно сумму уменьшения базы по льготам
СуммаУменьшенияБазыПоЛьготам=0;
тбПоВидамДохода.ВыбратьСтроки();
Облагаемое = 0;
Пока тбПоВидамДохода.ПолучитьСтроку()=1 Цикл
Если (тбПоВидамДохода.ВидДохода = "Зарплата") ИЛИ (тбПоВидамДохода.ВидДохода = "Больничный") Тогда
Облагаемое=Облагаемое+тбПоВидамДохода.Сумма;
КонецЕсли;
КонецЦикла;
спДопПараметры.Установить("Облагаемое", Облагаемое);
спДопПараметры.Установить("ВидДохода", "Зарплата");
спЛьготы = глПолучитьЛьготыДляНалога(Объект,"НалогНаДоходыФЛ", НачПериода, спДопПараметры);
СуммаУменьшенияБазыПоЛьготам = Число(спЛьготы.Получить("СуммаУменьшенияБазы"));
тбПоВидамДохода.ВыбратьСтроки();
Пока тбПоВидамДохода.ПолучитьСтроку() = 1 Цикл
Если флАванс=0 Тогда
тбПоВидамДохода.СуммаУменьшенияБазы = тбПоВидамДохода.СуммаУменьшенияБазы + СуммаУменьшенияБазыПоЛьготам;
КонецЕсли;
КонецЦикла;
В итоге получилась ошибка на другом сотруднике:
Пособие по берем. и родам 11,794.86
Оплата больн. 343.08
Допл. по больн. 343.08
Отпускные 540.30
Всего начислено 13,021.32
Единый социальный взнос 19.45
ЕСВ больничный 13.72
Профсоюзный взнос 12.26
Налог на доходы физ.лиц 37.84
А должно быть (1226,46-33,17-470,50)*0,15=108,42.
Подскажите, как исправить ошибку.