Специальная оценка условий труда по штатному расписанию в УПП

09.01.20

Разработка - Механизмы типовых конфигураций

В типовой конфигурации УПП специальная оценка условий труда (СОУТ) устанавливается для должности. В статье описаны доработки, необходимые для установки СОУТ на запись штатного расписания, т. е. по должности и подразделению (с периодичностью). Для нашей организации эти доработки оказались востребованы. Проверялось на версиях УПП 1.3.121.1 - 1.3.127.1, аналогичные доработки можно применить и к ЗУП 2.5.

В конфигурацию необходимо внести следующие изменения:

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)
		|				ТОГДА Работники.ДолжностьЗавершения.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией
		|			ИНАЧЕ Работники.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией
		|		КОНЕЦ, ЗНАЧЕНИЕ(Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка)) КАК ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией
		|ПОМЕСТИТЬ ВТСотрудники
		|ИЗ
		|	ВТСтрокиРегистра КАК СтрокиРегистра
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
		|		ПО СтрокиРегистра.Сотрудник = Работники.Сотрудник
		|			И СтрокиРегистра.Период = Работники.Период
		//+Начало доработки, Описание доработки: СОУТ по штатному расписанию 
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОсобыеУсловияПоШтатке_Отражение КАК ВТ_ОсобыеУсловияПоШтатке_Отражение
		|		ПО СтрокиРегистра.Сотрудник = ВТ_ОсобыеУсловияПоШтатке_Отражение.Сотрудник
		|			И СтрокиРегистра.Период = ВТ_ОсобыеУсловияПоШтатке_Отражение.Период
		//-Конец доработки

Остается только заполнить штатное расписание и следить за его актуальностью.

Как видите, доработка довольно громоздкая но ничего сложного в ней нет.

Надеюсь, эта статья кому-нибудь пригодится и сэкономит немного времени в Новом году.

Доработка СОУТ УПП Зарплата Страховые взносы

См. также

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    1997    PROSTO-1C    0    

18

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    2042    Vidz    0    

11

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Очень часто в написании кода требуется обращаться к предопределённым значениям. Если идёт обращение к типовым предопределённым значениям, то проблем не возникает.

24.06.2024    1215    olja-ljaaa    0    

3

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    1184    tango    5    

3

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    944    tango    5    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Craig 275 28.12.19 20:43 Сейчас в теме
Лет 7 тому назад, когда внедрял ЗУП Корп 2.5, мы наоборот отказались от информации в штатному расписании в пользу должности. И доработок было значительно меньше. Объяснялось тем, отдел охраны труда и отдел труда это разные отделы. Второй момент - аттестация производится рабочего места, а рабочее место равно справочнику должности.
2. sailor-cat 6 29.12.19 05:12 Сейчас в теме
(1) Тоже так думал.
Как оказалось, рабочее место может отличаться в обособленных подразделениях.
3. Craig 275 29.12.19 12:06 Сейчас в теме
(2) Да, они и должны отличаться. В моем случаи разрастался справочник должностей. Мы в наименовании должности включали признаки спецоценки. К сожалению и у меня и у Вас очередной велосипед, только по тому что 1с-ники изначально не продумали как должна работать спецоценка на крупных предприятиях.
4. sailor-cat 6 29.12.19 15:07 Сейчас в теме
(3) Пробовали так делать, но не прокатило. К сожалению, не помню точной причины.
С другой стороны, я не слышал чтобы кто-то уж сильно жаловался именно на этот аспект. Видимо, практически всех устраивает.
5. dock 45 30.12.19 09:33 Сейчас в теме
Закрыть УПП как страшный сон и перейти на ЗУП 3.1!
Конечно тоже не идеально... но всё-таки архитектура более продуманная...
З.Ы. Автору плюс за труды.
Оставьте свое сообщение