ЗУП: Разбор запроса для заполнения документа "Начисление страховых взносов"

Описание задачи:

Зарплата и Управление Персоналом, редакция 2.5 (2.5.20.3)

 

У некого гражданина по мнению расчетчика не корректно заполняются страховые взносы. Для того, чтобы ответить на беду - самое простое - скопировать запрос с параметрами в консоль отчетов и далее задать вве параметры и разобрать запрос. Сложность в том, что запрос "собирается из временных таблиц", поэтому в тестовом запросе необходимо сформировать эти временные таблицы.

 Документ.РасчетСтраховыхВзносов.ПолучитьДанныеРасчета()

 

Параметры:

парамКонецМесяцаПериодаРегистрации = 30.06.2010 23.59.59
парамГоловнаяОрганизация = ООО "СТАРМИКС"
парамОбособленноеПодразделение = ООО "СТАРМИКС"
парамНачалоГода = 01.01.2010 00.00.00

парамКонецГода = 31.12.2010 23.59.59
парамГодРасчета = 2010
парамМесяцРасчета = 6
парамПредыдущийМесяц = 5
парамПериодРегистрации = 01.06.2010 00.00.00
Регистратор = Начисление страховых взносов СТ-00000006 от 30.06.2010 16:04:27
ПредельнаяСумма = 415000
СтавкаВзносаФСС_НС_ПЗ = 0,002
   

Текст запроса для консоли отчетов (пакет запросов) 

ВЫБРАТЬ
 СтраховыеВзносыСведенияОДоходах.Период,
 СтраховыеВзносыСведенияОДоходах.ФизЛицо,
 СтраховыеВзносыСведенияОДоходах.ВидДохода,
 СтраховыеВзносыСведенияОДоходах.ОблагаетсяЕНВД,
 СтраховыеВзносыСведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,
 СтраховыеВзносыСведенияОДоходах.Результат,
 СтраховыеВзносыСведенияОДоходах.Скидка
ПОМЕСТИТЬ ДанныеОДоходах
ИЗ
 РегистрНакопления.СтраховыеВзносыСведенияОДоходах КАК СтраховыеВзносыСведенияОДоходах
ГДЕ
 СтраховыеВзносыСведенияОДоходах.Регистратор = &Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 СведенияОДоходах.ФизЛицо,
 МЕСЯЦ(СведенияОДоходах.Период) КАК Месяц,
 СведенияОДоходах.ОблагаетсяЕНВД,
 СведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,
 СведенияОДоходах.ВидДохода,
 СведенияОДоходах.Результат - СведенияОДоходах.Скидка КАК ОблагаемыйДоход
ПОМЕСТИТЬ ВТДанныеДокумента
ИЗ
 ДанныеОДоходах КАК СведенияОДоходах
 
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
 СведенияОДоходах.ФизЛицо КАК ФизЛицо
ПОМЕСТИТЬ ВТСписокСотрудников
ИЗ
 РегистрНакопления.СтраховыеВзносыСведенияОДоходах КАК СведенияОДоходах
ГДЕ
 НАЧАЛОПЕРИОДА(СведенияОДоходах.Период, МЕСЯЦ) = &парамПериодРегистрации
 И СведенияОДоходах.ОбособленноеПодразделение = &парамОбособленноеПодразделение

ОБЪЕДИНИТЬ

ВЫБРАТЬ РАЗЛИЧНЫЕ
 СведенияОДоходах.ФизЛицо
ИЗ
 ВТДанныеДокумента КАК СведенияОДоходах

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
 
 ;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ДАТАВРЕМЯ(2010,1,31,23,59,59) КАК Период ПОМЕСТИТЬ ВТПериоды ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2010,2,28,23,59,59) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2010,3,31,23,59,59) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2010,4,30,23,59,59) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2010,5,31,23,59,59) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2010,6,30,23,59,59)
 ;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 МЕСЯЦ(Периоды.Период) КАК Месяц,
 ЕСТЬNULL(УчетнаяПолитикаНалоговыйУчет.ВидТарифаСтраховыхВзносов, ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОбщийНалоговыйРежим)) КАК ВидТарифаСтраховыхВзносов
ПОМЕСТИТЬ ВТИспользуемыеТарифы
ИЗ
 (ВЫБРАТЬ
  Периоды.Период КАК Период,
  МАКСИМУМ(УчетнаяПолитикаНалоговыйУчет.Период) КАК ПериодРегистра
 ИЗ
  ВТПериоды КАК Периоды
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаНалоговыйУчет КАК УчетнаяПолитикаНалоговыйУчет
  ПО Периоды.Период >= УчетнаяПолитикаНалоговыйУчет.Период
  И (УчетнаяПолитикаНалоговыйУчет.Организация = &парамГоловнаяОрганизация)
 
 СГРУППИРОВАТЬ ПО
  Периоды.Период) КАК Периоды
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаНалоговыйУчет КАК УчетнаяПолитикаНалоговыйУчет
  ПО Периоды.ПериодРегистра = УчетнаяПолитикаНалоговыйУчет.Период
  И (УчетнаяПолитикаНалоговыйУчет.Организация = &парамГоловнаяОрганизация)

ИНДЕКСИРОВАТЬ ПО
 Месяц
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ТарифСтраховыхВзносовСрезПоследних.ВидТарифа КАК ВидТарифа,
 ТарифСтраховыхВзносовСрезПоследних.ПФР,
 ТарифСтраховыхВзносовСрезПоследних.ПФРНакопительная,
 ТарифСтраховыхВзносовСрезПоследних.ФСС,
 ТарифСтраховыхВзносовСрезПоследних.ФФОМС,
 ТарифСтраховыхВзносовСрезПоследних.ТФОМС
ПОМЕСТИТЬ ВТТарифы
ИЗ
 РегистрСведений.ТарифСтраховыхВзносов.СрезПоследних(&парамКонецГода, ) КАК ТарифСтраховыхВзносовСрезПоследних

ИНДЕКСИРОВАТЬ ПО
 ВидТарифа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 МЕСЯЦ(Периоды.Период) КАК Месяц,
 ГражданствоФизЛиц.ФизЛицо КАК Физлицо,
 ЕСТЬNULL(ГражданствоФизЛиц.НеИмеетПравоНаПенсию, ЛОЖЬ) КАК НеИмеетПравоНаПенсию,
 ЕСТЬNULL(ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование, ЛОЖЬ) КАК НеИмеетПравоНаМедицинскоеСтрахование
ПОМЕСТИТЬ ВТДанныеОПравеНаПенсию
ИЗ
 (ВЫБРАТЬ
  Периоды.Период КАК Период,
  ГражданствоФизЛиц.ФизЛицо КАК Физлицо,
  МАКСИМУМ(ГражданствоФизЛиц.Период) КАК ПериодРегистра
 ИЗ
  ВТПериоды КАК Периоды
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
  ПО Периоды.Период >= ГражданствоФизЛиц.Период
 ГДЕ
  ГражданствоФизЛиц.ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)
 
 СГРУППИРОВАТЬ ПО
  ГражданствоФизЛиц.ФизЛицо,
  Периоды.Период) КАК Периоды
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
  ПО Периоды.ПериодРегистра = ГражданствоФизЛиц.Период
  И Периоды.Физлицо = ГражданствоФизЛиц.ФизЛицо
  И (ГражданствоФизЛиц.НеИмеетПравоНаПенсию
  ИЛИ ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование)

ИНДЕКСИРОВАТЬ ПО
 Физлицо,
 Месяц
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо,
 СведенияОбИнвалидностиФизлиц.Период КАК Период,
 СведенияОбИнвалидностиФизлиц.Инвалидность
ПОМЕСТИТЬ ВТ_СведенияОбИнвалидности
ИЗ
 РегистрСведений.СведенияОбИнвалидностиФизлиц КАК СведенияОбИнвалидностиФизлиц
ГДЕ
 СведенияОбИнвалидностиФизлиц.Физлицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)

ИНДЕКСИРОВАТЬ ПО
 Физлицо,
 Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 МЕСЯЦ(Периоды.Период) КАК Месяц,
 СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо
ПОМЕСТИТЬ ВТДанныеОбИнвалидности
ИЗ
 (ВЫБРАТЬ
  Периоды.Период КАК Период,
  СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо,
  МАКСИМУМ(СведенияОбИнвалидностиФизлиц.Период) КАК ПериодРегистра
 ИЗ
  ВТПериоды КАК Периоды
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СведенияОбИнвалидности КАК СведенияОбИнвалидностиФизлиц
  ПО Периоды.Период >= СведенияОбИнвалидностиФизлиц.Период
 
 СГРУППИРОВАТЬ ПО
  СведенияОбИнвалидностиФизлиц.Физлицо,
  Периоды.Период) КАК Периоды
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СведенияОбИнвалидности КАК СведенияОбИнвалидностиФизлиц
  ПО (СведенияОбИнвалидностиФизлиц.Период = Периоды.ПериодРегистра)
  И Периоды.Физлицо = СведенияОбИнвалидностиФизлиц.Физлицо
  И (СведенияОбИнвалидностиФизлиц.Инвалидность)

ИНДЕКСИРОВАТЬ ПО
 Физлицо,
 Месяц
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 СведенияОДоходах.ФизЛицо КАК ФизЛицо,
 МЕСЯЦ(СведенияОДоходах.Период) КАК Месяц,
 СведенияОДоходах.ОблагаетсяЕНВД,
 СведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,
 СведенияОДоходах.ВидДохода.ВходитВБазуПФР КАК ВходитВБазуПФР,
 СведенияОДоходах.ВидДохода.ВходитВБазуФСС КАК ВходитВБазуФСС,
 СведенияОДоходах.ВидДохода.ВходитВБазуФОМС КАК ВходитВБазуФОМС,
 СведенияОДоходах.РезультатОборот - СведенияОДоходах.СкидкаОборот КАК ОблагаемыйДоход
ПОМЕСТИТЬ ВТДоходыПоФизлицамМесяцам
ИЗ
 РегистрНакопления.СтраховыеВзносыСведенияОДоходах.Обороты(
  &парамНачалоГода,
  &парамКонецМесяцаПериодаРегистрации,
  Месяц,
  Организация = &парамГоловнаяОрганизация
  И Физлицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)) КАК СведенияОДоходах

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 СтраховыеВзносыСведенияОДоходах.ФизЛицо,
 МЕСЯЦ(СтраховыеВзносыСведенияОДоходах.Период),
 СтраховыеВзносыСведенияОДоходах.ОблагаетсяЕНВД,
 СтраховыеВзносыСведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,
 СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуПФР,
 СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФСС,
 СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФОМС,
 -СтраховыеВзносыСведенияОДоходах.Результат + СтраховыеВзносыСведенияОДоходах.Скидка
ИЗ
 РегистрНакопления.СтраховыеВзносыСведенияОДоходах КАК СтраховыеВзносыСведенияОДоходах
ГДЕ
 СтраховыеВзносыСведенияОДоходах.Регистратор = &Регистратор
 И СтраховыеВзносыСведенияОДоходах.Организация = &парамГоловнаяОрганизация
 И СтраховыеВзносыСведенияОДоходах.ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 СтраховыеВзносыСведенияОДоходах.ФизЛицо,
 СтраховыеВзносыСведенияОДоходах.Месяц,
 СтраховыеВзносыСведенияОДоходах.ОблагаетсяЕНВД,
 СтраховыеВзносыСведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,
 СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуПФР,
 СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФСС,
 СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФОМС,
 СтраховыеВзносыСведенияОДоходах.ОблагаемыйДоход
ИЗ
 ВТДанныеДокумента КАК СтраховыеВзносыСведенияОДоходах

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо,
 Месяц
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 РанееИсчисленныеВзносы.ФизЛицо КАК ФизЛицо,
 МЕСЯЦ(РанееИсчисленныеВзносы.Период) КАК Месяц,
 РанееИсчисленныеВзносы.ФССОборот,
 РанееИсчисленныеВзносы.ФФОМСОборот,
 РанееИсчисленныеВзносы.ТФОМСОборот,
 РанееИсчисленныеВзносы.ПФРНакопительнаяОборот,
 РанееИсчисленныеВзносы.ПФРСтраховаяОборот,
 РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот,
 РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот,
 РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуОборот
ПОМЕСТИТЬ ВТРанееИсчисленныеВзносыПоМесяцам
ИЗ
 РегистрНакопления.СтраховыеВзносыИсчисленные.Обороты(
  &парамНачалоГода,
  &парамКонецМесяцаПериодаРегистрации,
  Месяц,
  Организация = &парамГоловнаяОрганизация
  И ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)) КАК РанееИсчисленныеВзносы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 СтраховыеВзносыИсчисленные.ФизЛицо,
 МЕСЯЦ(СтраховыеВзносыИсчисленные.Период),
 -СтраховыеВзносыИсчисленные.ФСС,
 -СтраховыеВзносыИсчисленные.ФФОМС,
 -СтраховыеВзносыИсчисленные.ТФОМС,
 -СтраховыеВзносыИсчисленные.ПФРНакопительная,
 -СтраховыеВзносыИсчисленные.ПФРСтраховая,
 -СтраховыеВзносыИсчисленные.ПФРНакопительнаяЕНВД,
 -СтраховыеВзносыИсчисленные.ПФРСтраховаяЕНВД,
 -СтраховыеВзносыИсчисленные.ПФРПоДополнительномуТарифу
ИЗ
 РегистрНакопления.СтраховыеВзносыИсчисленные КАК СтраховыеВзносыИсчисленные
ГДЕ
 СтраховыеВзносыИсчисленные.Регистратор = &Регистратор
 И СтраховыеВзносыИсчисленные.Организация = &парамГоловнаяОрганизация
 И СтраховыеВзносыИсчисленные.ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)

ИНДЕКСИРОВАТЬ ПО
 Месяц,
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 РанееИсчисленныеВзносы.ФизЛицо КАК ФизЛицо,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ФССОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ФССОборот,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ФФОМСОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ФФОМСОборот,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ТФОМСОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ТФОМСОборот,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА РанееИсчисленныеВзносы.ФССОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ФССОборотИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА РанееИсчисленныеВзносы.ФФОМСОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ФФОМСОборотИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА РанееИсчисленныеВзносы.ТФОМСОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ТФОМСОборотИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяОборот + РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ПФРНакопительнаяОборотИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяОборот + РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ПФРСтраховаяОборотИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ПФРНакопительнаяОборот,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ПФРСтраховаяОборот,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ПФРНакопительнаяЕНВДОборот,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот
  ИНАЧЕ 0
  КОНЕЦ) КАК ПФРСтраховаяЕНВДОборот,
 СУММА(РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуОборот) КАК ПФРПоДополнительномуТарифуОборот
ПОМЕСТИТЬ ВТРанееИсчисленныеВзносы
ИЗ
 ВТРанееИсчисленныеВзносыПоМесяцам КАК РанееИсчисленныеВзносы
  ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбИнвалидности КАК Инвалид
  ПО РанееИсчисленныеВзносы.ФизЛицо = Инвалид.Физлицо
  И РанееИсчисленныеВзносы.Месяц = Инвалид.Месяц

СГРУППИРОВАТЬ ПО
 РанееИсчисленныеВзносы.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 Основная.ФизЛицо КАК ФизЛицо,
 Основная.Месяц КАК Месяц,
 СУММА(ВЫБОР
  КОГДА (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуПФР
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаПФР,
 СУММА(ВЫБОР
  КОГДА (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуФСС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФСС,
 СУММА(ВЫБОР
  КОГДА (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаМедицинскоеСтрахование))
  И Основная.ВходитВБазуФОМС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФОМС,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуПФР
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаПФРИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуПФР
  И Основная.ОблагаетсяЕНВД
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаПФРИнвалидаЕНВД,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА 0
  КОГДА Основная.ОблагаетсяЕНВД
  ТОГДА 0
  КОГДА (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуПФР
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаПФРПоОсновномуТарифу,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА 0
  КОГДА Основная.ОблагаетсяЕНВД
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуПФР
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаПФРЕНВД,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуФСС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФССИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА 0
  КОГДА Основная.ОблагаетсяЕНВД
  ТОГДА 0
  КОГДА (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуФСС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФССПоОсновномуТарифу,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА 0
  КОГДА Основная.ОблагаетсяЕНВД
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуФСС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФССЕНВД,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуФОМС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФОМСИнвалида,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА 0
  КОГДА Основная.ОблагаетсяЕНВД
  ТОГДА 0
  КОГДА (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаМедицинскоеСтрахование))
  И Основная.ВходитВБазуФОМС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФОМСПоОсновномуТарифу,
 СУММА(ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА 0
  КОГДА Основная.ОблагаетсяЕНВД
  И (Иностр.Физлицо ЕСТЬ NULL
  ИЛИ (НЕ Иностр.НеИмеетПравоНаПенсию))
  И Основная.ВходитВБазуФОМС
  ТОГДА Основная.ОблагаемыйДоход
  ИНАЧЕ 0
  КОНЕЦ) КАК БазаФОМСЕНВД
ПОМЕСТИТЬ ВТДоходыЗастрахованныхЛиц
ИЗ
 ВТДоходыПоФизлицамМесяцам КАК Основная
  ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОПравеНаПенсию КАК Иностр
  ПО Основная.ФизЛицо = Иностр.Физлицо
  И Основная.Месяц = Иностр.Месяц
  ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбИнвалидности КАК Инвалид
  ПО Основная.ФизЛицо = Инвалид.Физлицо
  И Основная.Месяц = Инвалид.Месяц

СГРУППИРОВАТЬ ПО
 Основная.ФизЛицо,
 Основная.Месяц

ИНДЕКСИРОВАТЬ ПО
 Месяц,
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 МЕСЯЦ(Периоды.Период) КАК Месяц,
 ДоходыЗастрахованныхЛиц.ФизЛицо КАК ФизЛицо,
 СУММА(ДоходыЗастрахованныхЛиц.БазаПФР) КАК БазаПФР,
 СУММА(ДоходыЗастрахованныхЛиц.БазаФСС) КАК БазаФСС,
 СУММА(ДоходыЗастрахованныхЛиц.БазаФОМС) КАК БазаФОМС
ПОМЕСТИТЬ ВТНакопленнаяОблагаемаяБаза
ИЗ
 ВТПериоды КАК Периоды
  ЛЕВОЕ СОЕДИНЕНИЕ ВТДоходыЗастрахованныхЛиц КАК ДоходыЗастрахованныхЛиц
  ПО (ДоходыЗастрахованныхЛиц.Месяц МЕЖДУ 1 И МЕСЯЦ(Периоды.Период))

СГРУППИРОВАТЬ ПО
 ДоходыЗастрахованныхЛиц.ФизЛицо,
 МЕСЯЦ(Периоды.Период)

ИНДЕКСИРОВАТЬ ПО
 Месяц,
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ДоходыЗастрахованныхЛиц.ФизЛицо КАК ФизЛицо,
 СУММА(ДоходыЗастрахованныхЛиц.БазаПФРИнвалида) КАК БазаПФРИнвалидаВсего,
 СУММА(ДоходыЗастрахованныхЛиц.БазаПФРИнвалидаЕНВД) КАК БазаПФРИнвалидаЕНВД
ПОМЕСТИТЬ ВТБазаПФРПоИнвалидам
ИЗ
 ВТДоходыЗастрахованныхЛиц КАК ДоходыЗастрахованныхЛиц
ГДЕ
 ДоходыЗастрахованныхЛиц.Месяц = &парамМесяцРасчета

СГРУППИРОВАТЬ ПО
 ДоходыЗастрахованныхЛиц.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 База.Месяц КАК Месяц,
 База.ФизЛицо КАК ФизЛицо,
 ВЫБОР
  КОГДА База.БазаПФР <= &ПредельнаяСумма
  ТОГДА 1
  КОГДА База.БазаПФР = ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаПФР, 0)
  ТОГДА 1
  КОГДА ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаПФР, 0) >= &ПредельнаяСумма
  ТОГДА 0
  ИНАЧЕ (&ПредельнаяСумма - ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаПФР, 0)) / (База.БазаПФР - ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаПФР, 0))
 КОНЕЦ КАК КоэффициентОбложенияПФР,
 ВЫБОР
  КОГДА База.БазаФСС <= &ПредельнаяСумма
  ТОГДА 1
  КОГДА База.БазаФСС = ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФСС, 0)
  ТОГДА 1
  КОГДА ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФСС, 0) >= &ПредельнаяСумма
  ТОГДА 0
  ИНАЧЕ (&ПредельнаяСумма - ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФСС, 0)) / (База.БазаФСС - ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФСС, 0))
 КОНЕЦ КАК КоэффициентОбложенияФСС,
 ВЫБОР
  КОГДА База.БазаФОМС <= &ПредельнаяСумма
  ТОГДА 1
  КОГДА База.БазаФОМС = ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФОМС, 0)
  ТОГДА 1
  КОГДА ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФОМС, 0) >= &ПредельнаяСумма
  ТОГДА 0
  ИНАЧЕ (&ПредельнаяСумма - ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФОМС, 0)) / (База.БазаФОМС - ЕСТЬNULL(НакопленоПоПрошлыйМесяц.БазаФОМС, 0))
 КОНЕЦ КАК КоэффициентОбложенияФОМС
ПОМЕСТИТЬ ВТКоэффициентыДостиженияПредельнойСуммы
ИЗ
 ВТНакопленнаяОблагаемаяБаза КАК База
  ЛЕВОЕ СОЕДИНЕНИЕ ВТНакопленнаяОблагаемаяБаза КАК НакопленоПоПрошлыйМесяц
  ПО (База.Месяц - 1 = НакопленоПоПрошлыйМесяц.Месяц)
  И База.ФизЛицо = НакопленоПоПрошлыйМесяц.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
 Месяц,
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ДоходыЗастрахованныхЛиц.ФизЛицо КАК ФизЛицо,
 ДоходыЗастрахованныхЛиц.Месяц КАК Месяц,
 ИспользуемыеТарифы.ВидТарифаСтраховыхВзносов,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияПФР = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаПФРИнвалида
  КОГДА Коэффициенты.КоэффициентОбложенияПФР = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаПФРИнвалида = 0
  ТОГДА 0
  ИНАЧЕ &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаПФР, 0)
 КОНЕЦ КАК БазаПФРИнвалида,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияПФР = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу
  КОГДА Коэффициенты.КоэффициентОбложенияПФР = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаПФРЕНВД = 0
  ТОГДА &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаПФР, 0)
  ИНАЧЕ ВЫРАЗИТЬ((&ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаПФР, 0)) * ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу / (ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу + ДоходыЗастрахованныхЛиц.БазаПФРЕНВД) КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК БазаПФРПоОсновномуТарифу,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияПФР = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаПФРЕНВД
  КОГДА Коэффициенты.КоэффициентОбложенияПФР = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаПФРЕНВД = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу = 0
  ТОГДА &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаПФР, 0)
  ИНАЧЕ &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаПФР, 0) - (ВЫРАЗИТЬ((&ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаПФР, 0)) * ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу / (ДоходыЗастрахованныхЛиц.БазаПФРПоОсновномуТарифу + ДоходыЗастрахованныхЛиц.БазаПФРЕНВД) КАК ЧИСЛО(15, 2)))
 КОНЕЦ КАК БазаПФРЕНВД,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияФСС = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаФССИнвалида
  КОГДА Коэффициенты.КоэффициентОбложенияФСС = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФССИнвалида = 0
  ТОГДА 0
  ИНАЧЕ &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФСС, 0)
 КОНЕЦ КАК БазаФССИнвалида,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияФСС = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу
  КОГДА Коэффициенты.КоэффициентОбложенияФСС = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФССЕНВД = 0
  ТОГДА &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФСС, 0)
  ИНАЧЕ ВЫРАЗИТЬ((&ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФСС, 0)) * ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу / (ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу + ДоходыЗастрахованныхЛиц.БазаФССЕНВД) КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК БазаФССПоОсновномуТарифу,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияФСС = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаФССЕНВД
  КОГДА Коэффициенты.КоэффициентОбложенияФСС = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФССЕНВД = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу = 0
  ТОГДА &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФСС, 0)
  ИНАЧЕ &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФСС, 0) - (ВЫРАЗИТЬ((&ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФСС, 0)) * ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу / (ДоходыЗастрахованныхЛиц.БазаФССПоОсновномуТарифу + ДоходыЗастрахованныхЛиц.БазаФССЕНВД) КАК ЧИСЛО(15, 2)))
 КОНЕЦ КАК БазаФССЕНВД,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияФОМС = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаФОМСИнвалида
  КОГДА Коэффициенты.КоэффициентОбложенияФОМС = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФОМСИнвалида = 0
  ТОГДА 0
  ИНАЧЕ &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФОМС, 0)
 КОНЕЦ КАК БазаФОМСИнвалида,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияФОМС = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу
  КОГДА Коэффициенты.КоэффициентОбложенияФОМС = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФОМСЕНВД = 0
  ТОГДА &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФОМС, 0)
  ИНАЧЕ ВЫРАЗИТЬ((&ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФОМС, 0)) * ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу / (ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу + ДоходыЗастрахованныхЛиц.БазаФОМСЕНВД) КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК БазаФОМСПоОсновномуТарифу,
 ВЫБОР
  КОГДА Коэффициенты.КоэффициентОбложенияФОМС = 1
  ТОГДА ДоходыЗастрахованныхЛиц.БазаФОМСЕНВД
  КОГДА Коэффициенты.КоэффициентОбложенияФОМС = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФОМСЕНВД = 0
  ТОГДА 0
  КОГДА ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу = 0
  ТОГДА &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФОМС, 0)
  ИНАЧЕ &ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФОМС, 0) - (ВЫРАЗИТЬ((&ПредельнаяСумма - ЕСТЬNULL(НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.БазаФОМС, 0)) * ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу / (ДоходыЗастрахованныхЛиц.БазаФОМСПоОсновномуТарифу + ДоходыЗастрахованныхЛиц.БазаФОМСЕНВД) КАК ЧИСЛО(15, 2)))
 КОНЕЦ КАК БазаФОМСЕНВД
ПОМЕСТИТЬ ВТОграниченнаяОблагаемаяБаза
ИЗ
 ВТДоходыЗастрахованныхЛиц КАК ДоходыЗастрахованныхЛиц
  ЛЕВОЕ СОЕДИНЕНИЕ ВТКоэффициентыДостиженияПредельнойСуммы КАК Коэффициенты
  ПО ДоходыЗастрахованныхЛиц.ФизЛицо = Коэффициенты.ФизЛицо
  И ДоходыЗастрахованныхЛиц.Месяц = Коэффициенты.Месяц
  ЛЕВОЕ СОЕДИНЕНИЕ ВТНакопленнаяОблагаемаяБаза КАК НакопленнаяОблагаемаяБазаПоПредыдущийМесяц
  ПО ДоходыЗастрахованныхЛиц.ФизЛицо = НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.ФизЛицо
  И (ДоходыЗастрахованныхЛиц.Месяц - 1 = НакопленнаяОблагаемаяБазаПоПредыдущийМесяц.Месяц)
  ЛЕВОЕ СОЕДИНЕНИЕ ВТИспользуемыеТарифы КАК ИспользуемыеТарифы
  ПО ДоходыЗастрахованныхЛиц.Месяц = ИспользуемыеТарифы.Месяц

ИНДЕКСИРОВАТЬ ПО
 Месяц,
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ОграниченнаяОблагаемаяБаза.ФизЛицо КАК ФизЛицо,
 ОграниченнаяОблагаемаяБаза.ВидТарифаСтраховыхВзносов,
 ВЫБОР
  КОГДА ГОД(ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения) < 1967
  ТОГДА 0
  ИНАЧЕ ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРПоОсновномуТарифу) * ОсновнойТариф.ПФРНакопительная / 100 КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК РезультатПФРНакопительная,
 ВЫБОР
  КОГДА ГОД(ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения) < 1967
  ТОГДА ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРПоОсновномуТарифу) * ОсновнойТариф.ПФР / 100 КАК ЧИСЛО(15, 2))
  ИНАЧЕ ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРПоОсновномуТарифу) * (ОсновнойТариф.ПФР - ОсновнойТариф.ПФРНакопительная) / 100 КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК РезультатПФРСтраховая,
 ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаФССПоОсновномуТарифу) * ОсновнойТариф.ФСС / 100 КАК ЧИСЛО(15, 2)) КАК РезультатФСС,
 ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаФОМСПоОсновномуТарифу) * ОсновнойТариф.ФФОМС / 100 КАК ЧИСЛО(15, 2)) КАК РезультатФФОМС,
 ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаФОМСПоОсновномуТарифу) * ОсновнойТариф.ТФОМС / 100 КАК ЧИСЛО(15, 2)) КАК РезультатТФОМС
ПОМЕСТИТЬ ВТИсчисленоПоОсновномуТарифу
ИЗ
 ВТОграниченнаяОблагаемаяБаза КАК ОграниченнаяОблагаемаяБаза
  ЛЕВОЕ СОЕДИНЕНИЕ ВТТарифы КАК ОсновнойТариф
  ПО ОграниченнаяОблагаемаяБаза.ВидТарифаСтраховыхВзносов = ОсновнойТариф.ВидТарифа

СГРУППИРОВАТЬ ПО
 ОсновнойТариф.ПФРНакопительная,
 ОсновнойТариф.ПФР,
 ОсновнойТариф.ФСС,
 ОсновнойТариф.ФФОМС,
 ОсновнойТариф.ТФОМС,
 ОграниченнаяОблагаемаяБаза.ВидТарифаСтраховыхВзносов,
 ОграниченнаяОблагаемаяБаза.ФизЛицо,
 ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ОграниченнаяОблагаемаяБаза.ФизЛицо КАК ФизЛицо,
 ВЫБОР
  КОГДА ГОД(ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения) < 1967
  ТОГДА 0
  ИНАЧЕ ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРИнвалида) * ТарифИнвалида.ПФРНакопительная / 100 КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК РезультатПФРНакопительнаяИнвалида,
 ВЫБОР
  КОГДА ГОД(ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения) < 1967
  ТОГДА ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРИнвалида) * ТарифИнвалида.ПФР / 100 КАК ЧИСЛО(15, 2))
  ИНАЧЕ ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРИнвалида) * (ТарифИнвалида.ПФР - ТарифИнвалида.ПФРНакопительная) / 100 КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК РезультатПФРСтраховаяИнвалида,
 ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаФССИнвалида) * ТарифИнвалида.ФСС / 100 КАК ЧИСЛО(15, 2)) КАК РезультатФССИнвалида,
 ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаФОМСИнвалида) * ТарифИнвалида.ФФОМС / 100 КАК ЧИСЛО(15, 2)) КАК РезультатФФОМСИнвалида,
 ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаФОМСИнвалида) * ТарифИнвалида.ТФОМС / 100 КАК ЧИСЛО(15, 2)) КАК РезультатТФОМСИнвалида,
 ВЫБОР
  КОГДА ГОД(ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения) < 1967
  ТОГДА 0
  ИНАЧЕ ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРЕНВД) * ТарифЕНВД.ПФРНакопительная / 100 КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК РезультатПФРНакопительнаяЕНВД,
 ВЫБОР
  КОГДА ГОД(ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения) < 1967
  ТОГДА ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРЕНВД) * ТарифЕНВД.ПФР / 100 КАК ЧИСЛО(15, 2))
  ИНАЧЕ ВЫРАЗИТЬ(СУММА(ОграниченнаяОблагаемаяБаза.БазаПФРЕНВД) * (ТарифЕНВД.ПФР - ТарифЕНВД.ПФРНакопительная) / 100 КАК ЧИСЛО(15, 2))
 КОНЕЦ КАК РезультатПФРСтраховаяЕНВД
ПОМЕСТИТЬ ВТИсчисленоПоЛьготномуТарифу
ИЗ
 ВТОграниченнаяОблагаемаяБаза КАК ОграниченнаяОблагаемаяБаза
  ЛЕВОЕ СОЕДИНЕНИЕ ВТТарифы КАК ТарифЕНВД
  ПО (ТарифЕНВД.ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ЕНВД))
  ЛЕВОЕ СОЕДИНЕНИЕ ВТТарифы КАК ТарифИнвалида
  ПО (ТарифИнвалида.ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацияИнвалидов))

СГРУППИРОВАТЬ ПО
 ТарифИнвалида.ПФРНакопительная,
 ТарифИнвалида.ПФР,
 ТарифИнвалида.ФСС,
 ТарифИнвалида.ФФОМС,
 ТарифИнвалида.ТФОМС,
 ТарифЕНВД.ПФРНакопительная,
 ТарифЕНВД.ПФР,
 ТарифЕНВД.ФСС,
 ТарифЕНВД.ФФОМС,
 ТарифЕНВД.ТФОМС,
 ОграниченнаяОблагаемаяБаза.ФизЛицо,
 ОграниченнаяОблагаемаяБаза.ФизЛицо.ДатаРождения

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ВЫРАЗИТЬ(СУММА(ДоходыФизлиц.ОблагаемыйДоход) * 0.14 КАК ЧИСЛО(15, 2)) КАК РезультатПоДополнительномуТарифу,
 ДоходыФизлиц.ФизЛицо КАК ФизЛицо
ПОМЕСТИТЬ ВТВзносыПоДополнительномуТарифу
ИЗ
 ВТДоходыПоФизлицамМесяцам КАК ДоходыФизлиц
ГДЕ
 ДоходыФизлиц.ОблагаетсяПоДополнительномуТарифу

СГРУППИРОВАТЬ ПО
 ДоходыФизлиц.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 Начислено.ФизЛицо КАК ФизЛицо,
 СУММА(Начислено.ОблагаемаяБаза) КАК ОблагаемаяБаза,
 СУММА(Начислено.ОблагаемаяБазаИнвалида) КАК ОблагаемаяБазаИнвалида,
 ВЫРАЗИТЬ(СУММА(Начислено.ОблагаемаяБаза) * &СтавкаВзносаФСС_НС_ПЗ КАК ЧИСЛО(15, 2)) КАК Взносов,
 ВЫРАЗИТЬ(СУММА(Начислено.ОблагаемаяБазаИнвалида) * &СтавкаВзносаФСС_НС_ПЗ * 0.6 КАК ЧИСЛО(15, 2)) КАК ВзносовПоИнвалидам
ПОМЕСТИТЬ ВТБазаВзносовФСС_НС_ПЗ
ИЗ
 (ВЫБРАТЬ
  ОсновныеНачисления.ФизЛицо КАК ФизЛицо,
  ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА ОсновныеНачисления.Результат
  ИНАЧЕ 0
  КОНЕЦ КАК ОблагаемаяБаза,
  ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА ОсновныеНачисления.Результат
  ИНАЧЕ 0
  КОНЕЦ КАК ОблагаемаяБазаИнвалида
 ИЗ
  РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
  ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбИнвалидности КАК Инвалид
  ПО ОсновныеНачисления.ФизЛицо = Инвалид.Физлицо
  И (Инвалид.Месяц = &парамМесяцРасчета)
 ГДЕ
  ОсновныеНачисления.ПериодРегистрации = &парамПериодРегистрации
  И ОсновныеНачисления.ОбособленноеПодразделение = &парамОбособленноеПодразделение
  И ОсновныеНачисления.ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)
  И ОсновныеНачисления.ВидРасчета.КодДоходаФСС_НС = ЗНАЧЕНИЕ(Перечисление.ДоходыФСС_НС.Облагается)
 
 ОБЪЕДИНИТЬ ВСЕ
 
 ВЫБРАТЬ
  ДополнительныеНачисления.ФизЛицо,
  ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ NULL
  ТОГДА ДополнительныеНачисления.Результат
  ИНАЧЕ 0
  КОНЕЦ,
  ВЫБОР
  КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL
  ТОГДА ДополнительныеНачисления.Результат
  ИНАЧЕ 0
  КОНЕЦ
 ИЗ
  РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисления
  ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбИнвалидности КАК Инвалид
  ПО ДополнительныеНачисления.ФизЛицо = Инвалид.Физлицо
  И (Инвалид.Месяц = &парамМесяцРасчета)
 ГДЕ
  НАЧАЛОПЕРИОДА(ДополнительныеНачисления.ПериодРегистрации, МЕСЯЦ) = &парамПериодРегистрации
  И ДополнительныеНачисления.ВидРасчета.КодДоходаФСС_НС = ЗНАЧЕНИЕ(Перечисление.ДоходыФСС_НС.Облагается)
  И ДополнительныеНачисления.ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)
  И ДополнительныеНачисления.ОбособленноеПодразделение = &парамОбособленноеПодразделение) КАК Начислено

СГРУППИРОВАТЬ ПО
 Начислено.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 МАКСИМУМ(БазаВзносовФСС_НС_ПЗ.ОблагаемаяБаза) КАК МаксимумБазы,
 МАКСИМУМ(БазаВзносовФСС_НС_ПЗ.ОблагаемаяБазаИнвалида) КАК МаксимумБазыИнвалида
ПОМЕСТИТЬ ВТМаксимумыОблагаемойБазыПоНС_ПЗ
ИЗ
 ВТБазаВзносовФСС_НС_ПЗ КАК БазаВзносовФСС_НС_ПЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 МАКСИМУМ(БазаВзносовФСС_НС_ПЗ.ФизЛицо) КАК ФизЛицо,
 МАКСИМУМ(БазаВзносовФСС_НС_ПЗИнвалида.ФизЛицо) КАК ФизЛицоИнвалид
ПОМЕСТИТЬ ВТФизлицаОкругления
ИЗ
 ВТМаксимумыОблагаемойБазыПоНС_ПЗ КАК Максимумы
  ЛЕВОЕ СОЕДИНЕНИЕ ВТБазаВзносовФСС_НС_ПЗ КАК БазаВзносовФСС_НС_ПЗ
  ПО (Максимумы.МаксимумБазы > 0)
  И Максимумы.МаксимумБазы = БазаВзносовФСС_НС_ПЗ.ОблагаемаяБаза
  ЛЕВОЕ СОЕДИНЕНИЕ ВТБазаВзносовФСС_НС_ПЗ КАК БазаВзносовФСС_НС_ПЗИнвалида
  ПО (Максимумы.МаксимумБазыИнвалида > 0)
  И Максимумы.МаксимумБазыИнвалида = БазаВзносовФСС_НС_ПЗИнвалида.ОблагаемаяБазаИнвалида
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ВЫРАЗИТЬ(СУММА(БазаВзносовФСС_НС_ПЗ.ОблагаемаяБаза) * &СтавкаВзносаФСС_НС_ПЗ КАК ЧИСЛО(15, 2)) КАК РассчитаноВзносов,
 ВЫРАЗИТЬ(СУММА(БазаВзносовФСС_НС_ПЗ.ОблагаемаяБазаИнвалида) * &СтавкаВзносаФСС_НС_ПЗ * 0.6 КАК ЧИСЛО(15, 2)) КАК РассчитаноВзносовПоИнвалидам,
 СУММА(ВЫБОР
  КОГДА БазаВзносовФСС_НС_ПЗ.ФизЛицо = ФизлицоОкругления.ФизЛицо
  ТОГДА 0
  ИНАЧЕ БазаВзносовФСС_НС_ПЗ.Взносов
  КОНЕЦ) КАК ПросуммированоВзносов,
 СУММА(ВЫБОР
  КОГДА БазаВзносовФСС_НС_ПЗ.ФизЛицо = ФизлицоОкругления.ФизЛицоИнвалид
  ТОГДА 0
  ИНАЧЕ БазаВзносовФСС_НС_ПЗ.ВзносовПоИнвалидам
  КОНЕЦ) КАК ПросуммированоВзносовПоИнвалидам
ПОМЕСТИТЬ ВТИтогоВзносовФСС_НС_ПЗ
ИЗ
 ВТБазаВзносовФСС_НС_ПЗ КАК БазаВзносовФСС_НС_ПЗ
  ЛЕВОЕ СОЕДИНЕНИЕ ВТФизлицаОкругления КАК ФизлицоОкругления
  ПО (ИСТИНА)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 БазаВзносовФСС_НС_ПЗ.ФизЛицо КАК ФизЛицо,
 БазаВзносовФСС_НС_ПЗ.Взносов + БазаВзносовФСС_НС_ПЗ.ВзносовПоИнвалидам КАК Взносов
ПОМЕСТИТЬ ВТВзносыФС_НС_ПЗ
ИЗ
 ВТБазаВзносовФСС_НС_ПЗ КАК БазаВзносовФСС_НС_ПЗ
ГДЕ
 (НЕ БазаВзносовФСС_НС_ПЗ.ФизЛицо В
  (ВЫБРАТЬ
  ФизлицоОкругления.ФизЛицо
  ИЗ
  ВТФизлицаОкругления КАК ФизлицоОкругления
  ГДЕ
  ФизлицоОкругления.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
 
  ОБЪЕДИНИТЬ ВСЕ
 
  ВЫБРАТЬ
  ФизлицоОкругления.ФизЛицоИнвалид
  ИЗ
  ВТФизлицаОкругления КАК ФизлицоОкругления
  ГДЕ
  ФизлицоОкругления.ФизЛицоИнвалид <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)))
 И БазаВзносовФСС_НС_ПЗ.Взносов + БазаВзносовФСС_НС_ПЗ.ВзносовПоИнвалидам <> 0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ФизлицоОкругления.ФизЛицо,
 ИтогоВзносовФСС_НС_ПЗ.РассчитаноВзносов - ИтогоВзносовФСС_НС_ПЗ.ПросуммированоВзносов
ИЗ
 ВТФизлицаОкругления КАК ФизлицоОкругления
  ЛЕВОЕ СОЕДИНЕНИЕ ВТИтогоВзносовФСС_НС_ПЗ КАК ИтогоВзносовФСС_НС_ПЗ
  ПО (ИСТИНА)
ГДЕ
 ИтогоВзносовФСС_НС_ПЗ.РассчитаноВзносов <> ИтогоВзносовФСС_НС_ПЗ.ПросуммированоВзносов
 И ФизлицоОкругления.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ФизлицоОкругления.ФизЛицоИнвалид,
 ИтогоВзносовФСС_НС_ПЗ.РассчитаноВзносовПоИнвалидам - ИтогоВзносовФСС_НС_ПЗ.ПросуммированоВзносовПоИнвалидам
ИЗ
 ВТФизлицаОкругления КАК ФизлицоОкругления
  ЛЕВОЕ СОЕДИНЕНИЕ ВТИтогоВзносовФСС_НС_ПЗ КАК ИтогоВзносовФСС_НС_ПЗ
  ПО (ИСТИНА)
ГДЕ
 ИтогоВзносовФСС_НС_ПЗ.РассчитаноВзносовПоИнвалидам <> ИтогоВзносовФСС_НС_ПЗ.ПросуммированоВзносовПоИнвалидам
 И ФизлицоОкругления.ФизЛицоИнвалид <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 СтраховыеВзносыИсчисленныеОбороты.ФизЛицо,
 -СтраховыеВзносыИсчисленныеОбороты.ФССНесчастныеСлучаиОборот
ИЗ
 РегистрНакопления.СтраховыеВзносыИсчисленные.Обороты(
  &парамПериодРегистрации,
  &парамКонецМесяцаПериодаРегистрации,
  ,
  ФизЛицо В
  (ВЫБРАТЬ
  СписокСотрудников.ФизЛицо
  ИЗ
  ВТСписокСотрудников КАК СписокСотрудников)
  И ОбособленноеПодразделение = &парамОбособленноеПодразделение) КАК СтраховыеВзносыИсчисленныеОбороты

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ВсегоИсчислено.ФизЛицо КАК ФизЛицо,
 ВсегоИсчислено.Порядок,
 СУММА(ВсегоИсчислено.РезультатПФРНакопительная) КАК РезультатПФРНакопительная,
 СУММА(ВсегоИсчислено.РезультатПФРСтраховая) КАК РезультатПФРСтраховая,
 СУММА(ВсегоИсчислено.РезультатПФРНакопительнаяЕНВД) КАК РезультатПФРНакопительнаяЕНВД,
 СУММА(ВсегоИсчислено.РезультатПФРСтраховаяЕНВД) КАК РезультатПФРСтраховаяЕНВД,
 СУММА(ВсегоИсчислено.РезультатФСС) КАК РезультатФСС,
 СУММА(ВсегоИсчислено.РезультатФФОМС) КАК РезультатФФОМС,
 СУММА(ВсегоИсчислено.РезультатТФОМС) КАК РезультатТФОМС,
 СУММА(ВсегоИсчислено.РезультатПФРНакопительнаяИнвалида) КАК РезультатПФРНакопительнаяИнвалида,
 СУММА(ВсегоИсчислено.РезультатПФРСтраховаяИнвалида) КАК РезультатПФРСтраховаяИнвалида,
 СУММА(ВсегоИсчислено.РезультатПоДополнительномуТарифу) КАК РезультатПоДополнительномуТарифу,
 СУММА(ВсегоИсчислено.РезультатФССНесчастныеСлучаи) КАК РезультатФССНесчастныеСлучаи
ПОМЕСТИТЬ ВТСуммыВзносовНарастающимИтогом
ИЗ
 (ВЫБРАТЬ
  ИсчисленоПоОсновномуТарифу.ФизЛицо КАК ФизЛицо,
  ИсчисленоПоОсновномуТарифу.ФизЛицо.Наименование КАК Порядок,
  ИсчисленоПоОсновномуТарифу.РезультатПФРНакопительная КАК РезультатПФРНакопительная,
  ИсчисленоПоОсновномуТарифу.РезультатПФРСтраховая КАК РезультатПФРСтраховая,
  ИсчисленоПоОсновномуТарифу.РезультатФСС КАК РезультатФСС,
  ИсчисленоПоОсновномуТарифу.РезультатФФОМС КАК РезультатФФОМС,
  ИсчисленоПоОсновномуТарифу.РезультатТФОМС КАК РезультатТФОМС,
  0 КАК РезультатПФРНакопительнаяЕНВД,
  0 КАК РезультатПФРСтраховаяЕНВД,
  0 КАК РезультатПФРНакопительнаяИнвалида,
  0 КАК РезультатПФРСтраховаяИнвалида,
  0 КАК РезультатПоДополнительномуТарифу,
  0 КАК РезультатФССНесчастныеСлучаи
 ИЗ
  ВТИсчисленоПоОсновномуТарифу КАК ИсчисленоПоОсновномуТарифу
 
 ОБЪЕДИНИТЬ ВСЕ
 
 ВЫБРАТЬ
  ИсчисленоПоЛьготномуТарифу.ФизЛицо,
  ИсчисленоПоЛьготномуТарифу.ФизЛицо.Наименование,
  0,
  0,
  ИсчисленоПоЛьготномуТарифу.РезультатФССИнвалида,
  ИсчисленоПоЛьготномуТарифу.РезультатФФОМСИнвалида,
  ИсчисленоПоЛьготномуТарифу.РезультатТФОМСИнвалида,
  ИсчисленоПоЛьготномуТарифу.РезультатПФРНакопительнаяЕНВД,
  ИсчисленоПоЛьготномуТарифу.РезультатПФРСтраховаяЕНВД,
  ИсчисленоПоЛьготномуТарифу.РезультатПФРНакопительнаяИнвалида,
  ИсчисленоПоЛьготномуТарифу.РезультатПФРСтраховаяИнвалида,
  0,
  0
 ИЗ
  ВТИсчисленоПоЛьготномуТарифу КАК ИсчисленоПоЛьготномуТарифу
 
 ОБЪЕДИНИТЬ ВСЕ
 
 ВЫБРАТЬ
  ВзносыПоДополнительномуТарифу.ФизЛицо,
  ВзносыПоДополнительномуТарифу.ФизЛицо.Наименование,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ВзносыПоДополнительномуТарифу.РезультатПоДополнительномуТарифу,
  0
 ИЗ
  ВТВзносыПоДополнительномуТарифу КАК ВзносыПоДополнительномуТарифу
 
 ОБЪЕДИНИТЬ ВСЕ
 
 ВЫБРАТЬ
  ВзносыФС_НС_ПЗ.ФизЛицо,
  ВзносыФС_НС_ПЗ.ФизЛицо.Наименование,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ВзносыФС_НС_ПЗ.Взносов
 ИЗ
  ВТВзносыФС_НС_ПЗ КАК ВзносыФС_НС_ПЗ) КАК ВсегоИсчислено

СГРУППИРОВАТЬ ПО
 ВсегоИсчислено.ФизЛицо,
 ВсегоИсчислено.Порядок

ИНДЕКСИРОВАТЬ ПО
 ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 СуммыНарастающимИтогом.ФизЛицо КАК ФизЛицо,
 СуммыНарастающимИтогом.Порядок КАК Порядок,
 СуммыНарастающимИтогом.РезультатФСС - ЕСТЬNULL(ИсчисленныеВзносы.ФССОборот, 0) - ЕСТЬNULL(ИсчисленныеВзносы.ФССОборотИнвалида, 0) КАК ФСС,
 СуммыНарастающимИтогом.РезультатФФОМС - ЕСТЬNULL(ИсчисленныеВзносы.ФФОМСОборот, 0) - ЕСТЬNULL(ИсчисленныеВзносы.ФФОМСОборотИнвалида, 0) КАК ФФОМС,
 СуммыНарастающимИтогом.РезультатТФОМС - ЕСТЬNULL(ИсчисленныеВзносы.ТФОМСОборот, 0) - ЕСТЬNULL(ИсчисленныеВзносы.ТФОМСОборотИнвалида, 0) КАК ТФОМС,
 СуммыНарастающимИтогом.РезультатПФРНакопительная - ЕСТЬNULL(ИсчисленныеВзносы.ПФРНакопительнаяОборот, 0) + ВЫБОР
  КОГДА МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего <> 0
  И МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД <> 0
  ТОГДА ВЫРАЗИТЬ((СуммыНарастающимИтогом.РезультатПФРНакопительнаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРНакопительнаяОборотИнвалида, 0)) * (МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего - МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД) / МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего КАК ЧИСЛО(15, 2))
  ИНАЧЕ СуммыНарастающимИтогом.РезультатПФРНакопительнаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРНакопительнаяОборотИнвалида, 0)
 КОНЕЦ КАК ПФРНакопительная,
 СуммыНарастающимИтогом.РезультатПФРСтраховая - ЕСТЬNULL(ИсчисленныеВзносы.ПФРСтраховаяОборот, 0) + ВЫБОР
  КОГДА МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего <> 0
  И МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД <> 0
  ТОГДА ВЫРАЗИТЬ((СуммыНарастающимИтогом.РезультатПФРСтраховаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРСтраховаяОборотИнвалида, 0)) * (МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего - МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД) / МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего КАК ЧИСЛО(15, 2))
  ИНАЧЕ СуммыНарастающимИтогом.РезультатПФРСтраховаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРСтраховаяОборотИнвалида, 0)
 КОНЕЦ КАК ПФРСтраховая,
 СуммыНарастающимИтогом.РезультатПФРНакопительнаяЕНВД - ЕСТЬNULL(ИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот, 0) + ВЫБОР
  КОГДА МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего <> 0
  И МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД <> 0
  ТОГДА СуммыНарастающимИтогом.РезультатПФРНакопительнаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРНакопительнаяОборотИнвалида, 0) - (ВЫРАЗИТЬ((СуммыНарастающимИтогом.РезультатПФРНакопительнаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРНакопительнаяОборотИнвалида, 0)) * (МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего - МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД) / МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего КАК ЧИСЛО(15, 2)))
  ИНАЧЕ 0
 КОНЕЦ КАК ПФРНакопительнаяЕНВД,
 СуммыНарастающимИтогом.РезультатПФРСтраховаяЕНВД - ЕСТЬNULL(ИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот, 0) + ВЫБОР
  КОГДА МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего <> 0
  И МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД <> 0
  ТОГДА СуммыНарастающимИтогом.РезультатПФРСтраховаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРСтраховаяОборотИнвалида, 0) - (ВЫРАЗИТЬ((СуммыНарастающимИтогом.РезультатПФРСтраховаяИнвалида - ЕСТЬNULL(ИсчисленныеВзносы.ПФРСтраховаяОборотИнвалида, 0)) * (МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего - МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаЕНВД) / МесячнаяБазаПФРПоИнвалидам.БазаПФРИнвалидаВсего КАК ЧИСЛО(15, 2)))
  ИНАЧЕ 0
 КОНЕЦ КАК ПФРСтраховаяЕНВД,
 СуммыНарастающимИтогом.РезультатПоДополнительномуТарифу - ЕСТЬNULL(ИсчисленныеВзносы.ПФРПоДополнительномуТарифуОборот, 0) КАК ПоДополнительномуТарифу,
 СуммыНарастающимИтогом.РезультатФССНесчастныеСлучаи КАК ФССНесчастныеСлучаи
ПОМЕСТИТЬ ВТВзносыЗаМесяц
ИЗ
 ВТСуммыВзносовНарастающимИтогом КАК СуммыНарастающимИтогом
  ЛЕВОЕ СОЕДИНЕНИЕ ВТРанееИсчисленныеВзносы КАК ИсчисленныеВзносы
  ПО СуммыНарастающимИтогом.ФизЛицо = ИсчисленныеВзносы.ФизЛицо
  ЛЕВОЕ СОЕДИНЕНИЕ ВТБазаПФРПоИнвалидам КАК МесячнаяБазаПФРПоИнвалидам
  ПО СуммыНарастающимИтогом.ФизЛицо = МесячнаяБазаПФРПоИнвалидам.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
 Порядок
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 Взносы.ФизЛицо,
 Взносы.ФСС,
 Взносы.ФФОМС,
 Взносы.ТФОМС,
 Взносы.ПФРНакопительная,
 Взносы.ПФРСтраховая,
 Взносы.ПФРНакопительнаяЕНВД,
 Взносы.ПФРСтраховаяЕНВД,
 Взносы.ПоДополнительномуТарифу КАК ПФРПоДополнительномуТарифу,
 Взносы.ФССНесчастныеСлучаи
ИЗ
 ВТВзносыЗаМесяц КАК Взносы
ГДЕ
 (Взносы.ФСС <> 0
  ИЛИ Взносы.ФФОМС <> 0
  ИЛИ Взносы.ТФОМС <> 0
  ИЛИ Взносы.ПФРНакопительная <> 0
  ИЛИ Взносы.ПФРСтраховая <> 0
  ИЛИ Взносы.ПФРНакопительнаяЕНВД <> 0
  ИЛИ Взносы.ПФРСтраховаяЕНВД <> 0
  ИЛИ Взносы.ПоДополнительномуТарифу <> 0
  ИЛИ Взносы.ФССНесчастныеСлучаи <> 0)

УПОРЯДОЧИТЬ ПО
 Взносы.Порядок