Формирование ИС в ПФР Больничных листов было больше 1, ошибочно попадет в СЗВ-6-2!

Новая тема
"В процедуре глЗаполнитьТаблицуСотрудниковСОсобымиПериодами() устаналивается признак неких периодов. При свертывании таблицы получается, если было несколько периодов, например больничный, признак ЕстьБЛБудет олличен от 1, а дальше он анализируется на 1. При формировании ИС, если у сотрудника в периоде БЛ было больше 1, он автоматически попадет в СЗВ-6-2!!!

Процедура глЗаполнитьТаблицуСотрудниковСОсобымиПериодами(ТаблицаСотрудниковСОсобымиПериодами, СписокСотрудников, ДатаНачала, ДатаОкончания,
     СписокВРБольничныеЛисты,СписокВРОтпускаБезСохранения,СписокВРОтпускаИсключаемыеИзСтажа,СписокВРОтсутствиеПоБолезни,СписокВРПрочиеИсключаемыеИзСтажа = """")
 
//      

ДатаЗапросаС  = ДатаНачала;
ДатаЗапросаПо = ДатаОкончания;

Если ПустоеЗначение(СписокВРПрочиеИсключаемыеИзСтажа)=1 Тогда
 СписокВРПрочиеИсключаемыеИзСтажа = СоздатьОбъект("СписокЗначений");    
КонецЕсли;
СписокВР = СоздатьОбъект("СписокЗначений");
СписокВРБольничныеЛисты.Выгрузить(СписокВР);
Для Ном =1 По СписокВРОтпускаБезСохранения.РазмерСписка() Цикл
 СписокВР.ДобавитьЗначение(СписокВРОтпускаБезСохранения.ПолучитьЗначение(Ном));
КонецЦикла;
Для Ном =1 По СписокВРОтпускаИсключаемыеИзСтажа.РазмерСписка() Цикл
 СписокВР.ДобавитьЗначение(СписокВРОтпускаИсключаемыеИзСтажа.ПолучитьЗначение(Ном));
КонецЦикла;
Для Ном =1 По СписокВРОтсутствиеПоБолезни.РазмерСписка() Цикл
 СписокВР.ДобавитьЗначение(СписокВРОтсутствиеПоБолезни.ПолучитьЗначение(Ном));
КонецЦикла;
Для Ном =1 По СписокВРПрочиеИсключаемыеИзСтажа.РазмерСписка() Цикл
 СписокВР.ДобавитьЗначение(СписокВРПрочиеИсключаемыеИзСтажа.ПолучитьЗначение(Ном));
 КонецЦикла;
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(ТаблицаПериодовДействия)
|с ДатаЗапросаС по ДатаЗапросаПо;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
|ТекущийДокумент = ЖурналРасчетов.Зарплата.ТекущийДокумент;
|ТекущаяЗапись = ЖурналРасчетов.Зарплата.ТекущаяЗапись;
|Группировка Сотрудник без групп;
|Группировка ТекущаяЗапись;
|Условие(Сотрудник в СписокСотрудников);
|Условие(ВидРасч в СписокВР);
|"//}}ЗАПРОС
;

Если Запрос.Выполнить(ТекстЗапроса) =1 Тогда
 Пока Запрос.Группировка("Сотрудник")=1 Цикл
  Пока Запрос.Группировка("ТекущаяЗапись")=1 Цикл
   
   ВР = Запрос.ВидРасч;
   Если СписокВРБольничныеЛисты.Принадлежит(ВР) = 1 Тогда
    ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
    ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
    ТаблицаСотрудниковСОсобымиПериодами.ЕстьБЛ = 1;
   ИначеЕсли СписокВРОтпускаБезСохранения.Принадлежит(ВР) = 1 Тогда
  ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
  ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
  ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпускЗаСвойСчет = 1;
   ИначеЕсли СписокВРОтпускаИсключаемыеИзСтажа.Принадлежит(ВР) = 1 Тогда
    ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
    ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
    ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпуск = 1;
   ИначеЕсли СписокВРОтсутствиеПоБолезни.Принадлежит(ВР) = 1 Тогда
    ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
    ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
    ТаблицаСотрудниковСОсобымиПериодами.ОтсутствиеПоБолезни = 1;
   ИначеЕсли СписокВРПрочиеИсключаемыеИзСтажа.Принадлежит(ВР) = 1 Тогда
    Док = Запрос.ТекущийДокумент;
    Если Док.Вид() = "Невыходы" Тогда
     Если Док.ПричинаОтсутствия = Перечисление.ПричинаОтсутствия.ПростойПоВинеРаботника Тогда
      ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
      ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
      ТаблицаСотрудниковСОсобымиПериодами.ПрочиеИсключенияИзСтажа = 1;  
     КонецЕсли;
     
    КонецЕсли;
   КонецЕсли;
   
  КонецЦикла;
 КонецЦикла;
КонецЕсли;    

ТаблицаСотрудниковСОсобымиПериодами.Свернуть("Сотрудник","ЕстьБЛ,ЕстьОтпускЗаСвойСчет,ЕстьОтпуск,ОтсутствиеПоБолезни, ПрочиеИсключенияИзСтажа");
//natl здесь добавлено
ТаблицаСотрудниковСОсобымиПериодами.ВыбратьСтроки();
Пока ТаблицаСотрудниковСОсобымиПериодами.ПолучитьСтроку()=1 Цикл
 ТаблицаСотрудниковСОсобымиПериодами.ЕстьБЛ=Мин(ТаблицаСотрудниковСОсобымиПериодами.ЕстьБЛ,1);
 ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпускЗаСвойСчет=Мин(ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпускЗаСвойСчет,1);
 ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпуск=Мин(ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпуск,1);
 ТаблицаСотрудниковСОсобымиПериодами.ОтсутствиеПоБолезни=Мин(ТаблицаСотрудниковСОсобымиПериодами.ОтсутствиеПоБолезни,1);
 ТаблицаСотрудниковСОсобымиПериодами.ПрочиеИсключенияИзСтажа=Мин(ТаблицаСотрудниковСОсобымиПериодами.ПрочиеИсключенияИзСтажа,1);
КонецЦикла;
//natl- здесь добавлено
КонецПроцедуры //глЗаполнитьТаблицуСотрудниковСОсобымиПериодами"
спасибо
Еще не правильно считает при привышении
Не должна считать с превышения по решению ПФР!
Читают тему
(гостей: 1)

Быстрый переход