Формирование ИС в ПФР Больничных листов было больше 1, ошибочно попадет в СЗВ-6-2!
10.04.2012
14:04
#1
"В процедуре глЗаполнитьТаблицуСотрудниковСОсобымиПериодами() устаналивается признак неких периодов. При свертывании таблицы получается, если было несколько периодов, например больничный, признак ЕстьБЛБудет олличен от 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 Тогда
СписокВРПрочиеИсключаемыеИзСтажа = СоздатьОбъект("СписокЗначений");
КонецЕсли;
СписокВР = СоздатьОбъект("СписокЗначений");
СписокВРБольничныеЛисты.Выгрузить(СписокВР);
Для Ном =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)