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

Публикация № 1158066

Разработка - Практика программирования

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

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

См. также

Программная работа с настройками СКД

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    5388    ids79    25       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

[СКД] Программное создание схемы компоновки данных

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    7335    John_d    21       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

Агрегатные функции СКД, о которых мало кто знает

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    24013    ids79    45       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

Три костыля. Сказ про фокусы в коде

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    15713    YPermitin    76       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

Отслеживание выполнения фонового задания

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    18238    ids79    16       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    33112    ids79    36       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Фоновое выполнение кода в 1С - это просто

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    18326    avalakh    21       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    27082    ids79    9       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    19579    ids79    27       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Регистры сведений. За кулисами

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    14814    YPermitin    12       

"Меньше копипаста!", или как Вася универсальную процедуру писал

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    12080    SeiOkami    49       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

Создание отчетов с помощью СКД - основные понятия и элементы

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    31706    ids79    17       

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    16911    dmurk    144       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Регистры накопления. Структура хранения в базе данных

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    27220    YPermitin    27       

Выполнение внешней обработки в фоновом задании

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    17255    Eret1k    23       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Выгрузка документа по условию

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    9289    m-rv    2       

Как прикрутить ГУИД к регистру сведений

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    12421    m-rv    16       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

О расширениях замолвите слово...

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования Разработка

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    23382    ellavs    125       

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    18549    ellavs    83       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Трюки с внешними источниками данных

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    20404    YPermitin    53