1. Перечисление- СЗВПараметр3ИТС2010 добавить значение «ДОНОРСКИЕ»
2. Добавить в процедуру глЗаполнитьТаблицуСотрудниковСОсобымиПериодами передаваемый параметр СписокВРДонорскиеДни
Процедура глЗаполнитьТаблицуСотрудниковСОсобымиПериодами(ТаблицаСотрудниковСОсобымиПериодами, СписокСотрудников, ДатаНачала, ДатаОкончания,СписокВРБольничныеЛисты,СписокВРОтпускаБезСохранения,
СписокВРОтпускаИсключаемыеИзСтажа,СписокВРДонорскиеДни)
3. Добавить запрос а процедуру глЗаполнитьТаблицуСотрудниковСОсобымиПериодами
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(ТаблицаПериодовДействияОтпуск)
|с ДатаЗапросаС по ДатаЗапросаПо;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
|Группировка Сотрудник без групп;
|Условие(Сотрудник в СписокСотрудников);
|Условие(ВидРасч в СписокВРОтпускаИсключаемыеИзСтажа);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) =1 Тогда
Пока Запрос.Группировка("Сотрудник")=1 Цикл
ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
ТаблицаСотрудниковСОсобымиПериодами.ЕстьОтпуск = 1;
КонецЦикла;
КонецЕсли;
Запрос=СоздатьОбъект("Запрос"); //Zarema ДонорскиеДни начало изм.
ТекстЗапроса = "//{{ЗАПРОС(ТаблицаПериодовДействияДонорскиеДни)
|с ДатаЗапросаС по ДатаЗапросаПо;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
|Группировка Сотрудник без групп;
|Условие(Сотрудник в СписокСотрудников);
|Условие(ВидРасч в СписокВРДонорскиеДни);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) =1 Тогда
Пока Запрос.Группировка("Сотрудник")=1 Цикл
ТаблицаСотрудниковСОсобымиПериодами.НоваяСтрока();
ТаблицаСотрудниковСОсобымиПериодами.Сотрудник = Запрос.Сотрудник;
ТаблицаСотрудниковСОсобымиПериодами.ЕстьДонорские = 1;
КонецЦикла;
КонецЕсли; // Zarema ДонорскиеДни конец изм.
- В процедуру глСобратьДанныеДляСЗВ2010 добавить список значений
// заполним списоки в.р. которые используем в дальнейшем для выделения периода стажа
СписокВРБольничныеЛисты = СоздатьОбъект("СписокЗначений");
СписокВРОтпускаБезСохранения = СоздатьОбъект("СписокЗначений");
СписокВРОтпускаИсключаемыеИзСтажа = СоздатьОбъект("СписокЗначений");
СписокВРДонорскиеДни = СоздатьОбъект("СписокЗначений"); //Zarema ДонорскиеДни
Для Сч = 1 По ГруппаРасчетов.УчитыватьДни.Количество() Цикл // эти в.р. определяют отработанное время
ВР = ГруппаРасчетов.УчитыватьДни.ПолучитьРасчет(Сч);
Если ВР.ВходитВГруппу(ГруппаРасчетов.БольничныеЛисты) = 1 Тогда
Если (ВР <> ВидРасчета.ОтпускПоБеременностиПоТекущемуМесяцу)
и (ВР <> ВидРасчета.ОтпускПоБеременности)
и (ВР <> ВидРасчета.ОтпускПоБеременностис2004)
и (ВР <> ВидРасчета.ОтпускПоБеременностис2005)
и (ВР <> ВидРасчета.ОтпускПоБеременностис2007)
и (ВР <> ВидРасчета.ОтпускПоБеременностис2010) Тогда
// больничные листы, кроме отпуска по беременности и родам
СписокВРБольничныеЛисты.ДобавитьЗначение(ВР);
КонецЕсли;
ИначеЕсли (ВР = ВидРасчета.ОтпускЗаСвойСчетКраткосрочный)или (ВР = ВидРасчета.ОтпускЗаСвойСчетДолгосрочный) Тогда
//отпуска без сохранения заработной платы
СписокВРОтпускаБезСохранения.ДобавитьЗначение(ВР);
СписокВРОтпускаИсключаемыеИзСтажа.ДобавитьЗначение(ВР);
ИначеЕсли (ВР = ВидРасчета.ОтпускУчебный) Тогда
СписокВРОтпускаИсключаемыеИзСтажа.ДобавитьЗначение(ВР);
ИначеЕсли (ВР = ВидРасчета.ДниДоноров) Тогда //Zarema ДонорскиеДни
СписокВРДонорскиеДни.ДобавитьЗначение(ВР);
КонецЕсли;
КонецЦикла;
// получим таблицу значений в которй будут сотрудники, имевшие в периоде отчета
// отпуск без сохранения ЗП, больничные или отпуска, исключаемые из льготного стажа
ТаблицаСотрудниковСОсобымиПериодами=СоздатьОбъект("ТаблицаЗначений");
ТаблицаСотрудниковСОсобымиПериодами.НоваяКолонка("Сотрудник");
ТаблицаСотрудниковСОсобымиПериодами.НоваяКолонка("ЕстьБЛ", "Число", 1, 0);
ТаблицаСотрудниковСОсобымиПериодами.НоваяКолонка("ЕстьОтпускЗаСвойСчет", "Число", 1, 0);
ТаблицаСотрудниковСОсобымиПериодами.НоваяКолонка("ЕстьОтпуск", "Число", 1, 0);
ТаблицаСотрудниковСОсобымиПериодами.НоваяКолонка("ЕстьДонорские","Число",1,0); //Zarema ДонорскиеДни
глЗаполнитьТаблицуСотрудниковСОсобымиПериодами(ТаблицаСотрудниковСОсобымиПериодами, Сотрудники, ДатаНачала, ДатаОкончания,
СписокВРБольничныеЛисты,СписокВРОтпускаБезСохранения,СписокВРОтпускаИсключаемыеИзСтажа,
СписокВРДонорскиеДни); // Zarema ДонорскиеДни
Обнуляем все в той же процедуре значение ЕстьДонорские и получаем значения из таблицы
ЕстьОтпуск = 0;
ЕстьБЛ = 0;
ЕстьОтпускЗаСвойСчет = 0;
ЕстьДонорские=0; // Zarema ДонорскиеДни
НомСтрокиТОС = "";
ТаблицаСотрудниковСОсобымиПериодами.НайтиЗначение(Сотрудник,НомСтрокиТОС,"Сотрудник");
Если НомСтрокиТОС>0 Тогда
ЕстьБЛ = ТаблицаСотрудниковСОсобымиПериодами.ПолучитьЗначение(НомСтрокиТОС,"ЕстьБЛ");
ЕстьОтпускЗаСвойСчет = ТаблицаСотрудниковСОсобымиПериодами.ПолучитьЗначение(НомСтрокиТОС,"ЕстьОтпускЗаСвойСчет");
ЕстьОтпуск = ТаблицаСотрудниковСОсобымиПериодами.ПолучитьЗначение(НомСтрокиТОС,"ЕстьОтпуск");
ЕстьДонорские = ТаблицаСотрудниковСОсобымиПериодами.ПолучитьЗначение(НомСтрокиТОС,"ЕстьДонорские"); // Zarema ДонорскиеДни
КонецЕсли;
Добавляем новое условие если есть донорские дни все в той же процедуре
Если ЕстьБЛ = 1 Тогда
ТаблицаБЛ="";
Если глЗаполнитьТаблицуПериодовДействияВР(Сотрудник,ТаблицаБЛ,Начало, Окончание, СписокВРБольничныеЛисты)=1 Тогда
//Создадим набор для стажа, которым будем замещать периоды
НаборДляСтажа.УдалитьВсе();
НаборДляСтажа.ДобавитьЗначение("");
НаборДляСтажа.ДобавитьЗначение("");
НаборДляСтажа.ДобавитьЗначение(Перечисление.СЗВПараметр3ИТС2010.ВРНЕТРУД);
НаборДляСтажа.ДобавитьЗначение("");
НаборДляСтажа.ДобавитьЗначение("");
//впишем периоды отпусков за свой счет
ТаблицаБЛ.ВыбратьСтроки();
Пока ТаблицаБЛ.ПолучитьСтроку()=1 Цикл
НачалоПериода=ТаблицаБЛ.НачалоПериода;
ОкончаниеПериода=ТаблицаБЛ.ОкончаниеПериода;
//"впишем" во временную таблицу период
глВписатьОсновнуюЗаписьОСтаже2010("Вписать",ВремТаблицаСоСтажем,НомерЗаписи,НачалоПериода,ОкончаниеПериода, НаборДляСтажа);
КонецЦикла;
КонецЕсли;
КонецЕсли;
// Zarema ДонорскиеДни началоизм.
Если ЕстьДонорские = 1 Тогда
ТаблицаДонор="";
Если глЗаполнитьТаблицуПериодовДействияВР(Сотрудник,ТаблицаДонор,Начало, Окончание, СписокВРДонорскиеДни)=1 Тогда
//Создадим набор для стажа, которым будем замещать периоды
НаборДляСтажа.УдалитьВсе();
НаборДляСтажа.ДобавитьЗначение("");
НаборДляСтажа.ДобавитьЗначение("");
НаборДляСтажа.ДобавитьЗначение(Перечисление.СЗВПараметр3ИТС2010.ДОНОРСКИЕ);
НаборДляСтажа.ДобавитьЗначение("");
НаборДляСтажа.ДобавитьЗначение("");
ТаблицаДонор.ВыбратьСтроки();
Пока ТаблицаДонор.ПолучитьСтроку()=1 Цикл
НачалоПериода=ТаблицаДонор.НачалоПериода;
ОкончаниеПериода=ТаблицаДонор.ОкончаниеПериода;
глВписатьОсновнуюЗаписьОСтаже2010("Вписать",ВремТаблицаСоСтажем,НомерЗаписи,НачалоПериода,ОкончаниеПериода, НаборДляСтажа);
КонецЦикла;
КонецЕсли;
КонецЕсли;
// Zarema ДонорскиеДни конецизм.