![]() |
![]() |
![]() |
|
(ЗУП 2.5) Рассчет НДФЛ | ☑ | ||
---|---|---|---|---|
0
vechiy
19.10.11
✎
12:56
|
Коллеги, подскажите, каким алгоритмом рассчитывается НДФЛ в зупе?
|
|||
1
zak555
19.10.11
✎
12:58
|
их два
|
|||
2
almar
19.10.11
✎
13:01
|
(0) Бывает 13 процентов, бывает 30, бывает 9
|
|||
3
zak555
19.10.11
✎
13:06
|
(2) есть исчисленный, есть удержанный
|
|||
4
vechiy
19.10.11
✎
13:08
|
(3) можно подробней?:) там же не просто на 0.13 умножается
|
|||
5
zak555
19.10.11
✎
13:09
|
(4) совершенно верно
|
|||
6
zak555
19.10.11
✎
13:09
|
причём копьё не учитывается
|
|||
7
zak555
19.10.11
✎
13:10
|
открой модуль и посмотри
|
|||
8
vechiy
19.10.11
✎
13:11
|
пытаюсь вот найти. в каком модуле хоть?)
|
|||
9
zak555
19.10.11
✎
13:11
|
модули расчёта из 77 комплексной :
|
|||
10
vechiy
19.10.11
✎
13:11
|
ну и в чем вообще суть алгоритма то..)
|
|||
11
zak555
19.10.11
✎
13:12
|
НДФЛ по ставке 13% (или 30% для нерезидентов) - исчисленный
//****************************************************************************** // Предопределенная процедура // Процедура ПровестиРасчет() // если запись исправлена или фиксирована, то ее не рассчитываем Если (Исправлена=1) или (Фиксирована=1) Тогда глСообщениеТрассировки(глСообщенияТрассировки, "" + ?(Исправлена=1,"Результат записи исправлен вручную","Запись фиксирована") + ". Расчет не проводился.", , 1); Возврат КонецЕсли; Результат = 0; // в таблице ДоходыВычетыНалогиСотрудников могут находиться предварительно собранные // данные о доходах сотрудника, если это не так - соберем их заново ДоходыУжеСобраны=0; Если ДатаГод(ДатаОкончания) = ДатаГод(ПериодРегистрации.ДатаОкончания) Тогда // данные в групповых расчетах собираются только за год расчета Если ТипЗначения(глДоходыВычетыНалогиСотрудников)=100 Тогда Если глДоходыВычетыНалогиСотрудников.КоличествоСтрок() > 12 Тогда // доходы собирались в групповом расчете - и они актуальны ДоходыВычетыНалогиСотрудников = глДоходыВычетыНалогиСотрудников; ДоходыУжеСобраны=1; КонецЕсли; КонецЕсли; КонецЕсли; Если ДоходыУжеСобраны = 0 Тогда глСообщениеТрассировки(глСообщенияТрассировки, "Сбор данных о доходах и вычетах за " + ДатаГод(ДатаОкончания) +" год", 0, 1); ДоходыВычетыНалогиСотрудников = ""; Если глСобратьДанныеДляНДФЛВыбор(Объект.ЮрЛицо, ДоходыВычетыНалогиСотрудников,Объект,ДатаОкончания) = 0 Тогда глСообщениеТрассировки(глСообщенияТрассировки, "Не удалось обработать данные о доходах и вычетах!" , 1, 1); Возврат КонецЕсли; КонецЕсли; СтрокаИтоговойТаблицы=""; ДоходыВычетыНалогиСотрудников.НайтиЗначение(глПолучитьУникальныйКодСотрудника(Объект)+"01",СтрокаИтоговойТаблицы,1); Если СтрокаИтоговойТаблицы = 0 Тогда // работа процедуры глСобратьДанныеДляНДФЛ была прервана - делать больше нечего глСообщениеТрассировки(глСообщенияТрассировки, "Не удалось обработать данные о доходах и вычетах!" , 1, 1); Возврат КонецЕсли; ИтогиПоГодуСотра=СоздатьОбъект("Справочник.НКИтогиПоГоду"); ИтогиПоГодуСотра.ИспользоватьВладельца(Объект); ИтогиПоГодуСотра.НайтиПоКоду(Строка(ДатаГод(ДатаОкончания))); СальдоСотра = ИтогиПоГодуСотра.ДолгНаНачалоГода.Получить(КонГода(ДатаОкончания)); // определим месяц, по который доходы физлица менялись Месяц = ДатаМесяц(ДатаОкончания); ПоследнийМесяц = Месяц; СписокПредыдущегоМесяца = СоздатьОбъект("СписокЗначений"); // во 2 колонке - таблица доходов ТаблицаДоходов = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Месяц-1,2); // начнем с текущего месяца Если ТипЗначения(ТаблицаДоходов) = 100 Тогда // доходы были ТаблицаДоходов.Выгрузить(СписокПредыдущегоМесяца,,,"1,2,3,4"); КонецЕсли; Для Сч=Месяц+1 По 12 Цикл // во 2 колонке - таблица доходов ТаблицаДоходов = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Сч-1,2); Если ТипЗначения(ТаблицаДоходов) <> 100 Тогда // доходов не было Продолжить КонецЕсли; СписокДляСравнения = СоздатьОбъект("СписокЗначений"); ТаблицаДоходов.Выгрузить(СписокДляСравнения,,,"1,2,3,4"); Если глСпискиИдентичны(СписокДляСравнения,СписокПредыдущегоМесяца) = 1 Тогда Продолжить КонецЕсли; СписокПредыдущегоМесяца = СписокДляСравнения; ПоследнийМесяц = Сч; // доходы за этот месяц не совпадают с доходами предыдущего месяца - запомним его КонецЦикла; Год = ДатаГод(ДатаОкончания); Если Год>=2011 Тогда СтатусНеРезидента=Объект.Физлицо.СтатусНеРезидента.Получить(КонГода(ДатаОкончания)); Резидент=?(СтатусНеРезидента=0,1,0); Если Резидент = 1 Тогда // на конец года сотрудник - резидент, проверим статус в текущем месяце СтатусНеРезидента=Объект.Физлицо.СтатусНеРезидента.Получить(КонМесяца(ДатаОкончания)); Резидент=?(СтатусНеРезидента=0,1,0); КонецЕсли; СтавкаНалога=?(Резидент=0,Константа.СтавкаНДФЛсДоходовНеРезидентов.Получить(КонГода(ДатаОкончания)), Константа.СтавкаНДФЛсЗарплатыРезидентов.Получить(КонГода(ДатаОкончания))) /100; глСообщениеТрассировки(глСообщенияТрассировки, "Работник" + ?(Резидент=0," не","") + " является налоговым резидентом РФ; ставка НДФЛ составила " + СтавкаНалога*100 +"%", 0, 1); // налоговая база - 13 колонка НалоговаяБаза=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+ПоследнийМесяц-1,13); Если (Резидент = 1) Тогда // налог исчисляется по доходам нарастающим итогом за год МесяцСменыСтатусаРезидента = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы,"МесяцСменыСтатусаРезидента"); Если МесяцСменыСтатусаРезидента=0 Тогда // не менялся статус ИсчисленоПоТекущийМесяц=Окр(НалоговаяБаза*СтавкаНалога); глСообщениеТрассировки(глСообщенияТрассировки, "Данные нарастающим итогом с начала года по _П01:" ,0 , 1, ДатаОкончания, "ДММММГГГГ"); глСообщениеТрассировки(глСообщенияТрассировки, "Налоговая база:_П01; Исчислено налога:_П02", 0, -1, НалоговаяБаза, "Ч15.2", ИсчисленоПоТекущийМесяц, "Ч15.2"); // данные за предыдущий месяц ИсчисленоПоПредыдущийМесяц = 0; Если Месяц>1 Тогда // налог исчисленный собран по периоду действия в 4 колонке ИсчисленоПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Месяц-2,4); глСообщениеТрассировки(глСообщенияТрассировки, "Исчислено налога по предыдущий месяц:_П01", 0, 1, ИсчисленоПоПредыдущийМесяц, "Ч15.2"); КонецЕсли; // налог за месяц исчисляется с зачетом исчисленной ранее суммы Результат = ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра; глСообщениеТрассировки(глСообщенияТрассировки, "Начислено налога за текущий месяц:_П01", 0, 0, ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра, "Ч15.2"); Иначе // менялся статус резидента // расчет налога резидента за период с МесяцСменыСтатусаРезидента по Месяц НалоговаяБаза = НалоговаяБаза - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+МесяцСменыСтатусаРезидента-2,13); ИсчисленоПоТекущийМесяц=Окр(НалоговаяБаза*СтавкаНалога); глСообщениеТрассировки(глСообщенияТрассировки, "Данные нарастающим итогом с начала года по _П01:" ,0 , 1, ДатаОкончания, "ДММММГГГГ"); глСообщениеТрассировки(глСообщенияТрассировки, "Налоговая база:_П01; Исчислено налога:_П02", 0, -1, НалоговаяБаза, "Ч15.2", ИсчисленоПоТекущийМесяц, "Ч15.2"); // данные за предыдущий месяц ИсчисленоПоПредыдущийМесяц = 0; Если Месяц>1 Тогда // налог исчисленный собран по периоду действия в 4 колонке ИсчисленоПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Месяц-2,4); //Вычтем исчисленный налог, когда сотрудник был нерезидентом ИсчисленоПоПредыдущийМесяц = ИсчисленоПоПредыдущийМесяц - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+МесяцСменыСтатусаРезидента-2,4); глСообщениеТрассировки(глСообщенияТрассировки, "Исчислено налога по предыдущий месяц:_П01", 0, 1, ИсчисленоПоПредыдущийМесяц, "Ч15.2"); КонецЕсли; // налог за месяц исчисляется с зачетом исчисленной ранее суммы Результат13 = ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра; // расчет налога нерезидента за период с 1 меняца по МесяцСменыСтатусаРезидента-1 СтавкаНалога= Константа.СтавкаНДФЛсДоходовНеРезидентов.Получить(КонГода(ДатаОкончания))/100; ИсчисленоПоТекущийМесяц = 0; Если МесяцСменыСтатусаРезидента>2 Тогда Для Сч = 1 По МесяцСменыСтатусаРезидента-1 Цикл НалоговаяБаза=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Сч,13); Если Сч > 1 Тогда НалоговаяБаза = НалоговаяБаза - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Сч-2,13); КонецЕсли; ИсчисленоПоТекущийМесяц = ИсчисленоПоТекущийМесяц + Окр(НалоговаяБаза * СтавкаНалога); КонецЦикла; Иначе //первый месяц НалоговаяБаза=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы,13); ИсчисленоПоТекущийМесяц = Окр(НалоговаяБаза * СтавкаНалога); КонецЕсли; УщеИсчислено = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+МесяцСменыСтатусаРезидента-2,4); ДоначисленоНерезиден = ИсчисленоПоТекущийМесяц - УщеИсчислено; Если (Результат13>0) и (ДоначисленоНерезиден<0) Тогда Результат = Результат13; Иначе Результат = Результат13 + ДоначисленоНерезиден; КонецЕсли; глСообщениеТрассировки(глСообщенияТрассировки, "Начислено налога за текущий месяц:_П01", 0, 0, Результат, "Ч15.2"); КонецЕсли; Иначе // налог исчисляется по каждому месяцу отдельно - вычетаем доход, полученный по предыдущий месяц Если ПоследнийМесяц>1 Тогда ИсчисленоПоТекущийМесяц = 0; Для Сч = 1 По ПоследнийМесяц Цикл НалоговаяБаза=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Сч,13); Если Сч > 1 Тогда НалоговаяБаза = НалоговаяБаза - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Сч-2,13); КонецЕсли; ИсчисленоПоТекущийМесяц = ИсчисленоПоТекущийМесяц + Окр(НалоговаяБаза * СтавкаНалога); КонецЦикла; // данные за предыдущий месяц // налог исчисленный собран по периоду действия в 4 колонке ИсчисленоПоПредыдущийМесяц = 0; Если Месяц>1 Тогда ИсчисленоПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Месяц-2,4); КонецЕсли; ИсчисленоНалога = ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра; Иначе ИсчисленоНалога = Окр(НалоговаяБаза * СтавкаНалога)-СальдоСотра; КонецЕсли; глСообщениеТрассировки(глСообщенияТрассировки, "Данные за _П01:" ,0 , 1, ДатаОкончания, "ДММММГГГГ"); глСообщениеТрассировки(глСообщенияТрассировки, "Налоговая база:_П01; Исчислено налога:_П02", 0, -1, НалоговаяБаза,"Ч15.2", Окр(НалоговаяБаза * СтавкаНалога),"Ч15.2"); глСообщениеТрассировки(глСообщенияТрассировки, "Начислено налога за текущий месяц:_П01", 0, 0, ИсчисленоНалога,"Ч15.2"); Результат = ИсчисленоНалога; КонецЕсли; Иначе // ставка налога зависит от резидентства физлица (пп. 1 и 3 ст. 224 НК РФ) СтатусНеРезидента=Объект.Физлицо.СтатусНеРезидента.Получить(КонГода(ДатаОкончания)); Резидент=?(СтатусНеРезидента=0,1,0); СтавкаНалога=?(Резидент=0,Константа.СтавкаНДФЛсДоходовНеРезидентов.Получить(КонГода(ДатаОкончания)), Константа.СтавкаНДФЛсЗарплатыРезидентов.Получить(КонГода(ДатаОкончания))) /100; глСообщениеТрассировки(глСообщенияТрассировки, "Работник" + ?(Резидент=0," не","") + " является налоговым резидентом РФ; ставка НДФЛ составила " + СтавкаНалога*100 +"%", 0, 1); // налоговая база - 13 колонка НалоговаяБаза=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+ПоследнийМесяц-1,13); Если (Резидент = 1) Тогда // налог исчисляется по доходам нарастающим итогом за год ИсчисленоПоТекущийМесяц=Окр(НалоговаяБаза*СтавкаНалога); глСообщениеТрассировки(глСообщенияТрассировки, "Данные нарастающим итогом с начала года по _П01:" ,0 , 1, ДатаОкончания, "ДММММГГГГ"); глСообщениеТрассировки(глСообщенияТрассировки, "Налоговая база:_П01; Исчислено налога:_П02", 0, -1, НалоговаяБаза, "Ч15.2", ИсчисленоПоТекущийМесяц, "Ч15.2"); // данные за предыдущий месяц ИсчисленоПоПредыдущийМесяц = 0; Если Месяц>1 Тогда // налог исчисленный собран по периоду действия в 4 колонке ИсчисленоПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Месяц-2,4); глСообщениеТрассировки(глСообщенияТрассировки, "Исчислено налога по предыдущий месяц:_П01", 0, 1, ИсчисленоПоПредыдущийМесяц, "Ч15.2"); КонецЕсли; // налог за месяц исчисляется с зачетом исчисленной ранее суммы Результат = ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра; глСообщениеТрассировки(глСообщенияТрассировки, "Начислено налога за текущий месяц:_П01", 0, 0, ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра, "Ч15.2"); Иначе // налог исчисляется по каждому месяцу отдельно - вычетаем доход, полученный по предыдущий месяц Если ПоследнийМесяц>1 Тогда ИсчисленоПоТекущийМесяц = 0; Для Сч = 1 По ПоследнийМесяц Цикл НалоговаяБаза=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Сч,13); Если Сч > 1 Тогда НалоговаяБаза = НалоговаяБаза - ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Сч-2,13); КонецЕсли; ИсчисленоПоТекущийМесяц = ИсчисленоПоТекущийМесяц + Окр(НалоговаяБаза * СтавкаНалога); КонецЦикла; // данные за предыдущий месяц // налог исчисленный собран по периоду действия в 4 колонке ИсчисленоПоПредыдущийМесяц = 0; Если Месяц>1 Тогда ИсчисленоПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+Месяц-2,4); КонецЕсли; ИсчисленоНалога = ИсчисленоПоТекущийМесяц-ИсчисленоПоПредыдущийМесяц-СальдоСотра; Иначе ИсчисленоНалога = Окр(НалоговаяБаза * СтавкаНалога)-СальдоСотра; КонецЕсли; глСообщениеТрассировки(глСообщенияТрассировки, "Данные за _П01:" ,0 , 1, ДатаОкончания, "ДММММГГГГ"); глСообщениеТрассировки(глСообщенияТрассировки, "Налоговая база:_П01; Исчислено налога:_П02", 0, -1, НалоговаяБаза,"Ч15.2", Окр(НалоговаяБаза * СтавкаНалога),"Ч15.2"); глСообщениеТрассировки(глСообщенияТрассировки, "Начислено налога за текущий месяц:_П01", 0, 0, ИсчисленоНалога,"Ч15.2"); Результат = ИсчисленоНалога; КонецЕсли; КонецЕсли; КонецПроцедуры //ПровестиРасчет() |
|||
12
zak555
19.10.11
✎
13:12
|
НДФЛ по ставке 13% (или 30% для нерезидентов) - удержанный
//****************************************************************************** // Предопределенная процедура // Процедура ПровестиРасчет() // если запись исправлена или фиксирована, то ее не рассчитываем Если (Исправлена=1) или (Фиксирована=1) Тогда глСообщениеТрассировки(глСообщенияТрассировки, "" + ?(Исправлена=1,"Результат записи исправлен вручную","Запись фиксирована") + ". Расчет не проводился.", 0, 1); Возврат КонецЕсли; Результат = 0; НалогКУдержанию = 0; БылоУдержано = 0; УдержаноДругихНалогов=0; // данные по предыдущий месяц Месяц = ДатаМесяц(ДатаОкончания)-1; Если Месяц>0 Тогда // в таблице ДоходыВычетыНалогиСотрудников могут находиться предварительно собранные // данные о доходах сотрудника, если это не так - соберем их заново ДоходыУжеСобраны=0; Если ДатаГод(ДатаОкончания) = ДатаГод(ПериодРегистрации.ДатаОкончания) Тогда // данные в групповых расчетах собираются только за год расчета Если ТипЗначения(глДоходыВычетыНалогиСотрудников)=100 Тогда Если глДоходыВычетыНалогиСотрудников.КоличествоСтрок() > 12 Тогда // доходы собирались в групповом расчете - и они актуальны ДоходыУжеСобраны=1; КонецЕсли; КонецЕсли; КонецЕсли; ДоходыВычетыНалогиСотрудников = ""; Если ДоходыУжеСобраны = 0 Тогда глСообщениеТрассировки(глСообщенияТрассировки, "Сбор данных о доходах и вычетах за " + ДатаГод(ДатаОкончания) +" год", 0, 1); Если глСобратьДанныеДляНДФЛВыбор(Объект.ЮрЛицо, ДоходыВычетыНалогиСотрудников,Объект,ДатаОкончания) = 0 Тогда глСообщениеТрассировки(глСообщенияТрассировки, "Не удалось обработать данные о доходах и вычетах!" , 1, 1); Возврат КонецЕсли;; Иначе ДоходыВычетыНалогиСотрудников = глДоходыВычетыНалогиСотрудников; КонецЕсли; СтрокаИтоговойТаблицы=""; ДоходыВычетыНалогиСотрудников.НайтиЗначение(глПолучитьУникальныйКодСотрудника(Объект)+глДополнитьСтроку(Месяц,2),СтрокаИтоговойТаблицы,1); Если СтрокаИтоговойТаблицы = 0 Тогда // работа процедуры глСобратьДанныеДляНДФЛ была прервана - делать больше нечего глСообщениеТрассировки(глСообщенияТрассировки, "Не удалось обработать данные о доходах и вычетах!" , 1, 1); Возврат КонецЕсли; // налог исчисленный собран по периоду регистрации в 7 колонке НалогКУдержанию = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы,7); глСообщениеТрассировки(глСообщенияТрассировки, "Исчислено НДФЛ с января по " + Формат(НачМесяца(ДатаОкончания)-1,"ДММММГГГГ") + ": " + НалогКУдержанию, 0, 1); // налог удержанный собран в 10 колонке Если ДатаГод(ПериодРегистрации.ДатаНачала) > ДатаГод(ДатаНачала) Тогда // если это перерасчет НДФЛ с прошлого года БылоУдержано = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+1,10); Иначе БылоУдержано = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы,10); КонецЕсли; глСообщениеТрассировки(глСообщенияТрассировки, "Удержано НДФЛ с января по " + Формат(НачМесяца(ДатаОкончания)-1,"ДММММГГГГ") + ": " + БылоУдержано, 0, -1); КонецЕсли; ЖурналРасчетов = СоздатьОбъект("ЖурналРасчетов.Зарплата"); Если ПериодРегистрации.ДатаНачала > ПериодДействия.ДатаНачала Тогда НачПериода = ПериодДействия; Иначе НачПериода = ПериодРегистрации; КонецЕсли; Выплачено=0; ВыплаченоЗаМесяц=0; НалогКУдержаниюЗаМесяц=0; УдержаноДругихНалоговЗаМесяц=0; НужныйПериод = 0; ТекущийПериодРегистрации = НачПериода; ЖурналРасчетов.ВыбратьПоЗначению("ФизЛицо", Объект.ФизЛицо, ПериодРегистрации, ПериодРегистрации); Пока ЖурналРасчетов.ПолучитьЗапись()=1 Цикл Если ЖурналРасчетов.Объект.ЮрЛицо <> Объект.ЮрЛицо Тогда Продолжить; КонецЕсли; ВР=ЖурналРасчетов.ВидРасч; Если (ВР = ВидРасчета.НДФЛУдержанный)и(ЖурналРасчетов.ДатаОкончания = ДатаОкончания) Тогда НужныйПериод = 1; КонецЕсли; Если (ВР=ВидРасчета.ПеречислениеВБанк) или (ВР = ВидРасчета.ВыплатаЗарплаты) или (ВР = ВидРасчета.УдержаниеПоИсполнительномуЛисту) Тогда ВыплаченоЗамесяц = ВыплаченоЗамесяц + ЖурналРасчетов.Результат ИначеЕсли (ВР=ВидРасчета.НДФЛ)и(ЖурналРасчетов.ДатаОкончания = ДатаОкончания) Тогда НалогКУдержаниюЗаМесяц = НалогКУдержаниюЗаМесяц + ЖурналРасчетов.Результат ИначеЕсли ((ВР = ВидРасчета.НДФЛУдержанный)или (ВР=ВидРасчета.НДФЛсДивидендовУдержанный) или (ВР=ВидРасчета.НДФЛпо35процентовУдержанный))и(ЖурналРасчетов.ДатаОкончания < ДатаОкончания) Тогда УдержаноДругихНалоговЗаМесяц = УдержаноДругихНалоговЗаМесяц + ЖурналРасчетов.Результат; КонецЕсли; Если ТекущийПериодРегистрации.ДатаОкончания <> ЖурналРасчетов.ПериодРегистрации.ДатаОкончания Тогда ТекущийПериодРегистрации = ЖурналРасчетов.ПериодРегистрации; Если НужныйПериод = 1 Тогда НужныйПериод = 0; Выплачено = Выплачено + ВыплаченоЗаМесяц; НалогКУдержанию = НалогКУдержанию + НалогКУдержаниюЗаМесяц; УдержаноДругихНалогов = УдержаноДругихНалогов + УдержаноДругихНалоговЗаМесяц; ВыплаченоЗаМесяц = 0; НалогКУдержаниюЗаМесяц = 0; УдержаноДругихНалоговЗаМесяц = 0; КонецЕсли; КонецЕсли; КонецЦикла; Если НужныйПериод = 1 Тогда Выплачено = Выплачено + ВыплаченоЗаМесяц; НалогКУдержанию = НалогКУдержанию + НалогКУдержаниюЗаМесяц; УдержаноДругихНалогов = УдержаноДругихНалогов + УдержаноДругихНалоговЗаМесяц; КонецЕсли; глСообщениеТрассировки(глСообщенияТрассировки, "Выплачено (перечислено на счета в банках) в " + Формат(ДатаОкончания,"ДММММГГГГ") + ": " + ВыплаченоЗамесяц, 0, 0); // ограничим сумму удержанного налога накопленной за месяц суммой выплаты // такова наша интерпретация п.4 ст. 226 НК РФ Результат=Макс(Мин(НалогКУдержанию-БылоУдержано,Цел(Выплачено-УдержаноДругихНалогов)),0); глСообщениеТрассировки(глСообщенияТрассировки, "К удержанию в " + Формат(ДатаОкончания,"ДММММГГГГ") + ": " + Результат, 0, 0); КонецПроцедуры // ПровестиРасчет() |
|||
13
vechiy
19.10.11
✎
13:14
|
пестец. сел курить.
|
|||
14
almar
19.10.11
✎
13:16
|
(13) Главное, когда покуришь, руками эти процедуры не трогай
|
|||
15
ZanderZ
19.10.11
✎
13:18
|
(14) я думаю в ЗУП 2,5 он их и не найдет
(13) кури ПроведениеРасчетов.ПолучитьДанныеНДФЛПоРегистратору |
|||
16
vechiy
19.10.11
✎
13:19
|
мне нужно понимание алгоритма, менять ничо не надо.
эти алгоритмы ведь заданы законодательно? правильно? |
|||
17
almar
19.10.11
✎
13:21
|
(16) Почитай налоговый кодекс, главу про НДФЛ, там проще, чем изучать законодательство по коду 1С
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |