В конфигурацию необходимо внести следующие изменения:
1. В регистре сведений "ШтатноеРасписаниеОрганизаций" добавляем ресурсы:
"КлассУсловийТруда" (тип ПеречислениеСсылка.КлассыУсловийТрудаПоРезультатамСпециальнойОценки);
"ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией" (тип ПеречислениеСсылка.ВидыРаботСДосрочнойПенсией);
Размещаем ресурсы на форме записи:
При желании можете изменять видимость полей в зависимости от константы "ИспользуютсяРаботыСДосрочнойПенсией".
2. В общем модуле "ПроцедурыПерсонифицированногоУчетаПолныеПрава" в функции "ДанныеДляЗаполненияСтажа_2014" необходимо внести такие изменения в запрос:
А. В создание временной таблицы "ВТКадровыеПериоды" (примерно 530 строка функции) добавляем подразделение:
"
|ВЫБРАТЬ
| ПериодыПостоянства.Сотрудник КАК Сотрудник,
| ПериодыПостоянства.ФизЛицо КАК ФизЛицо,
| ЗНАЧЕНИЕ(Справочник.ПараметрыИсчисляемогоСтраховогоСтажа2014.ПустаяСсылка) КАК ТретийПараметрИсчисляемогоСтажа,
| &Организация КАК ОбособленноеПодразделение,
| &ОтчетныйПериод КАК ОтчетныйПериод,
| ПериодыПостоянства.ТерриториальныеУсловия,
| ПериодыПостоянства.Должность,
| ПериодыПостоянства.ОсобыеУсловияТруда,
| ПериодыПостоянства.ГрафикРаботы,
| ПериодыПостоянства.ЗанимаемыхСтавок,
| ПериодыПостоянства.КодПозицииСписка,
| ЕСТЬNULL(ПериодыПостоянства.ОснованиеВыслугиЛет, ЗНАЧЕНИЕ(Справочник.ОснованияВыслугиЛет.ПустаяСсылка)) КАК ОснованиеВыслугиЛет,
| ПериодыПостоянства.НазначениеС КАК ДатаНачалаПериода,
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| ПериодыПостоянства.ПодразделениеОрганизации,
//-Конец доработки
| ВЫБОР
| КОГДА ПериодыПостоянства.НазначениеПо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ИНАЧЕ ДОБАВИТЬКДАТЕ(ПериодыПостоянства.НазначениеПо, ДЕНЬ, -1)
| КОНЕЦ КАК ДатаОкончанияПериода
|ПОМЕСТИТЬ ВТКадровыеПериоды"
Б. В создание временной таблицы "ВТДниСтажаДоОбработкиПараметровИсчСтажа" (примерно 991 строка функции с учетом изменений прошлого этапа) вносим аналогичные изменения:
"ВЫБРАТЬ
| НефильтрованныеДниСтажа.ДатаКалендаря,
| ВЫБОР
| КОГДА НефильтрованныеДниСтажа.ДатаКалендаря = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ИНАЧЕ ДОБАВИТЬКДАТЕ(НефильтрованныеДниСтажа.ДатаКалендаря, ДЕНЬ, 1)
| КОНЕЦ КАК СледующаяДатаКалендаря,
| ВЫБОР
| КОГДА НефильтрованныеДниСтажа.ДатаКалендаря = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ИНАЧЕ ДОБАВИТЬКДАТЕ(НефильтрованныеДниСтажа.ДатаКалендаря, ДЕНЬ, -1)
| КОНЕЦ КАК ПредыдущаяДатаКалендаря,
| МИНИМУМ(НефильтрованныеДниСтажа.ПараметрИсчисляемогоСтраховогоСтажа) КАК ТретийПараметрИсчисляемогоСтажа,
| НефильтрованныеДниСтажа.ТерриториальныеУсловия КАК ТерриториальныеУсловия,
| НефильтрованныеДниСтажа.Сотрудник КАК Сотрудник,
| НефильтрованныеДниСтажа.ФизЛицо КАК ФизЛицо,
| НефильтрованныеДниСтажа.ОбособленноеПодразделение КАК ОбособленноеПодразделение,
| НефильтрованныеДниСтажа.ОтчетныйПериод КАК ОтчетныйПериод,
| НефильтрованныеДниСтажа.ОсобыеУсловияТруда КАК ОсобыеУсловияТруда,
| НефильтрованныеДниСтажа.КодПозицииСписка КАК КодПозицииСписка,
| НефильтрованныеДниСтажа.ОснованиеВыслугиЛет КАК ОснованиеВыслугиЛет,
| НефильтрованныеДниСтажа.ЗанимаемыхСтавок,
| НефильтрованныеДниСтажа.СтавокДляТерриториальныхУсловий,
| НефильтрованныеДниСтажа.Должность.ЗамещениеГосударственныхМуниципальныхДолжностей КАК ЗамещениеГосударственныхМуниципальныхДолжностей,
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| НефильтрованныеДниСтажа.ПодразделениеОрганизации,
//-Конец доработки
| НефильтрованныеДниСтажа.Должность
|ПОМЕСТИТЬ ВТДниСтажаДоОбработкиПараметровИсчСтажа
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НефильтрованныеДниСтажа.ДатаКалендаря КАК ДатаКалендаря,
| ВЫБОР
| КОГДА НефильтрованныеДниСтажа.ГрафикРаботы.НеполныйРабочийДень
| ТОГДА НефильтрованныеДниСтажа.ЗанимаемыхСтавок
| ИНАЧЕ 0
| КОНЕЦ КАК СтавокДляТерриториальныхУсловий,
| ВЫБОР
| КОГДА ПриоритетыВидовСтажа.ВидСтажа = ЗНАЧЕНИЕ(Перечисление.ВидыСтажаПерсУчета2014.ВключаетсяВСтраховойСтаж)
| ТОГДА ЗНАЧЕНИЕ(Справочник.ТерриториальныеУсловия.ПустаяСсылка)
| ИНАЧЕ НефильтрованныеДниСтажа.ТерриториальныеУсловия
| КОНЕЦ КАК ТерриториальныеУсловия,
| НефильтрованныеДниСтажа.Сотрудник КАК Сотрудник,
| НефильтрованныеДниСтажа.ФизЛицо КАК ФизЛицо,
| НефильтрованныеДниСтажа.ОбособленноеПодразделение КАК ОбособленноеПодразделение,
| НефильтрованныеДниСтажа.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок,
| НефильтрованныеДниСтажа.ОтчетныйПериод КАК ОтчетныйПериод,
| ВЫБОР
| КОГДА НефильтрованныеДниСтажа.ГрафикРаботы.НеполныйРабочийДень
| ИЛИ ПриоритетыВидовСтажа.ВидСтажа = ЗНАЧЕНИЕ(Перечисление.ВидыСтажаПерсУчета2014.ВключаетсяВСтраховойСтаж)
| ТОГДА ЗНАЧЕНИЕ(Справочник.ОсобыеУсловияТруда.ПустаяСсылка)
| ИНАЧЕ НефильтрованныеДниСтажа.ОсобыеУсловияТруда
| КОНЕЦ КАК ОсобыеУсловияТруда,
| ВЫБОР
| КОГДА НефильтрованныеДниСтажа.ГрафикРаботы.НеполныйРабочийДень
| ИЛИ ПриоритетыВидовСтажа.ВидСтажа = ЗНАЧЕНИЕ(Перечисление.ВидыСтажаПерсУчета2014.ВключаетсяВСтраховойСтаж)
| ТОГДА ЗНАЧЕНИЕ(Справочник.СпискиПрофессийДолжностейЛьготногоПенсионногоОбеспечения.ПустаяСсылка)
| ИНАЧЕ НефильтрованныеДниСтажа.КодПозицииСписка
| КОНЕЦ КАК КодПозицииСписка,
| ВЫБОР
| КОГДА ПриоритетыВидовСтажа.ВидСтажа = ЗНАЧЕНИЕ(Перечисление.ВидыСтажаПерсУчета2014.ВключаетсяВСтраховойСтаж)
| ТОГДА ЗНАЧЕНИЕ(Справочник.ОснованияВыслугиЛет.ПустаяСсылка)
| ИНАЧЕ НефильтрованныеДниСтажа.ОснованиеВыслугиЛет
| КОНЕЦ КАК ОснованиеВыслугиЛет,
| ЕСТЬNULL(СоответствиеВидовСтажаПараметрамИсчисления.ПараметрИсчисляемогоСтраховогоСтажа, ЗНАЧЕНИЕ(Справочник.ПараметрыИсчисляемогоСтраховогоСтажа2014.ПустаяСсылка)) КАК ПараметрИсчисляемогоСтраховогоСтажа,
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| НефильтрованныеДниСтажа.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
//-Конец доработки
| НефильтрованныеДниСтажа.Должность КАК Должность
| ИЗ
| (ВЫБРАТЬ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
| КадровыеПериоды.ФизЛицо КАК ФизЛицо,
| КадровыеПериоды.Сотрудник КАК Сотрудник,
| КадровыеПериоды.ОбособленноеПодразделение КАК ОбособленноеПодразделение,
| КадровыеПериоды.ОтчетныйПериод КАК ОтчетныйПериод,
| КадровыеПериоды.ТерриториальныеУсловия КАК ТерриториальныеУсловия,
| КадровыеПериоды.ОсобыеУсловияТруда КАК ОсобыеУсловияТруда,
| КадровыеПериоды.ГрафикРаботы КАК ГрафикРаботы,
| КадровыеПериоды.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок,
| КадровыеПериоды.КодПозицииСписка КАК КодПозицииСписка,
| КадровыеПериоды.ОснованиеВыслугиЛет КАК ОснованиеВыслугиЛет,
| МАКСИМУМ(ПриоритетыВидовСтажа.Приоритет) КАК ПорядковыйНомерВидаСтажа,
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| КадровыеПериоды.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
//-Конец доработки
| КадровыеПериоды.Должность КАК Должность
| ИЗ
| ВТДатыПериода КАК РегламентированныйПроизводственныйКалендарь
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеПериоды КАК КадровыеПериоды
| ПО (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ КадровыеПериоды.ДатаНачалаПериода И КадровыеПериоды.ДатаОкончанияПериода)
| ЛЕВОЕ СОЕДИНЕНИЕ ВТОтредактированныеОплаченныеПериоды КАК ОтредактированныеОплаченныеПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПриоритетыВидовСтажа КАК ПриоритетыВидовСтажа
| ПО ОтредактированныеОплаченныеПериоды.ВидСтажа = ПриоритетыВидовСтажа.ВидСтажа
| ПО (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ОтредактированныеОплаченныеПериоды.ДатаНачалаПериода И ОтредактированныеОплаченныеПериоды.ДатаОкончанияПериода)
| И (ОтредактированныеОплаченныеПериоды.Сотрудник = КадровыеПериоды.Сотрудник)
| И (ОтредактированныеОплаченныеПериоды.ОбособленноеПодразделение = КадровыеПериоды.ОбособленноеПодразделение)
| ГДЕ
| ЕСТЬNULL(КадровыеПериоды.Сотрудник, ОтредактированныеОплаченныеПериоды.Сотрудник) ЕСТЬ НЕ NULL
| И ЕСТЬNULL(ОтредактированныеОплаченныеПериоды.ВидСтажа, """") <> ЗНАЧЕНИЕ(Перечисление.ВидыСтажаПерсУчета2014.НеВключаетсяВСтраховойСтаж)
|
| СГРУППИРОВАТЬ ПО
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
| КадровыеПериоды.ФизЛицо,
| КадровыеПериоды.Сотрудник,
| КадровыеПериоды.ОбособленноеПодразделение,
| КадровыеПериоды.ОтчетныйПериод,
| КадровыеПериоды.ТерриториальныеУсловия,
| КадровыеПериоды.ОсобыеУсловияТруда,
| КадровыеПериоды.ГрафикРаботы,
| КадровыеПериоды.ЗанимаемыхСтавок,
| КадровыеПериоды.КодПозицииСписка,
| КадровыеПериоды.ОснованиеВыслугиЛет,
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| КадровыеПериоды.ПодразделениеОрганизации,
//-Конец доработки
| КадровыеПериоды.Должность) КАК НефильтрованныеДниСтажа
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПриоритетыВидовСтажа КАК ПриоритетыВидовСтажа
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСоответствиеВидовСтажаПараметрамИсчисления КАК СоответствиеВидовСтажаПараметрамИсчисления
| ПО ПриоритетыВидовСтажа.ВидСтажа = СоответствиеВидовСтажаПараметрамИсчисления.ВидСтажа
| ПО НефильтрованныеДниСтажа.ПорядковыйНомерВидаСтажа = ПриоритетыВидовСтажа.Приоритет
| ГДЕ
| НефильтрованныеДниСтажа.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)) КАК НефильтрованныеДниСтажа
|
|СГРУППИРОВАТЬ ПО
| НефильтрованныеДниСтажа.ОтчетныйПериод,
| НефильтрованныеДниСтажа.Сотрудник,
| НефильтрованныеДниСтажа.ФизЛицо,
| НефильтрованныеДниСтажа.ДатаКалендаря,
| НефильтрованныеДниСтажа.ТерриториальныеУсловия,
| НефильтрованныеДниСтажа.ОбособленноеПодразделение,
| НефильтрованныеДниСтажа.ОсобыеУсловияТруда,
| НефильтрованныеДниСтажа.КодПозицииСписка,
| НефильтрованныеДниСтажа.ОснованиеВыслугиЛет,
| НефильтрованныеДниСтажа.ЗанимаемыхСтавок,
| НефильтрованныеДниСтажа.СтавокДляТерриториальныхУсловий,
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| НефильтрованныеДниСтажа.ПодразделениеОрганизации,
//-Конец доработки
| НефильтрованныеДниСтажа.Должность,
| НефильтрованныеДниСтажа.Должность.ЗамещениеГосударственныхМуниципальныхДолжностей
|;
В. Создание временной таблицы "ВТКлассыУсловийТрудаПоДолжностям" (примерно 1135 строка функции с учетом изменений прошлых этапов) нужно изменить довольно сильно:
|////////////////////////////////////////////////////////////////////////////////
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
//|ВЫБРАТЬ
//| ПериодыПоследнихЗаписей.Должность,
//| ПериодыПоследнихЗаписей.ДатаКалендаря,
//| КлассыУсловийТрудаПоДолжностям.КлассУсловийТруда
//|ПОМЕСТИТЬ ВТКлассыУсловийТрудаПоДолжностям
//|ИЗ
//| (ВЫБРАТЬ РАЗЛИЧНЫЕ
//| НачалаПериодовПостоянства.Должность КАК Должность,
//| НачалаПериодовПостоянства.ДатаКалендаря КАК ДатаКалендаря,
//| МАКСИМУМ(КлассыУсловийТрудаПоДолжностям.Период) КАК Период
//| ИЗ
//| ВТДниСтажаДоОбработкиПараметровИсчСтажа КАК НачалаПериодовПостоянства
//| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлассыУсловийТрудаПоДолжностям КАК КлассыУсловийТрудаПоДолжностям
//| ПО НачалаПериодовПостоянства.Должность = КлассыУсловийТрудаПоДолжностям.Должность
//| И НачалаПериодовПостоянства.ДатаКалендаря >= КлассыУсловийТрудаПоДолжностям.Период
//| И (&УсловиеВключенияДанных)
//|
//| СГРУППИРОВАТЬ ПО
//| НачалаПериодовПостоянства.Должность,
//| НачалаПериодовПостоянства.ДатаКалендаря) КАК ПериодыПоследнихЗаписей
//| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлассыУсловийТрудаПоДолжностям КАК КлассыУсловийТрудаПоДолжностям
//| ПО ПериодыПоследнихЗаписей.Должность = КлассыУсловийТрудаПоДолжностям.Должность
//| И ПериодыПоследнихЗаписей.Период = КлассыУсловийТрудаПоДолжностям.Период
|ВЫБРАТЬ
| ПериодыПоследнихЗаписей.Должность,
| ПериодыПоследнихЗаписей.ДатаКалендаря,
| ШтатноеРасписаниеОрганизаций.КлассУсловийТруда,
| ПериодыПоследнихЗаписей.ПодразделениеОрганизации
|ПОМЕСТИТЬ ВТКлассыУсловийТрудаПоДолжностям
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачалаПериодовПостоянства.Должность КАК Должность,
| НачалаПериодовПостоянства.ДатаКалендаря КАК ДатаКалендаря,
| МАКСИМУМ(ШтатноеРасписаниеОрганизаций.Период) КАК Период,
| НачалаПериодовПостоянства.ПодразделениеОрганизации КАК ПодразделениеОрганизации
| ИЗ
| ВТДниСтажаДоОбработкиПараметровИсчСтажа КАК НачалаПериодовПостоянства
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШтатноеРасписаниеОрганизаций
| ПО НачалаПериодовПостоянства.Должность = ШтатноеРасписаниеОрганизаций.Должность
| И НачалаПериодовПостоянства.ДатаКалендаря >= ШтатноеРасписаниеОрганизаций.Период
| И (&УсловиеВключенияДанных)
| И НачалаПериодовПостоянства.ПодразделениеОрганизации = ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации
|
| СГРУППИРОВАТЬ ПО
| НачалаПериодовПостоянства.Должность,
| НачалаПериодовПостоянства.ДатаКалендаря,
| НачалаПериодовПостоянства.ПодразделениеОрганизации) КАК ПериодыПоследнихЗаписей
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШтатноеРасписаниеОрганизаций
| ПО ПериодыПоследнихЗаписей.Должность = ШтатноеРасписаниеОрганизаций.Должность
| И ПериодыПоследнихЗаписей.Период = ШтатноеРасписаниеОрганизаций.Период
| И ПериодыПоследнихЗаписей.ПодразделениеОрганизации = ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации
| И (&УсловиеВключенияДанных)
//-Конец доработки
|;
Г. Создание временной таблицы "ВТДниСтажа2014" (примерно 1192 строка функции с учетом изменений прошлых этапов) нужно добавить новое условие соединения:
|ПОМЕСТИТЬ ВТДниСтажа2014
|ИЗ
| ВТДниСтажаДоОбработкиПараметровИсчСтажа КАК ДниСтажаДоОбработкиПараметровИсчСтажа
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКлассыУсловийТрудаПоДолжностям КАК КлассыУсловийТрудаПоДолжностям
| ПО ДниСтажаДоОбработкиПараметровИсчСтажа.ДатаКалендаря = КлассыУсловийТрудаПоДолжностям.ДатаКалендаря
| И ДниСтажаДоОбработкиПараметровИсчСтажа.Должность = КлассыУсловийТрудаПоДолжностям.Должность
|
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
|И ДниСтажаДоОбработкиПараметровИсчСтажа.ПодразделениеОрганизации = КлассыУсловийТрудаПоДолжностям.ПодразделениеОрганизации
//-Конец доработки
|ИНДЕКСИРОВАТЬ ПО
| ОтчетныйПериод,
Д. После запроса (примерно 1272 строка функции с учетом изменений прошлых этапов) добавляем условие периодичности:
Если УчитыватьОпоздавшиеДанные Тогда
СтрокаЗамены = "ДатаРегистрацииИзменений <= &ДатаАктуальности";
Иначе
СтрокаЗамены = "НАЧАЛОПЕРИОДА(Период, КВАРТАЛ) >= НАЧАЛОПЕРИОДА(ДатаРегистрацииИзменений, КВАРТАЛ)
| ИЛИ ДатаРегистрацииИзменений <= КОНЕЦПЕРИОДА(НачалаПериодовПостоянства.ДатаКалендаря, КВАРТАЛ)";
КонецЕсли;
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
Если УчитыватьОпоздавшиеДанные Тогда
СтрокаЗамены = "ШтатноеРасписаниеОрганизаций.Период <= &ДатаАктуальности";
Иначе
СтрокаЗамены = "НАЧАЛОПЕРИОДА(Период, КВАРТАЛ) >= НАЧАЛОПЕРИОДА(ШтатноеРасписаниеОрганизаций.Период, КВАРТАЛ)
| ИЛИ ШтатноеРасписаниеОрганизаций.Период <= КОНЕЦПЕРИОДА(НачалаПериодовПостоянства.ДатаКалендаря, КВАРТАЛ)";
КонецЕсли;
//-Конец доработки
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеВключенияДанных", СтрокаЗамены);
3. В модуле документа "ОтражениеЗарплатыВРеглУчете" в функции "ПолучитьДанныеУчетаСтраховыхВзносов2017" необходимо внести аналогичные изменения в запрос:
А. Создаем новую временную таблицу "ВТ_ОсобыеУсловияПоШтатке_Отражение" (примерно 592 строка функции). Запрос не самый оптимальный, его вполне можно улучшить:
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
|ВЫБРАТЬ
| ВложенныйЗапрос.Сотрудник КАК Сотрудник,
| ВложенныйЗапрос.Период КАК Период,
| ВложенныйЗапрос.ПодразделениеОрганизации,
| ВложенныйЗапрос.Должность,
| ЕСТЬNULL(ВложенныйЗапрос1.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией, ЗНАЧЕНИЕ(Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка)) КАК ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией,
| ЕСТЬNULL(ВложенныйЗапрос1.КлассУсловийТруда, ЗНАЧЕНИЕ(Перечисление.КлассыУсловийТрудаПоРезультатамСпециальнойОценки.ПустаяСсылка)) КАК КлассУсловийТруда
|ПОМЕСТИТЬ ВТ_ОсобыеУсловияПоШтатке_Отражение
|ИЗ
| (ВЫБРАТЬ
| ДатыСотрудников.Сотрудник КАК Сотрудник,
| ДатыСотрудников.Период КАК Период,
| ВложенныйЗапрос.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ВложенныйЗапрос.Должность КАК Должность
| ИЗ
| ВТСтрокиРегистра КАК ДатыСотрудников
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| РаботникиОрганизацийНачПериода.Сотрудник КАК Сотрудник,
| РаботникиОрганизацийНачПериода.Должность КАК Должность,
| РаботникиОрганизацийНачПериода.Период КАК НачПериод,
| МИНИМУМ(РаботникиОрганизацийКонПериода.Период) КАК КонПериод,
| РаботникиОрганизацийНачПериода.ПодразделениеОрганизации КАК ПодразделениеОрганизации
| ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийНачПериода
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийКонПериода
| ПО РаботникиОрганизацийНачПериода.Сотрудник = РаботникиОрганизацийКонПериода.Сотрудник
| И РаботникиОрганизацийНачПериода.Период < РаботникиОрганизацийКонПериода.Период
|
| СГРУППИРОВАТЬ ПО
| РаботникиОрганизацийНачПериода.Сотрудник,
| РаботникиОрганизацийНачПериода.Период,
| РаботникиОрганизацийНачПериода.Должность,
| РаботникиОрганизацийНачПериода.ПодразделениеОрганизации) КАК ВложенныйЗапрос
| ПО ДатыСотрудников.Сотрудник = ВложенныйЗапрос.Сотрудник
| И ДатыСотрудников.Период >= ВложенныйЗапрос.НачПериод
| И (ДатыСотрудников.Период < ВложенныйЗапрос.КонПериод
| ИЛИ ВложенныйЗапрос.КонПериод ЕСТЬ NULL)
|
| СГРУППИРОВАТЬ ПО
| ДатыСотрудников.Сотрудник,
| ДатыСотрудников.Период,
| ВложенныйЗапрос.ПодразделениеОрганизации,
| ВложенныйЗапрос.Должность) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ШтатноеРасписаниеОрганизацийНачПериода.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ШтатноеРасписаниеОрганизацийНачПериода.Должность КАК Должность,
| ШтатноеРасписаниеОрганизацийНачПериода.Период КАК НачПериод,
| МИНИМУМ(ШтатноеРасписаниеОрганизацийКонПериода.Период) КАК КонПериод,
| ШтатноеРасписаниеОрганизацийНачПериода.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией КАК ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией,
| ШтатноеРасписаниеОрганизацийНачПериода.КлассУсловийТруда КАК КлассУсловийТруда
| ИЗ
| РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШтатноеРасписаниеОрганизацийНачПериода
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШтатноеРасписаниеОрганизацийКонПериода
| ПО ШтатноеРасписаниеОрганизацийНачПериода.ПодразделениеОрганизации = ШтатноеРасписаниеОрганизацийКонПериода.ПодразделениеОрганизации
| И ШтатноеРасписаниеОрганизацийНачПериода.Должность = ШтатноеРасписаниеОрганизацийКонПериода.Должность
| И ШтатноеРасписаниеОрганизацийНачПериода.Период < ШтатноеРасписаниеОрганизацийКонПериода.Период
|
| СГРУППИРОВАТЬ ПО
| ШтатноеРасписаниеОрганизацийНачПериода.ПодразделениеОрганизации,
| ШтатноеРасписаниеОрганизацийНачПериода.Период,
| ШтатноеРасписаниеОрганизацийНачПериода.Должность,
| ШтатноеРасписаниеОрганизацийНачПериода.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией,
| ШтатноеРасписаниеОрганизацийНачПериода.КлассУсловийТруда) КАК ВложенныйЗапрос1
| ПО ВложенныйЗапрос.ПодразделениеОрганизации = ВложенныйЗапрос1.ПодразделениеОрганизации
| И ВложенныйЗапрос.Должность = ВложенныйЗапрос1.Должность
| И ВложенныйЗапрос.Период >= ВложенныйЗапрос1.НачПериод
| И (ВложенныйЗапрос.Период < ВложенныйЗапрос1.КонПериод
| ИЛИ ВложенныйЗапрос1.КонПериод ЕСТЬ NULL);
//-Конец доработки
Б. Изменяем временную таблицу "ВТСотрудники" (примерно 662 строка функции с учетом прошлого этапа), подсовываем в запрос наш ресурс вместо реквизита должности:
|ВЫБРАТЬ
| СтрокиРегистра.Сотрудник,
| СтрокиРегистра.ДатаАктуальности,
| ЕСТЬNULL(ВЫБОР
| КОГДА Работники.ПериодЗавершения <= СтрокиРегистра.ДатаАктуальности
| И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА Работники.ДолжностьЗавершения.ЯвляетсяДолжностьюЛетногоЭкипажа
| ИНАЧЕ Работники.Должность.ЯвляетсяДолжностьюЛетногоЭкипажа
| КОНЕЦ, ЛОЖЬ) КАК ОблагаетсяПоДополнительномуТарифу,
| ЕСТЬNULL(ВЫБОР
| КОГДА Работники.ПериодЗавершения <= СтрокиРегистра.ДатаАктуальности
| И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА Работники.ДолжностьЗавершения.ЯвляетсяШахтерскойДолжностью
| ИНАЧЕ Работники.Должность.ЯвляетсяШахтерскойДолжностью
| КОНЕЦ, ЛОЖЬ) КАК ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам,
| ЕСТЬNULL(ВЫБОР
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| КОГДА ИСТИНА
| ТОГДА естьnull(ВТ_ОсобыеУсловияПоШтатке_Отражение.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией,значение(Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка))
//-Конец доработки
| КОГДА Работники.ПериодЗавершения <= СтрокиРегистра.ДатаАктуальности
| И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА Работники.ДолжностьЗавершения.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией
| ИНАЧЕ Работники.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией
| КОНЕЦ, ЗНАЧЕНИЕ(Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка)) КАК ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией
|ПОМЕСТИТЬ ВТСотрудники
|ИЗ
| ВТСтрокиРегистра КАК СтрокиРегистра
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
| ПО СтрокиРегистра.Сотрудник = Работники.Сотрудник
| И СтрокиРегистра.Период = Работники.Период
//+Начало доработки, Описание доработки: СОУТ по штатному расписанию
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОсобыеУсловияПоШтатке_Отражение КАК ВТ_ОсобыеУсловияПоШтатке_Отражение
| ПО СтрокиРегистра.Сотрудник = ВТ_ОсобыеУсловияПоШтатке_Отражение.Сотрудник
| И СтрокиРегистра.Период = ВТ_ОсобыеУсловияПоШтатке_Отражение.Период
//-Конец доработки
Остается только заполнить штатное расписание и следить за его актуальностью.
Как видите, доработка довольно громоздкая но ничего сложного в ней нет.
Надеюсь, эта статья кому-нибудь пригодится и сэкономит немного времени в Новом году.