Штатное расписание / Форма элемента / Модуль формы

файл
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	РегистрацияНачисленийДоступна = Истина;
	РасчетЗарплатыРасширенныйФормы.ИнициализироватьМеханизмПересчетаДокументаПриРедактировании(ЭтотОбъект);
	
	КлассыУсловийТрудаДоступныДляИзменения = Истина;
	
	ВнешниеДанные = Ложь;
	СуществующаяПозиция = Ложь;
	
	СозданиеНовой = Параметры.Ключ.Пустая();
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.УправленческаяПозицияПриСозданииНаСервере(ЭтотОбъект, Параметры, СозданиеНовой);
	КонецЕсли;
	
	Если СозданиеНовой И НЕ Параметры.Свойство("АдресДанныхПозицииВХранилище") Тогда
		
		СсылкаНаОбъект = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка).ПолучитьСсылку();
		
		Если Не ЗначениеЗаполнено(Объект.Подразделение)
			И Параметры.ЗначенияЗаполнения.Свойство("Родитель") И ЗначениеЗаполнено(Параметры.ЗначенияЗаполнения.Родитель) Тогда
			
			Объект.Подразделение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.ЗначенияЗаполнения.Родитель, "Подразделение");
			
		КонецЕсли;
		
		ЗапомнитьЗначенияФункциональныхОпцийИНабораПрав();
		
		ОрганизацияФормы = Объект.Владелец;
		ДополнитьФорму();
		
		ЗначенияДляЗаполнения = Новый Структура;
		ЗначенияДляЗаполнения.Вставить("Организация",	"Объект.Владелец");
		ЗначенияДляЗаполнения.Вставить("ГрафикРаботы",	"Объект.ГрафикРаботыСотрудников");
		
		ЗарплатаКадры.ЗаполнитьПервоначальныеЗначенияВФорме(ЭтотОбъект, ЗначенияДляЗаполнения);
		
		Если Не ЗначениеЗаполнено(Объект.ДатаУтверждения) Тогда
			УстановитьПодходящуюДатуУтверждения();
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
			ТекущийОбъект = РеквизитФормыВЗначение("Объект");
			ПоместитьДанныеОбъектаВФорму(ТекущийОбъект, Параметры.ЗначениеКопирования);
		Иначе
			ЗаполнитьПозициюЛьготамиПоУмолчанию(ЭтотОбъект);
		КонецЕсли;
		
	Иначе
		
		Если Параметры.Свойство("АдресДанныхПозицииВХранилище") Тогда
			
			АвтоНавигационнаяСсылка = Ложь;
			ЗапомнитьЗначенияФункциональныхОпцийИНабораПрав();
			
			ДанныеПозиции = ПолучитьИзВременногоХранилища(Параметры.АдресДанныхПозицииВХранилище);
			
			ДанныеПозиции.Свойство("Действие", Действие);
			ДанныеПозиции.Свойство("ТекущееКоличествоСтавок", ТекущееКоличествоСтавок);
			ДанныеПозиции.Свойство("ТекущийФОТ", ТекущийФОТ);
			
			ИменаИсключаемыхИзЗаполненияДанных = "Начисления,Показатели,ЕжегодныеОтпуска,Специальности";
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
				МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
				МодульУправленческаяЗарплатаФормы.ДополнитьИменаИсключаемыхИзЗаполненияДанных(ИменаИсключаемыхИзЗаполненияДанных);
				МодульУправленческаяЗарплатаФормы.ПриСозданииФормыВнешнихДанных(ЭтотОбъект, ДанныеПозиции);
			КонецЕсли;
			
			ЗаполнитьЗначенияСвойств(Объект, ДанныеПозиции, , ИменаИсключаемыхИзЗаполненияДанных);
			Объект.Владелец = ДанныеПозиции.Организация;
			
			ВнешниеДанные = Истина;
			Если ИспользоватьИсторию Тогда
				ДокументРегистратор = ДанныеПозиции.Регистратор;
			КонецЕсли;
				
			УстановитьПредставлениеОкладаИФОТ(ЭтотОбъект);
			
			РедактируемаяПозиция = ДанныеПозиции.ПозицияШтатногоРасписания;
			СуществующаяПозиция = ЗначениеЗаполнено(РедактируемаяПозиция);
			
			Если Не СуществующаяПозиция Тогда
				
				СсылкаНаОбъект = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка).ПолучитьСсылку();
				
				ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
					Элементы,
					"Наименование",
					"ТолькоПросмотр",
					Истина);
				
				ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
					Элементы,
					"Наименование",
					"Подсказка",
					НСтр("ru='Позиция еще не сохранена в базе данных, изменить наименование можно будет после проведения документа'"));
					
				ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
					Элементы,
					"Наименование",
					"ОтображениеПодсказки",
					ОтображениеПодсказки.Кнопка);
			
				ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
					Элементы,
					"НаименованиеПолное",
					"ТолькоПросмотр",
					Истина);
			КонецЕсли;
			
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
				Элементы,
				"Склонения",
				"Доступность",
				Ложь);
				
			Если ИспользоватьИсторию
				И ДанныеПозиции.Свойство("ВыборПодчиненныхПодразделений")
				И ЗначениеЗаполнено(ДанныеПозиции.ПодразделениеПозиций) Тогда
				
				Запрос = Новый Запрос;
				Запрос.УстановитьПараметр("Подразделение", ДанныеПозиции.ПодразделениеПозиций);
				Запрос.УстановитьПараметр("ДатаУтверждения", ДанныеПозиции.ДатаУтверждения);
				Запрос.УстановитьПараметр("Регистратор", ДанныеПозиции.Регистратор);
				
				Запрос.Текст =
					"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
					|	ПодразделенияОрганизаций.Ссылка
					|ИЗ
					|	Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
					|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
					|		ПО ПодразделенияОрганизаций.Ссылка = ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания.Подразделение
					|			И (ИсторияИспользованияШтатногоРасписания.Дата = &ДатаУтверждения)
					|			И (ИсторияИспользованияШтатногоРасписания.Регистратор <> &Регистратор)
					|ГДЕ
					|	ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ(&Подразделение)
					|	И (ПодразделенияОрганизаций.ДатаРасформирования = ДАТАВРЕМЯ(1, 1, 1)
					|			ИЛИ ПодразделенияОрганизаций.ДатаРасформирования < &ДатаУтверждения)
					|	И ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания ЕСТЬ NULL ";
				
				СписокВыбораПодразделений = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
				
				ПолеПодразделение = Элементы.Найти("Подразделение");
				Если ПолеПодразделение <> Неопределено Тогда
					
					ПараметрыВыбораПодразделения = Новый Массив(ПолеПодразделение.ПараметрыВыбора);
					ПараметрыВыбораПодразделения.Добавить(Новый ПараметрВыбора("Отбор.Ссылка", Новый ФиксированныйМассив(СписокВыбораПодразделений)));
					ПараметрыВыбораПодразделения.Добавить(Новый ПараметрВыбора("Отображение", ОтображениеТаблицы.Список));
					ПолеПодразделение.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораПодразделения);
					
				КонецЕсли;
				
				Если СписокВыбораПодразделений.Количество() = 1 Тогда
					
					ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
						Элементы,
						"Подразделение",
						"ТолькоПросмотр",
						Истина);
					
				КонецЕсли;
				
			КонецЕсли;
				
			ТолькоПросмотр = ДанныеПозиции.ТолькоПросмотр;
			
			ОрганизацияФормы = Объект.Владелец;
			ДополнитьФорму();
			
			Объект.ДатаУтверждения = ДанныеПозиции.ДатаУтверждения;
			
			ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией = ЗначениеЗаполнено(Объект.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией);
			
			Если ПолучитьФункциональнуюОпцию("ПрименятьРезультатыСпециальнойОценкиУсловийТруда") Тогда
				
				КлассыУсловийТрудаПоДолжностям.Должность = СсылкаНаОбъект;
				КлассыУсловийТрудаПоДолжностям.КлассУсловийТруда = ДанныеПозиции.КлассУсловийТруда;
				КлассыУсловийТрудаПоДолжностям.Период = НачалоМесяца(ДанныеПозиции.ДатаУтверждения);
				Если ЗначениеЗаполнено(ДанныеПозиции.КлассУсловийТрудаДатаРегистрацииИзменений) Тогда
					КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений = НачалоМесяца(ДанныеПозиции.КлассУсловийТрудаДатаРегистрацииИзменений);
				Иначе
					КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений = НачалоМесяца(ДанныеПозиции.ДатаУтверждения);
				КонецЕсли;
				
				ОбновитьПолеКлассыУсловийТрудаПоДолжностямПериод(ЭтотОбъект);
				ОбновитьПолеКлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений(ЭтотОбъект);
				
			КонецЕсли;
			
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
				МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
				МодульОрганизационнаяСтруктура.ПриПолученииВнешнихДанныхПозицииШтатногоРасписания(ЭтотОбъект, ДанныеПозиции);
			КонецЕсли;
			
			Если СуществующаяПозиция Тогда
				АвтоЗаголовок = Ложь;
				Заголовок = Строка(ДанныеПозиции.ПозицияШтатногоРасписания);
			Иначе
				
				Если НЕ ЗначениеЗаполнено(Объект.Подразделение) Тогда
					Объект.Подразделение = ДанныеПозиции.ПодразделениеПозиций;
				КонецЕсли;
				
			КонецЕсли;
			
			Объект.Начисления.Очистить();
			Объект.Показатели.Очистить();
			Объект.ЕжегодныеОтпуска.Очистить();
			Объект.Специальности.Очистить();
			
			Для каждого ОписаниеНачисления Из ДанныеПозиции.Начисления Цикл
				ЗаполнитьЗначенияСвойств(Объект.Начисления.Добавить(), ОписаниеНачисления);
			КонецЦикла;
			
			Для каждого ОписаниеПоказателя Из ДанныеПозиции.Показатели Цикл
				ЗаполнитьЗначенияСвойств(Объект.Показатели.Добавить(), ОписаниеПоказателя);
			КонецЦикла;
			
			Для каждого ОписаниеЕжегодногоОтпуска Из ДанныеПозиции.ЕжегодныеОтпуска Цикл
				ЗаполнитьЗначенияСвойств(Объект.ЕжегодныеОтпуска.Добавить(), ОписаниеЕжегодногоОтпуска);
			КонецЦикла;
			
			Для каждого ОписаниеСпециальности Из ДанныеПозиции.Специальности Цикл
				ЗаполнитьЗначенияСвойств(Объект.Специальности.Добавить(), ОписаниеСпециальности);
			КонецЦикла;
			
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
				МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
				МодульУправленческаяЗарплатаФормы.ЗаполнитьОбъектФормыДаннымиПозиции(ЭтотОбъект, Объект, ДанныеПозиции);
			КонецЕсли;
			
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина.ТарификационнаяОтчетностьУчрежденийФМБА") Тогда
				МодульТарификационнаяОтчетностьУчрежденийФМБА = ОбщегоНазначения.ОбщийМодуль("ТарификационнаяОтчетностьУчрежденийФМБА");
				МодульТарификационнаяОтчетностьУчрежденийФМБА.ПриПолученииВнешнихДанныхПозицииШтатногоРасписания(ЭтотОбъект, ДанныеПозиции);
			КонецЕсли;
			
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
				МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
				МодульХарактеристикиПерсоналаФормы.ПриПолученииВнешнихДанныхПозицииШтатногоРасписания(ЭтотОбъект, ДанныеПозиции);
			КонецЕсли;
			
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
				МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
				МодульЛьготыСотрудников.ПриПолученииДанныхПозицииШтатногоРасписания(ЭтотОбъект, ДанныеПозиции);
			КонецЕсли;
			
			Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
				МодульОбучениеРазвитие = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитие");
				МодульОбучениеРазвитие.ПриПолученииДанныхПозицииШтатногоРасписания(ЭтотОбъект, ДанныеПозиции);
			КонецЕсли;
			
			СтатистикаПерсоналаРасширенный.ПриПолученииВнешнихДанныхПозицииШтатногоРасписания(ЭтотОбъект, ДанныеПозиции);
			
			ПоместитьДанныеОбъектаВФорму(Объект);
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если Не ВнешниеДанные Тогда
		
		// СтандартныеПодсистемы.ПодключаемыеКоманды
		ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
		// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
		
		// СтандартныеПодсистемы.ВерсионированиеОбъектов
		ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
		// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
		
		// СтандартныеПодсистемы.Свойства
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("Объект", Объект);
		ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
		УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
		// Конец СтандартныеПодсистемы.Свойства
		
		УправлениеШтатнымРасписаниемФормы.УстановитьПараметрыВыбораПодразделений(ЭтотОбъект, "Подразделение");
		
	КонецЕсли; 
	
	Если Не ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная") Тогда
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"ОплатаТрудаСтраница",
			"Видимость",
			Ложь);
		
	КонецЕсли; 
	
	ПараметрыСтажевыхЭлементов = ОстаткиОтпусков.ПараметрыДляДополнитьТабличнуюЧастьСтажевымиЭлементами();
	ПараметрыСтажевыхЭлементов.Форма = ЭтотОбъект;
	ПараметрыСтажевыхЭлементов.ИмяТаблицы = "ЕжегодныеОтпуска";
	ПараметрыСтажевыхЭлементов.ТабличнаяЧастьВОбъекте = Истина;
	ОстаткиОтпусков.ДополнитьТабличнуюЧастьСтажевымиЭлементами(ПараметрыСтажевыхЭлементов);
	
	Если Не ИспользоватьИсторию И Не ВнешниеДанные И Не СозданиеНовой Тогда
		// Обработчик подсистемы запрета редактирования реквизитов объектов
		ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
	КонецЕсли;
	
	УстановитьСвойстваЭлементовУправления();
	УстановитьДоступностьЭлементов(ЭтотОбъект);
	
	Элементы.ТарифнаяСетка.Заголовок = РазрядыКатегорииДолжностей.ИнициализироватьЗаголовокФормыИРеквизитов("РеквизитТарифнаяСеткаТариф");
	Элементы.РазрядКатегория.Заголовок = РазрядыКатегорииДолжностей.ИнициализироватьЗаголовокФормыИРеквизитов("РеквизитРазрядКатегорияТариф");	
	Элементы.ТарифнаяСеткаНадбавки.Заголовок = РазрядыКатегорииДолжностей.ИнициализироватьЗаголовокФормыИРеквизитов("РеквизитТарифнаяСеткаНадбавка");
	Элементы.РазрядКатегорияНадбавки.Заголовок = РазрядыКатегорииДолжностей.ИнициализироватьЗаголовокФормыИРеквизитов("РеквизитРазрядКатегорияНадбавка");		
	
	Если СозданиеНовой Тогда 
		ДоступныВсеЛьготы = 1;
	КонецЕсли;
	
	УстановитьДоступностьИндивидуальныхЛьгот();
	УстановитьДоступностьРазмераЛимитаЛьготы(ЭтотОбъект);
	
	ТекстПодсказкиКПоляДатаРегистрации = УчетСтраховыхВзносовКлиентСервер.ТекстПодсказкиПоляДатаРегистрацииПериодическихРегистров();
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы, 
		"КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений", 
		"Подсказка", 
		ТекстПодсказкиКПоляДатаРегистрации);
		
	УстановитьВидимостьЕНВД(Элементы, 
		ИспользуетсяЕНВД(Объект.ДатаУтверждения));
		
	УстановитьНастройкиЭлементовВводаГрафика();
	
	ОтражениеЗарплатыВБухучете.УстановитьСписокВыбораОтношениеКЕНВД(Элементы, "ОтношениеКЕНВД");
	
	УстановитьВидимостьПолейВидаСтажаСФР();
	
	// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	СклонениеПредставленийОбъектов.ПриСозданииНаСервере(ЭтотОбъект, Объект.Наименование);
	// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровоеПланирование") Тогда
		МодульКадровоеПланированиеФормы = ОбщегоНазначения.ОбщийМодуль("КадровоеПланированиеФормы");
		МодульКадровоеПланированиеФормы.ШтатноеРасписаниеПриСозданииНаСервере(ЭтотОбъект);
	КонецЕсли;
	
		Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("МедицинскиеРегистры");
		Модуль.ПриСозданииНаСервере(ЭтотОбъект,"ГруппаХарактеристикиМедрегистра");
		Модуль.ДополнитьФормуУслугами(ЭтотОбъект, Объект.Подразделение, "ГруппаХарактеристикиМедрегистра","оказываемые подразделением");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если Не ВнешниеДанные Тогда
		
		// СтандартныеПодсистемы.Свойства
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
		// Конец СтандартныеПодсистемы.Свойства
		
	КонецЕсли;
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	Если ВнешниеДанные Тогда
		Модифицированность = Ложь;
	КонецЕсли;
	
	Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьНаКлиенте", ЭтотОбъект);
	ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	
	Если ВнешниеДанные Тогда
		Возврат;
	КонецЕсли;
		
	Если СозданиеНовой И НЕ Параметры.Ключ.Пустая() Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Ссылка", Объект.Ссылка);
		ПараметрыОповещения.Вставить("Подразделение", Объект.Подразделение);
		ПараметрыОповещения.Вставить("ДатаУтверждения", Объект.ДатаУтверждения);
		ПараметрыОповещения.Вставить("ДатаЗакрытия", Объект.ДатаЗакрытия);
		Оповестить("СозданаПозицияШтатногоРасписания", ПараметрыОповещения, ВладелецФормы);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	Если Параметры.Свойство("АдресДанныхПозицииВХранилище")
		И Не ПустаяСтрока(Параметры.АдресДанныхПозицииВХранилище) Тогда
		Возврат;
	КонецЕсли; 
	
	ИзмененыНачисления = Ложь;
	СуществующаяПозиция = Истина;
	
	СсылкаНаОбъект = Объект.Ссылка;
	ОрганизацияФормы = Объект.Владелец;
	
	ЗапомнитьЗначенияФункциональныхОпцийИНабораПрав();
	
	ДополнитьФорму();
	ПоместитьДанныеОбъектаВФорму(ТекущийОбъект);
	
	Если Не ВнешниеДанные Тогда
		
		// СтандартныеПодсистемы.Свойства
		УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
		// Конец СтандартныеПодсистемы.Свойства
		
	КонецЕсли;
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если Не ВнешниеДанные Тогда
		
		// СтандартныеПодсистемы.Свойства
		Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
			ОбновитьЭлементыДополнительныхРеквизитов();
			УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
		КонецЕсли;
		// Конец СтандартныеПодсистемы.Свойства
		
	КонецЕсли; 
	
	Если ИмяСобытия = "ОтредактированаИстория" И Параметр.ИмяРегистра = "КлассыУсловийТрудаПоДолжностям" Тогда
		Если КлассыУсловийТрудаПоДолжностямНаборЗаписейПрочитан Тогда
			РедактированиеПериодическихСведенийКлиент.ОбработкаОповещения(ЭтотОбъект, СсылкаНаОбъект, ИмяСобытия, Параметр, Источник);
			ОбновитьПолеКлассыУсловийТрудаПоДолжностямПериод(ЭтотОбъект);
			ОбновитьПолеКлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений(ЭтотОбъект);
		КонецЕсли;
	КонецЕсли;
	
	Если ИмяСобытия = "ЗаписанаПозицияКадровогоРезерва" Тогда
		ОбновитьЭлементыКадровогоРезерва();
	КонецЕсли;
	
	Если ИмяСобытия = "СохраненыПозицииШтатногоРасписания" Тогда
		
		Если Параметр.Получить(Объект.Ссылка) <> Неопределено Тогда
			УправлениеШтатнымРасписаниемКлиент.ПеречистатьДанныеОбъектаФормы(ЭтотОбъект);
		КонецЕсли; 
		
	КонецЕсли;
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Если Источник = СсылкаНаОбъект Тогда
			МодульМедицина = ОбщегоНазначенияКлиент.ОбщийМодуль("МедицинаКлиент");
			МодульМедицина.ОбработкаОповещенияФормыСпециальныеУсловияЗанятости(ЭтотОбъект, ИмяСобытия, Параметр);
		КонецЕсли;
	КонецЕсли;
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("МедицинскиеРегистрыКлиент");
		Модуль.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	Если Не ВнешниеДанные Тогда
		
		// СтандартныеПодсистемы.Свойства
		УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
		// Конец СтандартныеПодсистемы.Свойства
		
	КонецЕсли; 
	
	// Удаление отмененных начислений при проверке внешних данных.
	Если ВнешниеДанные Тогда
		
		НачисленияОбъектаФормы = Объект.Начисления.Выгрузить();
		ОтменяемыеСтроки = Объект.Начисления.НайтиСтроки(Новый Структура("Действие", Перечисления.ДействияСНачислениямиИУдержаниями.Отменить));
		Для каждого ОтменяемаяСтрока Из ОтменяемыеСтроки Цикл
			Объект.Начисления.Удалить(ОтменяемаяСтрока);
		КонецЦикла;
		
		ПроверяемыйОбъект = РеквизитФормыВЗначение("Объект", Тип("СправочникОбъект.ШтатноеРасписание"));
		РеквизитыВДанные(ПроверяемыйОбъект);
		
		Объект.Начисления.Загрузить(НачисленияОбъектаФормы);
		
		ПараметрыСеанса.ИнтерактивнаяПроверкаЗаполненияСвойств = Истина;
		
	Иначе
		
		ПроверяемыйОбъект = РеквизитФормыВЗначение("Объект", Тип("СправочникОбъект.ШтатноеРасписание"));
		РеквизитыВДанные(ПроверяемыйОбъект);
		
	КонецЕсли; 
	
	Отказ = Отказ Или Не ПроверяемыйОбъект.ПроверитьЗаполнение();
	ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Объект");	
	
	Если ПолучитьФункциональнуюОпцию("ПрименятьРезультатыСпециальнойОценкиУсловийТруда") Тогда
		РедактированиеПериодическихСведений.ПроверитьЗаписьВФорме(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", СсылкаНаОбъект, Отказ);
	КонецЕсли;
	
	// Подсистема "Характеристики персонала"
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ПроверитьЗаполнениеПозицииШтатногоРасписания(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровоеПланирование") Тогда
		МодульКадровоеПланированиеФормы = ОбщегоНазначения.ОбщийМодуль("КадровоеПланированиеФормы");
		МодульКадровоеПланированиеФормы.ШтатноеРасписаниеОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	ОчиститьСообщения();
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Если РасчетНеобходимоВыполнить Тогда
		
		РассчитатьФОТНаСервере();
		ЗарплатаКадрыРасширенный.ЗаполнитьТекущийОбъектОбъектомФормы(ТекущийОбъект, Объект);
		
	КонецЕсли;
	
	Если Параметры.Ключ.Пустая() Тогда
		ТекущийОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
	КонецЕсли;
	
	ЗаписатьКлассыУсловийТрудаПоДолжностям();
	// Подсистема "Охрана труда"
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОхранаТруда") Тогда
		МодульОхранаТрудаФормы = ОбщегоНазначения.ОбщийМодуль("ОхранаТрудаФормы");
		МодульОхранаТрудаФормы.ЗаписатьДополнительныеЗначенияПозицииШтатногоРасписания(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ШтатноеРасписаниеПередЗаписьюНаСервере(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровоеПланирование") Тогда
		МодульКадровоеПланированиеФормы = ОбщегоНазначения.ОбщийМодуль("КадровоеПланированиеФормы");
		МодульКадровоеПланированиеФормы.ШтатноеРасписаниеПередЗаписьюНаСервере(ЭтотОбъект);
	КонецЕсли;
	
	РеквизитыВДанные(ТекущийОбъект);
	
	ЗаписатьТерриториальныеУсловияДополнительныеПФР();
	
	Если Не ВнешниеДанные Тогда
		// СтандартныеПодсистемы.Свойства
		УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
		// Конец СтандартныеПодсистемы.Свойства
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	УстановитьПривилегированныйРежим(Истина);
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.Грейды") Тогда
		МодульГрейды = ОбщегоНазначения.ОбщийМодуль("Грейды");
		МодульГрейды.ЗаписатьЗначениеГрейда(ЭтотОбъект, ТекущийОбъект.Ссылка);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
		МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
		МодульЛьготыСотрудников.СохранитьДанныеПозиции(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.ПриЗаписиФормыПозицииШтатногоРасписания(ЭтотОбъект, ТекущийОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
		МодульУправленческаяЗарплатаФормы.ПриЗаписиФормыПозицииШтатногоРасписания(ЭтотОбъект, ТекущийОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина.ТарификационнаяОтчетностьУчрежденийФМБА") Тогда
		МодульТарификационнаяОтчетностьУчрежденийФМБА = ОбщегоНазначения.ОбщийМодуль("ТарификационнаяОтчетностьУчрежденийФМБА");
		МодульТарификационнаяОтчетностьУчрежденийФМБА.ЗаписатьДополнительныеДанныеДолжности(ЭтотОбъект, ТекущийОбъект.Ссылка);
	КонецЕсли;

	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		МодульМедицина = ОбщегоНазначения.ОбщийМодуль("Медицина");
		МодульМедицина.ЗаписатьДополнительныеДанныеПозицииШтатногоРасписания(ЭтотОбъект, ТекущийОбъект.Ссылка);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеФормы = ОбщегоНазначения.ОбщийМодуль("АдаптацияУвольнениеФормы");
		МодульАдаптацияУвольнениеФормы.ОбъектНазначенияПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект.Ссылка, Отказ);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ШтатноеРасписаниеПриЗаписиНаСервере(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеПриЗаписиНаСервере(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровоеПланирование") Тогда
		МодульКадровоеПланированиеФормы = ОбщегоНазначения.ОбщийМодуль("КадровоеПланированиеФормы");
		МодульКадровоеПланированиеФормы.ШтатноеРасписаниеПриЗаписиНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	КонецЕсли;
	
	СтатистикаПерсоналаРасширенный.ЗаписатьДополнительныеДанныеДолжности(ЭтотОбъект, ТекущийОбъект.Ссылка);
	СтимулирующиеВыплатыФСС.ЗаписатьДополнительныеДанныеДолжности(ЭтотОбъект, ТекущийОбъект.Ссылка);
	
	УстановитьПривилегированныйРежим(Ложь);
	
	// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	СклонениеПредставленийОбъектов.ПриЗаписиФормыОбъектаСклонения(ЭтотОбъект, Объект.Наименование, ТекущийОбъект.Ссылка);
	// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	УстановитьПривилегированныйРежим(Истина);
	ПоместитьДанныеОбъектаВФорму(ТекущийОбъект);
	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("МедицинскиеРегистры");
		Модуль.ПослеЗаписиНаСервере(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъекта(Объект.Ссылка, ПараметрыЗаписи);
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ВладелецПриИзменении(Элемент)
	
	Объект.Владелец = ОрганизацияФормы;
	ВладелецПриИзмененииНаСервере();
	
	Если ЗначениеЗаполнено(Объект.ГрафикРаботыСотрудников) Тогда
		ВыполнитьРасчетФОТ();
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
	
	ЗаполнитьНаименование();
	ПодразделениеПриИзмененииНаСервере();
	
	Если ЗначениеЗаполнено(Объект.ГрафикРаботыСотрудников) Тогда
		ВыполнитьРасчетФОТ();
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МестоВСтруктуреПредприятияПриИзменении(Элемент)
	ЗаполнитьНаименование();
КонецПроцедуры

&НаКлиенте
Процедура ДолжностьПриИзменении(Элемент)
	
	ЗаполнитьНаименование();
	ДолжностьПриИзмененииНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура РазрядКатегорияПриИзменении(Элемент)
	
	ЗаполнитьНаименование();
	УстановитьДоступностьСведенийПозиции();
	
	ИспользоватьТарифныеСетки = ПолучитьФункциональнуюОпциюФормы("ИспользоватьТарифныеСеткиПриРасчетеЗарплаты");
	Если ИспользоватьТарифныеСетки Тогда
		ПриИзмененииТарифнойСетки();
		ВыполнитьРасчетФОТ(Истина);
	КонецЕсли;
		
КонецПроцедуры

&НаКлиенте
Процедура РазрядКатегорияНадбавкиПриИзменении(Элемент)
	
	ПриИзмененииТарифнойСеткиНадбавки();
	ВыполнитьРасчетФОТ(Ложь, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ТарифнаяСеткаПриИзменении(Элемент)
		
	Если ПолучитьФункциональнуюОпциюФормы("ИспользоватьТарифныеСеткиПриРасчетеЗарплаты") Тогда
		ПриИзмененииТарифнойСетки();
		ВыполнитьРасчетФОТ(Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТарифнаяСеткаНадбавкиПриИзменении(Элемент)
	
	ПриИзмененииТарифнойСеткиНадбавки();
	ВыполнитьРасчетФОТ(Ложь, Истина);
		
КонецПроцедуры

&НаКлиенте
Процедура ИспользуетсяПриИзменении(Элемент)
	
	УстановитьДоступностьЭлементов(ЭтотОбъект);
	
	Если Не Объект.Утверждена Тогда
		Объект.ДатаУтверждения = '00010101';
	ИначеЕсли Объект.ДатаУтверждения = '00010101' Тогда
		Объект.ДатаУтверждения = КонецМесяца(ОбщегоНазначенияКлиент.ДатаСеанса()) + 1;
	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытаПриИзменении(Элемент)
	
	УстановитьДоступностьЭлементов(ЭтотОбъект);
	
	Если Не Объект.Закрыта Тогда
		Объект.ДатаЗакрытия = '00010101';
	ИначеЕсли Объект.ДатаЗакрытия = '00010101' Тогда
		Объект.ДатаЗакрытия = КонецМесяца(ОбщегоНазначенияКлиент.ДатаСеанса()) + 1;
	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура КоличествоСтавокРегулирование(Элемент, Направление, СтандартнаяОбработка)
	
	КадровыйУчетКлиент.КоличествоСтавокРегулирование(ЭтотОбъект, Объект.КоличествоСтавок, Направление, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ГрафикРаботыСотрудниковПриИзменении(Элемент)
	
	Если ЗначениеЗаполнено(Объект.ГрафикРаботыСотрудников) Тогда
		ВыполнитьРасчетФОТ();
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура УтвердившийРегистраторНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Оповещение = Новый ОписаниеОповещения("ОткрытьФормуДокументаИзменившегоПозициюЗавершение", ЭтотОбъект);
	
	УправлениеШтатнымРасписаниемКлиент.ОткрытьФормуДокументаИзменившегоПозицию(УтвердившийРегистратор, Объект.Ссылка, ЭтотОбъект, Оповещение);
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрывшийРегистраторНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Оповещение = Новый ОписаниеОповещения("ОткрытьФормуДокументаИзменившегоПозициюЗавершение", ЭтотОбъект);
	
	УправлениеШтатнымРасписаниемКлиент.ОткрытьФормуДокументаИзменившегоПозицию(ЗакрывшийРегистратор, Объект.Ссылка, ЭтотОбъект, Оповещение);
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьФормуДокументаИзменившегоПозициюЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Объект.ВерсияДанных <> ВерсияДанныхИБ(СсылкаНаОбъект) Тогда
		УправлениеШтатнымРасписаниемКлиент.ПеречистатьДанныеОбъектаФормы(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДоступныВсеЛьготыПриИзменении(Элемент)
	
	УстановитьДоступностьИндивидуальныхЛьгот();
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьЛимитПриИзменении(Элемент)
	
	УстановитьДоступностьРазмераЛимитаЛьготы(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямКлассУсловийТрудаПриИзменении(Элемент)
	
	РедактированиеПериодическихСведенийКлиентСервер.ОбновитьОтображениеПолейВвода(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", СсылкаНаОбъект);
	УстановитьДатуРегистрацииКлассаУсловийТрудаПоПериоду();
	ОбновитьПолеКлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямПериодПриИзменении(Элемент)
	
	УстановитьДатуРегистрацииКлассаУсловийТрудаПоПериоду();
	
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийПриИзменении(Элемент)
	
	ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(
		ЭтотОбъект,
		"КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений",
		"КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийСтрокой",
		Модифицированность);
	
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(
		ЭтотОбъект,
		ЭтотОбъект,
		"КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений",
		"КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийСтрокой");
	
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийРегулирование(Элемент, Направление, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(
		ЭтотОбъект,
		"КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений",
		"КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийСтрокой",
		Направление,
		Модифицированность);
	
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
	ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
	ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсиейФлажокПриИзменении(Элемент)
	
	Если НЕ ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией Тогда
		Объект.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией = ПредопределенноеЗначение("Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка");
	КонецЕсли;
	УстановитьДоступностьВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
	
	// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	СклонениеПредставленийОбъектовКлиент.ПросклонятьПредставление(ЭтотОбъект, Объект.Наименование);
	// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	
КонецПроцедуры

&НаКлиенте
Процедура ГрафикРаботыРежимРаботыВыборПриИзменении(Элемент)
	Если ГрафикРаботыРежимРаботы = 0 Тогда
		Объект.ГрафикРаботыСотрудников = ПредопределенноеЗначение("Справочник.ГрафикиРаботыСотрудников.ПустаяСсылка");
	Иначе
		Объект.ГрафикРаботыСотрудников = ПредопределенноеЗначение("Справочник.РежимыРаботыСотрудников.ПустаяСсылка");	
	КонецЕсли;	
	
	ГрафикРаботыСотрудниковПриИзменении(Неопределено);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПрофильДолжностиПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеПрофильДолжностиПриИзменении(ЭтотОбъект);
	КонецЕсли;
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеПрофильДолжностиПриИзменении(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииСтрокиОтчетностиМониторинга(Элемент)
	
	Модифицированность = Истина;
	
КонецПроцедуры

&НаСервере
Процедура КатегорияПолучателяСтимулирующихВыплатФССНачалоВыбораНаСервере(ПараметрыВыбора)
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы.ПособияСоциальногоСтрахования") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("СтимулирующиеВыплатыФСС");
		Модуль.УточнитьПараметрыВыбораФормыКатегорияПолучателяСтимулирующихВыплатФСС(ПараметрыВыбора);
	КонецЕсли;
	
КонецПроцедуры	

&НаКлиенте
Процедура КатегорияПолучателяСтимулирующихВыплатФССНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	КатегорияПолучателяСтимулирующихВыплатФССНачалоВыбораНаСервере(Элемент.ПараметрыВыбора);
	
КонецПроцедуры

&НаКлиенте
Процедура НаименованиеПолноеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Оповещение = Новый ОписаниеОповещения("НаименованиеПолноеЗавершениеВыбора", ЭтотОбъект);
	ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(Оповещение, Элемент.ТекстРедактирования, 
		НСтр("ru = 'Полное наименование'"));

КонецПроцедуры

&НаКлиенте
Процедура НаименованиеПолноеЗавершениеВыбора(РезультатВыбора, ДополнительныеПараметры) Экспорт
	
	Если РезультатВыбора = Неопределено Тогда
		Возврат;
	КонецЕсли;

	Объект.НаименованиеПолное = РезультатВыбора;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыНачисления

&НаКлиенте
Процедура НачисленияПриАктивизацииСтроки(Элемент, ОписаниеКоманднойПанели)
	
	Если ВнешниеДанные Тогда
		УправлениеШтатнымРасписаниемКлиент.НачисленияПриАктивизацииСтроки(ЭтотОбъект, ОписаниеКоманднойПанелиНачислений());
	КонецЕсли; 

КонецПроцедуры

&НаКлиенте
Процедура НачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
		
	УправлениеШтатнымРасписаниемКлиент.НачисленияПриНачалеРедактирования(ЭтотОбъект, НоваяСтрока, Копирование, ВнешниеДанные);
	
КонецПроцедуры

&НаКлиенте
Процедура НачисленияНачислениеПриИзменении(Элемент)
	
	УправлениеШтатнымРасписаниемКлиент.НачисленияНачислениеПриИзменении(
		ЭтотОбъект, УправлениеШтатнымРасписаниемКлиентСервер.ДатаСобытия(ЭтотОбъект,
		ОбщегоНазначенияКлиент.ДатаСеанса()), Объект.РазрядКатегория, Объект.ТарифнаяСетка, 
		Объект.РазрядКатегорияНадбавки, Объект.ТарифнаяСеткаНадбавки, Истина);

КонецПроцедуры

&НаКлиенте
Процедура НачисленияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	Если ОтменаРедактирования Тогда
		Возврат;
	КонецЕсли;
	
	Если ИспользоватьВилкуСтавок Тогда
		
		Для НомерПоказателя = 1 По ЗарплатаКадрыРасширенныйКлиентСервер.МаксимальноеКоличествоПоказателейПоОписаниюТаблицы(ЭтотОбъект, ОписаниеТаблицыНачисленийНаКлиенте(),, 0) Цикл
			
			ПутьКЗначениюМин = "МинимальноеЗначение" + НомерПоказателя;
			ЗначениеМин = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(Элемент.ТекущиеДанные, ПутьКЗначениюМин);
			
			ПутьКЗначениюМакс = "МаксимальноеЗначение" + НомерПоказателя;
			ЗначениеМакс = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(Элемент.ТекущиеДанные, ПутьКЗначениюМакс);
			
			Если ЗначениеМин > ЗначениеМакс Тогда
				ОбщегоНазначенияКлиентСервер.УстановитьРеквизитФормыПоПути(Элемент.ТекущиеДанные, ПутьКЗначениюМакс, ЗначениеМин);
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЕсли; 
	
	ИзмененыНачисления = Модифицированность;

	Если ЗарплатаКадрыРасширенныйКлиент.ВводПлановыхНачисленийРассчитатьФОТПриОкончанииРедактирования(ЭтотОбъект, Элемент, 0, ОписаниеТаблицыНачислений(ЭтотОбъект)) Тогда
		ВыполнитьРасчетФОТ();
	КонецЕсли;
	
	УправлениеШтатнымРасписаниемКлиентСервер.УстановитьВидимостьКомандыИзменитьНачисленияСотрудников(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура НачисленияПослеУдаления(Элемент)
	
	Если ВнешниеДанные Тогда
		УправлениеШтатнымРасписаниемКлиент.НачисленияПослеУдаления(ЭтотОбъект);
	КонецЕсли; 

	ВыполнитьРасчетФОТ();
	
КонецПроцедуры

&НаКлиенте
Процедура НачисленияПередУдалением(Элемент, Отказ)
	
	Если ВнешниеДанные Тогда
		УправлениеШтатнымРасписаниемКлиент.НачисленияПередУдалением(ЭтотОбъект, Отказ, ОписаниеКоманднойПанелиНачислений());
		ВыполнитьРасчетФОТ();
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура НадбавкаЗаВредностьРазмерПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура ВыплачиваетсяНадбавкаЗаВредностьПриИзменении(Элемент)
	
	УстановитьОтображениеПолейВводаПроцентаЗаВредность(ЭтотОбъект, Объект.ВыплачиваетсяНадбавкаЗаВредность);
	ВыполнитьРасчетФОТ();
	
КонецПроцедуры

&НаКлиенте
Процедура ПроцентНадбавкиЗаВредностьПриИзменении(Элемент)
	
	ВыполнитьРасчетФОТ();
	
КонецПроцедуры

&НаКлиенте
Процедура НадбавкаЗаВредностьРазмерМинПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура НадбавкаЗаВредностьРазмерМаксПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура РайонныйКоэффициентРазмерПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура РайонныйКоэффициентРазмерМинПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура РайонныйКоэффициентРазмерМаксПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура СевернаяНадбавкаРазмерПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура СевернаяНадбавкаРазмерМинПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура СевернаяНадбавкаРазмерМаксПриИзменении(Элемент)
	
	РассчитатьИтогиФОТПоПозиции();
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ЗначениеПоказателяПриИзмененииНачисления(Элемент)
	
	Если ВнешниеДанные Тогда
		УстановитьКомментарииДействийСНачислением(ЭтотОбъект, Элементы.Начисления.ТекущиеДанные, ОписаниеТаблицыНачисленийНаКлиенте());
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыПоказатели

&НаКлиенте
Процедура ПоказателиПриИзменении(Элемент)
	
	ВыполнитьРасчетФОТ();
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказателиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	Если ВнешниеДанные Тогда
		УправлениеШтатнымРасписаниемКлиент.ПоказателиПриНачалеРедактирования(ЭтотОбъект, НоваяСтрока, Копирование);
	КонецЕсли; 
	
	ЗарплатаКадрыРасширенныйКлиент.УстановитьОграничениеТипаПоТочностиДополнительногоПоказателя(ЭтотОбъект, "Показатели", 0);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказателиПоказательПриИзменении(Элемент)
	
	ЗарплатаКадрыРасширенныйКлиент.УстановитьОграничениеТипаПоТочностиДополнительногоПоказателя(ЭтотОбъект, "Показатели", 0);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыЕжегодныеОтпуска

&НаКлиенте
Процедура ЕжегодныеОтпускаПриАктивизацииСтроки(Элемент)
	
	Если ВнешниеДанные Тогда
		ОстаткиОтпусковКлиент.ПриАктивизацииСтрокиЕжегодногоОтпуска(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЕжегодныеОтпускаПередУдалением(Элемент, Отказ)
	
	Если ВнешниеДанные Тогда
		ОстаткиОтпусковКлиент.ПередУдалениемЕжегодногоОтпуска(ЭтотОбъект, Отказ);
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура ЕжегодныеОтпускаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	Если ОтменаРедактирования Тогда
		Возврат;
	КонецЕсли;
	
	Если ВнешниеДанные Тогда
		ОстаткиОтпусковКлиент.ПриОкончанииРедактированияЕжегодногоОтпуска(Элемент.ТекущиеДанные, НоваяСтрока);
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура ЕжегодныеОтпускаВидЕжегодногоОтпускаПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ЕжегодныеОтпуска.ТекущиеДанные;
	
	ОстаткиОтпусковКлиент.ПриИзмененииВидаЕжегодногоОтпуска(ЭтотОбъект);
	Если ВнешниеДанные Тогда
		ОстаткиОтпусковКлиентСервер.УстановитьКомментарииДействийСЕжегоднымОтпуском(ТекущиеДанные);
	КонецЕсли; 
	
	ЗаполнитьЗначенияСтажевыхРеквизитовВСтроке(ТекущиеДанные.ПолучитьИдентификатор());
	
КонецПроцедуры

&НаКлиенте
Процедура ЕжегодныеОтпускаКоличествоДнейВГодПриИзменении(Элемент)
	
	Если ВнешниеДанные Тогда
		ОстаткиОтпусковКлиентСервер.УстановитьКомментарииДействийСЕжегоднымОтпуском(Элементы.ЕжегодныеОтпуска.ТекущиеДанные);
	КонецЕсли; 
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыЛьготы

&НаКлиенте
Процедура ЛьготыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	ЗарплатаКадрыРасширенныйКлиент.РедактированиеСоставаНачисленийПриНачалеРедактирования(ЭтотОбъект, "Льготы", 1);
	
КонецПроцедуры

&НаКлиенте
Процедура ЛьготыЛьготаПриИзменении(Элемент)
	
	ОписаниеТаблицыВидовРасчета = ОписаниеТаблицыЛьгот();
	ЗарплатаКадрыРасширенныйКлиент.РедактированиеСоставаНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 1);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыМероприятия

&НаКлиенте
Процедура Подключаемый_МероприятияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияВыбор(ЭтотОбъект, Элемент, Поле, СтандартнаяОбработка);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МероприятияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияПередНачаломДобавления(ЭтотОбъект, Элемент, Отказ, Копирование);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МероприятияПередНачаломИзменения(Элемент, Отказ)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияПередНачаломИзменения(ЭтотОбъект, Элемент, Отказ, Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МероприятияПередУдалением(Элемент, Отказ)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияПередУдалением(ЭтотОбъект, Элемент, Отказ, Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МероприятияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияПриОкончанииРедактирования(ЭтотОбъект, Элемент, НоваяСтрока, ОтменаРедактирования);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МероприятияМероприятиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияМероприятиеНачалоВыбора(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_МероприятияМероприятиеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АдаптацияУвольнениеКлиент");
		МодульАдаптацияУвольнениеКлиент.МероприятияМероприятиеОбработкаВыбора(ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка, Истина);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыДействия

&НаКлиенте
Процедура Подключаемый_ДействияХарактеристикиСоответствуютПрофилюДолжностиЧислоПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеПриИзмененииДействияХарактеристикиСоответствуютПрофилюДолжности(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ДействияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеДействияВыбор(Элементы);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ДействияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеОткрытьФормуДобавленияДействий(ЭтотОбъект, Отказ);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ДействияПередУдалением(Элемент, Отказ)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеДействияСотрудниковПередУдалением(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ДействияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеДействияСотрудниковОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыХарактеристики

&НаКлиенте
Процедура Подключаемый_ХарактеристикиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеХарактеристикиВыбор(ЭтотОбъект, Поле, СтандартнаяОбработка);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ХарактеристикиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеХарактеристикиПередНачаломДобавления(ЭтотОбъект, Копирование, Отказ);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ХарактеристикиПередУдалением(Элемент, Отказ)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ШтатноеРасписаниеХарактеристикиПередУдалением(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыПрограммаОбучения

&НаКлиенте
Процедура Подключаемый_ПродолжительностьПланаОбученияПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеРазмерностьПродолжительностьПланаОбученияПриИзменении(ЭтотОбъект);
		Модифицированность = Истина;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РазмерностьПродолжительностиПланаОбученияПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеРазмерностьПродолжительностиПланаОбученияПриИзменении(ЭтотОбъект);
		Модифицированность = Истина;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПрограммаОбученияСоответствуютПрофилюДолжностиЧислоПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеПриИзмененииПрограммаОбученияСоответствуютПрофилюДолжности(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПрограммаОбученияПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеПрограммаОбученияПриИзменении(ЭтотОбъект, Элемент);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПрограммаОбученияМероприятиеПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеПрограммаОбученияМероприятиеПриИзменении(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыКадровыйРезерв

&НаКлиенте
Процедура Подключаемый_КадровыйРезервИнфоНадписьГруппРезерваОбработкаНавигационнойСсылки(Элемент, 
	НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		ПараметрыФормы = Новый Структура("Ключ", ПолучитьПозициюРезерваПоСсылке(НавигационнаяСсылкаФорматированнойСтроки));
		МодульКлиент.ОткрытьФормуСправочникаКадровыйРезерв(ЭтотОбъект, ПараметрыФормы);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КадровыйРезервПозицииШРВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		МодульКлиент.ОткрытьФормуУчастникаКадровогоРезерва(ЭтотОбъект, "КадровыйРезервПозицииШР");
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подключаемый_РеквизитыМедицинскогоРегистраЭлементПриИзменении(Элемент)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("МедицинскиеРегистрыКлиент");
		Модуль.РеквизитыМедицинскогоРегистраЭлементПриИзменении(ЭтотОбъект, Элемент.Имя);
	КонецЕсли;
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда) 
	
	ЗаблокированныеРеквизиты = ЗапретРедактированияРеквизитовОбъектовКлиент.Реквизиты(ЭтотОбъект);
	Если ЗаблокированныеРеквизиты.Количество() > 0 Тогда
		
		ТекстВопроса = НСтр("ru = 'Внимание!
			|При изменении организации, подразделения или должности позиции штатного расписания
			|может быть нарушено соответствие кадровых данных штатному расписанию и правильность кадровых документов.
			|
			|Может потребоваться перезаполнение приказов по этой позиции штатного расписания.'");

		СоставКнопок = Новый СписокЗначений;
		СоставКнопок.Добавить(Истина,  НСтр("ru = 'Разрешить редактирование'"));
		СоставКнопок.Добавить(Ложь,  НСтр("ru = 'Отмена'"));
		
		Оповещение = Новый ОписаниеОповещения("Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект);
		ПоказатьВопрос(Оповещение, ТекстВопроса, СоставКнопок, , Истина);
	
	Иначе
		ЗапретРедактированияРеквизитовОбъектовКлиент.ПоказатьПредупреждениеВсеВидимыеРеквизитыРазблокированы();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтразитьВКадровомУчете(Команда)
	
	ДополнительныеПараметры = Новый Структура("ЗаписатьЭлемент", Истина);
	
	Если Модифицированность Тогда
		
		ТекстВопроса = НСтр("ru='Данные были изменены. Сохранить изменения?'");
		
		Оповещение = Новый ОписаниеОповещения("ОтразитьВКадровомУчетеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена);
		
	Иначе 
		
		ДополнительныеПараметры.ЗаписатьЭлемент = Ложь;
		ОтразитьВКадровомУчетеЗавершение(КодВозвратаДиалога.Да, ДополнительныеПараметры);
		
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура РедактироватьФОТ(Команда)
	
	ПоказыватьФОТ = НЕ Элементы.РедактироватьФОТ.Пометка;
	ОбработатьИзменениеРежимаОтображенияФОТ();
	
КонецПроцедуры

&НаКлиенте
Процедура ОК(Команда)
	
	ОчиститьСообщения();
	
	Отказ = Ложь;
	Если Модифицированность ИЛИ РасчетНеобходимоВыполнить Тогда
		
		Если РасчетНеобходимоВыполнить Тогда
			РассчитатьФОТНаКлиенте();
		КонецЕсли;
		
		Если ПроверитьЗаполнение() Тогда
			
			Оповестить("ИзмененыДанныеПозицииШтатногоРасписания", АдресДанныхПозицииВХранилище(), ВладелецФормы);
			Модифицированность = Ложь;
			
		Иначе
			Отказ = Истина;
		КонецЕсли;
		
	КонецЕсли;
	
	Если НЕ Отказ Тогда
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Рассчитать(Команда)
	
	РассчитатьФОТНаКлиенте();
	
КонецПроцедуры

&НаКлиенте
Процедура КлассУсловийТрудаИстория(Команда)
	РедактированиеПериодическихСведенийКлиент.ОткрытьИсторию("КлассыУсловийТрудаПоДолжностям", СсылкаНаОбъект, ЭтотОбъект,
		Элементы.ГруппаСпецоценкаУсловийТрудаКлассыУсловийТруда.ТолькоПросмотр);
КонецПроцедуры

&НаКлиенте
Процедура КомандаЗаписатьИЗакрыть(Команда)
	
	ЗаписатьНаКлиенте(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаЗаписать(Команда)
	
	ЗаписатьНаКлиенте(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура Склонения(Команда)
	
	// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	СклонениеПредставленийОбъектовКлиент.ПоказатьСклонение(ЭтотОбъект, Объект.Наименование);
	// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	
КонецПроцедуры

#Область Подключаемый_КадровыйРезерв

&НаКлиенте
Процедура Подключаемый_СоздатьОткрытьПозициюКадровогоРезерваШтатногоРасписания(Команда)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		ПараметрыФормы = МодульКлиент.ПараметрыОткрытияФормыСправочникаКадровыйРезерв(ЭтотОбъект);
		МодульКлиент.ОткрытьФормуСправочникаКадровыйРезерв(ЭтотОбъект, ПараметрыФормы);
	КонецЕсли;
	
КонецПроцедуры

#Область ОбработчикиКомандРейтинга

&НаКлиенте
Процедура Подключаемый_Рейтинг1(Команда)
	ПоставитьРейтингНаКлиенте(1);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_Рейтинг2(Команда)
	ПоставитьРейтингНаКлиенте(2);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_Рейтинг3(Команда)
	ПоставитьРейтингНаКлиенте(3);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_Рейтинг4(Команда)
	ПоставитьРейтингНаКлиенте(4);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_Рейтинг5(Команда)
	ПоставитьРейтингНаКлиенте(5);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РейтингСбросить(Команда)
	ПоставитьРейтингНаКлиенте(0);
КонецПроцедуры

#КонецОбласти

&НаКлиенте
Процедура Подключаемый_ЗаявкаНаВключениеВКадровыйРезерв(Команда)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		МодульКлиент.ОткрытьФормуЗаявкаНаВключениеВКадровыйРезерв(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВключениеВКадровыйРезерв(Команда)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		МодульКлиент.ОткрытьФормуВключениеВКадровыйРезерв(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ИсключениеИзКадровогоРезерва(Команда)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		МодульКлиент.ОткрытьФормуИсключениеИзКадровогоРезерва(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти 

#Область Подключаемый_ХарактеристикиПерсонала

&НаКлиенте
Процедура Подключаемый_ПодобратьХарактеристики(Команда)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХарактеристикиПерсоналаКлиент");
		МодульХарактеристикиПерсоналаКлиент.ПодобратьХарактеристики(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область Подключаемый_ПрограммаОбучения

&НаКлиенте
Процедура Подключаемый_ОткрытьПодборПрограммыОбученияПоХарактеристикам(Команда)
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбучениеРазвитиеКлиент");
		МодульОбучениеРазвитиеКлиент.ШтатноеРасписаниеОткрытьПодборПрограммыОбученияПоХарактеристикам(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// СтандартныеПодсистемы.Свойства

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

// Конец СтандартныеПодсистемы.Свойства

&НаКлиенте
Процедура Подключаемый_СпециальныеУсловияЗанятостиИзменить(Команда)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("МедицинаКлиент");
		Модуль.ОткрытьФормуСпециальныеУсловияЗанятости(ЭтотОбъект, СсылкаНаОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Ответ, ДополнительныеПараметры) Экспорт 
	
	Если Ответ <> Истина Тогда 
		Возврат;
	КонецЕсли;
	
	ЗаблокированныеРеквизиты = ЗапретРедактированияРеквизитовОбъектовКлиент.Реквизиты(ЭтотОбъект);
	ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтотОбъект, ЗаблокированныеРеквизиты);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтразитьВКадровомУчетеЗавершение(Ответ, ДополнительныеПараметры) Экспорт 
	
	Если Ответ <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли; 
	
	Если ДополнительныеПараметры.ЗаписатьЭлемент
		И Не УправлениеШтатнымРасписаниемКлиент.СохранитьДанныеОбъектаФормы(ЭтотОбъект) Тогда 
		
		Возврат;
	КонецЕсли;
	
	ПараметрыОткрытияФормы = Новый Структура;
	
	ЗначенияЗаполнения = Новый Структура;
	ЗначенияЗаполнения.Вставить("Организация", 						Объект.Владелец);
	ЗначенияЗаполнения.Вставить("Подразделение", 					Объект.Подразделение);
	ЗначенияЗаполнения.Вставить("Должность", 						Объект.Должность);
	ЗначенияЗаполнения.Вставить("ДолжностиПоШтатномуРасписанию", 	ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка));
	
	ЗначенияЗаполнения.Вставить("ЭтоОтражениеИзмененияШтатногоРасписания", Истина);
	
	ПараметрыОткрытияФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
	
	ОткрытьФорму("Документ.ИзменениеПлановыхНачислений.Форма.ФормаДокумента", ПараметрыОткрытияФормы);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВерсияДанныхИБ(СсылкаНаОбъект)
	
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "ВерсияДанных");
	
КонецФункции

&НаКлиенте
Процедура ОбработатьИзменениеРежимаОтображенияФОТ()
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ПоказатьФОТ",
		"Пометка",
		ПоказыватьФОТ);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"РедактироватьФОТ",
		"Пометка",
		ПоказыватьФОТ);
		
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыНачислений(Форма)
	
	ОписаниеТаблицыВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыПлановыхНачислений();
	ОписаниеТаблицыВидовРасчета.ИмяРеквизитаДокументОснование = "";
	Возврат ОписаниеТаблицыВидовРасчета;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыЛьгот()
	
	ОписаниеТаблицыВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыПлановыхНачислений(Ложь, Ложь);
	ОписаниеТаблицыВидовРасчета.ИмяТаблицы = "Льготы";
	ОписаниеТаблицыВидовРасчета.ИмяРеквизитаВидРасчета = "Льгота";
	ОписаниеТаблицыВидовРасчета.ПутьКДанным = "Льготы";
	ОписаниеТаблицыВидовРасчета.ПутьКДаннымПоказателей = "Показатели";
	ОписаниеТаблицыВидовРасчета.НомерТаблицы = 1;
	ОписаниеТаблицыВидовРасчета.ИмяРеквизитаФиксРасчет = "ЛьготыФиксРасчет";
	ОписаниеТаблицыВидовРасчета.ИмяРеквизитаДокументОснование = "";
	
	Возврат ОписаниеТаблицыВидовРасчета;
	
КонецФункции

&НаКлиенте
Функция ОписаниеТаблицыНачисленийНаКлиенте() Экспорт
	
	Возврат ОписаниеТаблицыНачислений(ЭтотОбъект);
	
КонецФункции

&НаСервере
Функция ОписаниеТаблицыНачисленийНаСервере() Экспорт
	
	Возврат ОписаниеТаблицыНачислений(ЭтотОбъект);
	
КонецФункции

&НаКлиенте
Функция ОписаниеКоманднойПанелиНачислений() Экспорт
	ОписаниеКоманднойПанелиНачислений = ЗарплатаКадрыРасширенныйКлиент.ОписаниеКоманднойПанелиНачислений();
	Возврат ОписаниеКоманднойПанелиНачислений
КонецФункции

&НаСервере
Процедура ВладелецПриИзмененииНаСервере()
	
	ДополнитьФорму();
	УстановитьГрафикРаботы();
	ЗаполнитьПозициюЛьготамиПоУмолчанию(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ПодразделениеПриИзмененииНаСервере(УстанавливатьДоступностьСведений = Истина)
	
	ПрочитатьДанныеПодразделенияВФорму();
	
	УстановитьГрафикРаботы();
	УстановитьПодходящуюДатуУтверждения();
	
	ЗаполнитьПравамиНаОтпускаНаСервере();
	
	Если УстанавливатьДоступностьСведений Тогда
		УстановитьДоступностьСведенийПозиции();
	КонецЕсли; 
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("МедицинскиеРегистры");
		Модуль.ОбновитьДеревоУслуг(ЭтотОбъект, Объект.Подразделение);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПрочитатьДанныеПодразделенияВФорму()
	
	УстановитьПривилегированныйРежим(Истина);
	
	ДанныеОПодразделении = ДанныеПодразделения(Объект.Подразделение);
	
	РайонныйКоэффициент = ДанныеОПодразделении.РайонныйКоэффициент;
	РайонныйКоэффициентПредставление = УправлениеШтатнымРасписаниемКлиентСервер.ПредставлениеРайонногоКоэффициента(НачислениеРайонныйКоэффициент, РайонныйКоэффициент);
	
	ПроцентСевернойНадбавки = ДанныеОПодразделении.ПроцентСевернойНадбавки;
	СевернаяНадбавкаПредставление = УправлениеШтатнымРасписаниемКлиентСервер.ПредставлениеСевернойНадбавки(НачислениеСевернаяНадбавка, ПроцентСевернойНадбавки);
	ТерриториальныеУсловия = ТерриториальныеУсловияПФРПодразделения(Объект.Подразделение, ТекущаяДатаСеанса());
	Если ТерриториальныеУсловия = Неопределено Тогда
		ТерриториальныеУсловияПФР = Неопределено;
	Иначе
		ТерриториальныеУсловияПФР = ТерриториальныеУсловия.ТерриториальныеУсловияПФР;
	КонецЕсли;
	
	УстановитьОтображениеПолейВводаРайонногоКоэффициента(ЭтотОбъект, РайонныйКоэффициент);
	УстановитьОтображениеПолейВводаСевернойНадбавки(ЭтотОбъект, ТерриториальныеУсловия);
	
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры

&НаСервере
Процедура ДолжностьПриИзмененииНаСервере(УстанавливатьДоступностьСведений = Истина)
	
	Если ЗначениеЗаполнено(Объект.Должность) Тогда
		
		УстановитьПодходящуюДатуУтверждения();
		
		ИменаРеквизитовДолжности =
			"ТарифнаяСетка,
			|ТарифнаяСеткаНадбавки,
			|РазрядКатегория,
			|РазрядКатегорияНадбавки,
			|ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией,
			|ОснованиеДосрочногоНазначенияПенсии,
			|ОсобыеУсловияТрудаПФР,
			|ПроцентНадбавкиЗаВредность,
			|ВыплачиваетсяНадбавкаЗаВредность,
			|КоличествоДнейДополнительногоОтпускаВГод,
			|КодПозицииСпискаПФР,
			|ТрудоваяФункция,
			|ХарактерВыполняемыхРаботПФР,
			|ПервичныеДокументыПФР,
			|ВидСтажаЛетныхЭкипажей,
			|ВидСтажаШахтеров,
			|ЯвляетсяДолжностьюЛетногоЭкипажа,
			|ЯвляетсяШахтерскойДолжностью";
		
		ДанныеДолжности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Должность,ИменаРеквизитовДолжности);
		ЗаполнитьЗначенияСвойств(Объект, ДанныеДолжности);
		
		ЗаполнитьНачислениеНадбавкаЗаВредность();
		
		УстановитьОтображениеПолейВводаПроцентаЗаВредность(ЭтотОбъект, Объект.ВыплачиваетсяНадбавкаЗаВредность);
		
		ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией = ЗначениеЗаполнено(Объект.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией);
		
		// Установим класс условий труда по должности
		УстановитьКлассУсловийТрудаПоДолжности();
		
		ПрочитатьДанныеДолжностиСФР(ДанныеДолжности);
		УстановитьВидимостьПолейВидаСтажаСФР();
		
		СтатистикаПерсоналаРасширенный.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, Объект.Должность,,ОрганизацияФормы);
		
		Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
			Если Не ВнешниеДанные Тогда
				МодульМедицина = ОбщегоНазначения.ОбщийМодуль("Медицина");
				МодульМедицина.ПрочитатьДополнительныеДанныеДолжностиДляПозицииШтатногоРасписания(ЭтотОбъект);
			КонецЕсли;
		КонецЕсли;

		Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина.ТарификационнаяОтчетностьУчрежденийФМБА") Тогда
			МодульТарификационнаяОтчетностьУчрежденийФМБА = ОбщегоНазначения.ОбщийМодуль("ТарификационнаяОтчетностьУчрежденийФМБА");
			МодульТарификационнаяОтчетностьУчрежденийФМБА.УстановитьТарификационнуюГруппуПоДолжности(ЭтотОбъект, Объект.Должность);
		КонецЕсли;
		
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Объект.ТарифнаяСетка) Тогда
		ЗаполнитьДанныеТарифнойСеткиНаСервере();
	КонецЕсли; 
	
	Если ЗначениеЗаполнено(Объект.ТарифнаяСеткаНадбавки) Тогда
		ЗаполнитьДанныеТарифнойСеткиНадбавкиНаСервере();
	КонецЕсли; 

	Если УстанавливатьДоступностьСведений Тогда
		УстановитьДоступностьСведенийПозиции();
	КонецЕсли; 
	
	ЗаполнитьПравамиНаОтпускаНаСервере();
	
	УправлениеШтатнымРасписаниемФормы.ПрочитатьДополнительныеДанныеДолжностиДляПозицииШтатногоРасписания(ЭтотОбъект);
	СтимулирующиеВыплатыФСС.ДополнитьФормуЭлементаСправочникаДолжности(ЭтотОбъект);
	СтимулирующиеВыплатыФСС.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, Объект.Ссылка);
	
	КадровыйУчетРасширенный.УстановитьПараметрыВыбораНачисленийПоОтношениюКДенежномуСодержанию(
		ЭтотОбъект,
		ОписаниеТаблицыНачислений(ЭтотОбъект),
		УправлениеШтатнымРасписанием.ЗначениеПараметраВыбораНачисленийПоОтношениюКДенежномуСодержанию(ЭтотОбъект));
		
	КадровыйУчетРасширенный.УстановитьПараметрыВыбораНачисленийПоОтношениюКДенежномуДовольствию(
		ЭтотОбъект,
		ОписаниеТаблицыНачислений(ЭтотОбъект),
		УправлениеШтатнымРасписанием.ЗначениеПараметраВыбораНачисленийПоОтношениюКДенежномуДовольствию(ЭтотОбъект));
	
КонецПроцедуры

&НаСервере
Процедура УстановитьГрафикРаботы()
	
	Если ЗначениеЗаполнено(Объект.Владелец) ИЛИ ЗначениеЗаполнено(Объект.Подразделение) Тогда
		
		ЗначенияДляЗаполнения = Новый Структура;
		
		ЗначенияДляЗаполнения.Вставить("Организация",   "Объект.Владелец");
		ЗначенияДляЗаполнения.Вставить("Подразделение", "Объект.Подразделение");
		ЗначенияДляЗаполнения.Вставить("ГрафикРаботы",	"Объект.ГрафикРаботыСотрудников");
		
		ФиксированныеЗначения = Новый Массив;
		ФиксированныеЗначения.Добавить("Организация");
		ФиксированныеЗначения.Добавить("Подразделение");
		
		ЗарплатаКадры.ЗаполнитьЗначенияВФорме(ЭтотОбъект, ЗначенияДляЗаполнения, ФиксированныеЗначения);
		
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Процедура ДополнитьФорму()
	
	УстановитьПривилегированныйРежим(Истина);
	
	ЗаполнитьНачислениеНадбавкаЗаВредность();
	ЗаполнитьНачислениеКвалификационнаяНадбавка();
	НачислениеРайонныйКоэффициент = ПланыВидовРасчета.Начисления.НачислениеРайонныйКоэффициент();
	НачислениеСевернаяНадбавка = ПланыВидовРасчета.Начисления.НачислениеСевернаяНадбавка();
	
	УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Организация", Объект.Владелец));
	ПрочитатьДанныеПодразделенияВФорму();
	
	УстановитьОтображениеПолейВводаПроцентаЗаВредность(ЭтотОбъект, Объект.ВыплачиваетсяНадбавкаЗаВредность);
	
	ОписаниеТаблицыВидовРасчета = ОписаниеТаблицыНачислений(ЭтотОбъект);
	
	Если ВнешниеДанные Тогда
		
		ЗарплатаКадрыРасширенный.РедактированиеСоставаНачисленийДополнитьФорму(
			ЭтотОбъект, ОписаниеТаблицыВидовРасчета, "Начисления", 0, ИспользоватьРасчетЗарплаты);
	
	Иначе
			
		ЗарплатаКадрыРасширенный.ВводНачисленийДополнитьФорму(
			ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 0, "Начисления", ИспользоватьРасчетЗарплаты);
			
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Ложь);
	
	УправлениеШтатнымРасписаниемФормы.ДополнитьФормуЭлементаСправочникаШтатноеРасписание(ЭтотОбъект);
	УправлениеШтатнымРасписаниемФормы.ПрочитатьДополнительныеДанныеДолжностиДляПозицииШтатногоРасписания(ЭтотОбъект);
	Если ПолучитьФункциональнуюОпцию("ПрименятьРезультатыСпециальнойОценкиУсловийТруда") Тогда
		ПрочитатьКлассыУсловийТрудаПоДолжностям();
	КонецЕсли;
	
	// Настройка таблицы ввода дополнительных тарифных ставок, коэффициентов и т.д.	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ДополнительныеТарифыКоэффициентыГруппа",
		"Видимость",
		ПолучитьФункциональнуюОпциюФормы("ИспользоватьНесколькоТарифныхСтавок"));
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"СпециальностиСтраница",
		"Видимость",
		ПолучитьФункциональнуюОпциюФормы("ИспользоватьСпециальностиФизическихЛиц"));
		
	// Показатели с нулевым идентификатором строки - независимые.
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Показатели",
		"ОтборСтрок",
		Новый ФиксированнаяСтруктура("ИдентификаторСтрокиВидаРасчета", 0));
	
	// Настраиваем параметры выбора показателя.
	МассивПараметровВыбора = Новый Массив;
	МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.СпособПримененияЗначений", Перечисления.СпособыПримененияЗначенийПоказателейРасчетаЗарплаты.Постоянное));
	МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.НазначениеПоказателя", Перечисления.НазначенияПоказателейРасчетаЗарплаты.ДляСотрудника));
	МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ЗначениеРассчитываетсяАвтоматически", Ложь));
	МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.НеИспользуется", Ложь));
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ПоказателиПоказатель",
		"ПараметрыВыбора",
		Новый ФиксированныйМассив(МассивПараметровВыбора));
	
	// Ограничение типа на значение.
	ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3));
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПоказателиЗначение", "ОграничениеТипа", ТипЧисло);
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПоказателиЗначениеМин", "ОграничениеТипа", ТипЧисло);
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПоказателиЗначениеМакс", "ОграничениеТипа", ТипЧисло);

	СтатистикаПерсоналаРасширенный.ГруппаКатегорииДополнитьФорму(ЭтотОбъект, Объект.Владелец, ВнешниеДанные);
	
	СтимулирующиеВыплатыФСС.ДополнитьФормуЭлементаСправочникаДолжности(ЭтотОбъект);
	СтимулирующиеВыплатыФСС.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, Объект.Ссылка);
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.Грейды") Тогда
		МодульГрейды = ОбщегоНазначения.ОбщийМодуль("Грейды");
		МодульГрейды.ГруппаГрейдДополнитьФорму(ЭтотОбъект);
		МодульГрейды.ПрочитатьЗначениеГрейда(ЭтотОбъект);
		Если ВнешниеДанные Тогда 
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Грейд", "Видимость", Ложь);
		КонецЕсли;
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
		МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
		МодульЛьготыСотрудников.ДополнитьФормуПозиции(ЭтотОбъект, ОписаниеТаблицыЛьгот());
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКадровыйРезервФормы = ОбщегоНазначения.ОбщийМодуль("КадровыйРезервФормы");
		МодульКадровыйРезервФормы.ДополнитьФормуПозиции(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровоеПланирование") Тогда
		МодульКадровоеПланированиеФормы = ОбщегоНазначения.ОбщийМодуль("КадровоеПланированиеФормы");
		МодульКадровоеПланированиеФормы.ШтатноеРасписаниеПриДополненииФормы(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.ПриСозданииФормыПозицииШтатногоРасписания(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
		МодульУправленческаяЗарплатаФормы.ПриСозданииФормыПозицииШтатногоРасписания(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		Если Не ВнешниеДанные Тогда
			МодульМедицина = ОбщегоНазначения.ОбщийМодуль("Медицина");
			МодульМедицина.ДополнитьФормуПозицииШтатногоРасписания(ЭтотОбъект);
			МодульМедицина.ПрочитатьДополнительныеДанныеПозицииШтатногоРасписания(ЭтотОбъект);
		КонецЕсли;
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина.ТарификационнаяОтчетностьУчрежденийФМБА") Тогда
		МодульТарификационнаяОтчетностьУчрежденийФМБА = ОбщегоНазначения.ОбщийМодуль("ТарификационнаяОтчетностьУчрежденийФМБА");
		МодульТарификационнаяОтчетностьУчрежденийФМБА.ГруппаКатегорииДополнитьФорму(ЭтотОбъект, ИспользоватьИсторию И Не ВнешниеДанные);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		Если Не ВнешниеДанные Тогда
			МодульАдаптацияУвольнениеФормы = ОбщегоНазначения.ОбщийМодуль("АдаптацияУвольнениеФормы");
			МодульАдаптацияУвольнениеФормы.ОбъектНазначенияПодготовитьФорму(ЭтотОбъект, Истина);
		КонецЕсли;
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ДополнитьФормуШтатногоРасписания(ЭтотОбъект);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитиеФормы.ДополнитьФормуШтатногоРасписания(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьКомментарииДействийСНачислением(Форма, СтрокаНачислений, ОписаниеТаблицыНачислений)
	
	Если Форма.ВнешниеДанные Тогда
		
		УправлениеШтатнымРасписаниемКлиентСервер.УстановитьКомментарииДействийСНачислением(
			СтрокаНачислений, 
			ЗарплатаКадрыРасширенныйКлиентСервер.МаксимальноеКоличествоПоказателейПоОписаниюТаблицы(Форма, ОписаниеТаблицыНачислений,, 0),
			Форма.ИспользоватьВилкуСтавок);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПоместитьДанныеОбъектаВФорму(ТекущийОбъект, ЗначениеКопирования = Неопределено)
	
	УстановитьПривилегированныйРежим(Истина);
	
	ОписаниеТаблицыВидовРасчета = ОписаниеТаблицыНачислений(ЭтотОбъект);
	Если ИспользоватьИсторию И СуществующаяПозиция Тогда
		
		Если ВнешниеДанные Тогда
			УправлениеШтатнымРасписаниемФормы.ПрочитатьТекущиеДанныеПозицииШтатногоРасписанияВФормуСправочника(ЭтотОбъект, РедактируемаяПозиция, Объект.ДатаУтверждения, ВнешниеДанные, ДокументРегистратор);
		Иначе
			УправлениеШтатнымРасписаниемФормы.ПрочитатьТекущиеДанныеПозицииШтатногоРасписанияВФормуСправочника(ЭтотОбъект, ТекущийОбъект.Ссылка);
		КонецЕсли;
		
	КонецЕсли;
	
	ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией = ЗначениеЗаполнено(Объект.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией);
	
	ЗарплатаКадрыРасширенный.ВводНачисленийДанныеВРеквизит(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 0);
	УправлениеШтатнымРасписаниемКлиентСервер.УстановитьВидимостьКомандыИзменитьНачисленияСотрудников(ЭтотОбъект);
	
	Если ВнешниеДанные Тогда
		
		Для Каждого СтрокаНачислений Из Объект.Начисления Цикл
			УстановитьКомментарииДействийСНачислением(ЭтотОбъект, СтрокаНачислений, ОписаниеТаблицыНачисленийНаСервере());
		КонецЦикла;
		
	КонецЕсли;
	
	ПозицияСсылка = ТекущийОбъект.Ссылка;
	Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда
		ПозицияСсылка = ЗначениеКопирования;
	КонецЕсли;
	
	Если Не ВнешниеДанные И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.ПриПолученииДанныхФормыПозицииШтатногоРасписания(ЭтотОбъект, ПозицияСсылка, ЗначениеКопирования);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
		МодульУправленческаяЗарплатаФормы.ПриПолученииДанныхФормыПозицииШтатногоРасписания(ЭтотОбъект, Объект, ТекущийОбъект.Ссылка);
	КонецЕсли;
	
	Если Не ВнешниеДанные И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
		Если Не Параметры.Свойство("СтрокаДокумента") Тогда
			МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
			МодульЛьготыСотрудников.ПрочитатьЛьготыПозиции(ЭтотОбъект, ПозицияСсылка, ОписаниеТаблицыЛьгот(), , "ИндивидуальныеЛьготы");
			МодульЛьготыСотрудников.ПрочитатьЛимитыЛьготПозиции(ЭтотОбъект, ПозицияСсылка);
		КонецЕсли;		
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина.ТарификационнаяОтчетностьУчрежденийФМБА") Тогда
		Если НЕ Параметры.Свойство("СтрокаДокумента") Тогда
			МодульТарификационнаяОтчетностьУчрежденийФМБА = ОбщегоНазначения.ОбщийМодуль("ТарификационнаяОтчетностьУчрежденийФМБА");
			МодульТарификационнаяОтчетностьУчрежденийФМБА.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, ТекущийОбъект.Ссылка, ЗначениеКопирования);
		КонецЕсли;		
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АдаптацияУвольнение") Тогда
		МодульАдаптацияУвольнениеФормы = ОбщегоНазначения.ОбщийМодуль("АдаптацияУвольнениеФормы");
		МодульАдаптацияУвольнениеФормы.ОбъектНазначенияПриПолученииДанных(ЭтотОбъект, Истина);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровоеПланирование") Тогда
		МодульКадровоеПланированиеФормы = ОбщегоНазначения.ОбщийМодуль("КадровоеПланированиеФормы");
		МодульКадровоеПланированиеФормы.ШтатноеРасписаниеПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	КонецЕсли;
	
	Если Не ВнешниеДанные И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ПриПолученииДанныхПозицииШтатногоРасписания(ЭтотОбъект, ПозицияСсылка);
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ТекущийОбъект.Ссылка)
		ИЛИ ЗначениеЗаполнено(ЗначениеКопирования) Тогда
		СтатистикаПерсоналаРасширенный.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, ТекущийОбъект.Ссылка, ЗначениеКопирования, ОрганизацияФормы);
	Иначе
		СтатистикаПерсоналаРасширенный.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, ТекущийОбъект.Должность, ЗначениеКопирования, ОрганизацияФормы);
	КонецЕсли;
	
	СтимулирующиеВыплатыФСС.ДополнитьФормуЭлементаСправочникаДолжности(ЭтотОбъект);
	СтимулирующиеВыплатыФСС.ПрочитатьДополнительныеДанныеДолжности(ЭтотОбъект, Объект.Ссылка);
	
	УстановитьПредставлениеОкладаИФОТ(ЭтотОбъект);
	
	ПрочитатьТерриториальныеУсловияДополнительныеПФР(ЗначениеКопирования);
	ПрочитатьДанныеДолжностиСФР();
	
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры

&НаСервере
Процедура РеквизитыВДанные(ОбъектПриемник)
	
	ОписаниеТаблицыВидовРасчета = ОписаниеТаблицыНачислений(ЭтотОбъект);
	ЗарплатаКадрыРасширенный.ВводНачисленийРеквизитВДанные(ЭтотОбъект, ОбъектПриемник, ОписаниеТаблицыВидовРасчета, 0);
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
		МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
		МодульЛьготыСотрудников.РеквизитыПозицииВДанные(ЭтотОбъект, ОписаниеТаблицыЛьгот());
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
		МодульУправленческаяЗарплатаФормы.РеквизитыПозицииВДанные(ЭтотОбъект, ОбъектПриемник);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере 
Процедура УстановитьСвойстваЭлементовУправления()
	
	Если ИспользоватьИсторию Тогда
		
		Если ВнешниеДанные Тогда
			УстановитьСвойстваЭлементовУправленияДляВнешнихДанных();
		Иначе
			ЗаполнитьУтвердившийИЗакрывшийРегистраторы();
			УстановитьСвойстваЭлементовУправленияПриВеденииИстории();
		КонецЕсли;
		
	Иначе
		
		Если ВнешниеДанные Тогда
			УстановитьСвойстваЭлементовУправленияДляВнешнихДанных();
		Иначе
			УстановитьСвойстваЭлементовУправленияПриИспользованииУправленческойСтруктуры();
		КонецЕсли;
		
	КонецЕсли; 
	
	Если ТолькоПросмотр ИЛИ ИспользоватьИсторию И НЕ ВнешниеДанные Тогда
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"РедактироватьФОТ",
			"Картинка",
			БиблиотекаКартинок.ПоказатьДанные);
			
		КомандаРедактированияФОТ = Команды.Найти("РедактироватьФОТ");
		Если КомандаРедактированияФОТ <> Неопределено Тогда
			КомандаРедактированияФОТ.Заголовок = НСтр("ru='Показать ФОТ'");
			КомандаРедактированияФОТ.Подсказка = НСтр("ru='Показать ФОТ'");
		КонецЕсли; 
				
	КонецЕсли; 
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"НадписьОклад",
		"Видимость",
		ИспользоватьРасчетЗарплаты);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"НадписьФОТ",
		"Видимость",
		ИспользоватьРасчетЗарплаты);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"КоличествоСтавок",
		"ФорматРедактирования",
		УправлениеШтатнымРасписанием.ФорматКоличестваСтавок());
			
	КадровыйУчетРасширенный.УстановитьПараметрыВыбораНачисленийПоКатегории(
		ЭтотОбъект,
		ОписаниеТаблицыНачислений(ЭтотОбъект),
		УправлениеШтатнымРасписанием.ПараметрыВыбораКатегорииНачислений());
	
	КадровыйУчетРасширенный.УстановитьПараметрыВыбораНачисленийПоОтношениюКДенежномуСодержанию(
		ЭтотОбъект,
		ОписаниеТаблицыНачислений(ЭтотОбъект),
		УправлениеШтатнымРасписанием.ЗначениеПараметраВыбораНачисленийПоОтношениюКДенежномуСодержанию(ЭтотОбъект));
		
	КадровыйУчетРасширенный.УстановитьПараметрыВыбораНачисленийПоОтношениюКДенежномуДовольствию(
		ЭтотОбъект,
		ОписаниеТаблицыНачислений(ЭтотОбъект),
		УправлениеШтатнымРасписанием.ЗначениеПараметраВыбораНачисленийПоОтношениюКДенежномуДовольствию(ЭтотОбъект));	
		
	УстановитьДоступностьСведенийПозиции();
		
КонецПроцедуры

&НаСервере
Процедура УстановитьСвойстваЭлементовУправленияДляВнешнихДанных()
	
	РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
	УстановитьОтображениеКоманднойПанелиФормыДляВнешнихДанных();
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Владелец",
		"Видимость",
		Ложь);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаДополнительныеРеквизиты",
		"Видимость",
		Ложь);
	
	Если СуществующаяПозиция Тогда
	
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"Подразделение",
			"ТолькоПросмотр",
			Истина);
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"Должность",
			"ТолькоПросмотр",
			Истина);
			
		Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
			МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
			МодульОрганизационнаяСтруктура.УстановитьСвойстваЭлементовУправленияШтатногоРасписанияВнешниеДанные(ЭтотОбъект);
		КонецЕсли;
		
	КонецЕсли;
	
	// Даты утверждения, закрытия
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Утверждена",
		"Видимость",
		Ложь);
			
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Закрыта",
		"Видимость",
		Ложь);
			
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ДатаУтверждения",
		"Видимость",
		Ложь);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ДатаЗакрытия",
		"Видимость",
		Ложь);
	
	// Не редактируемые поля внешних данных.
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"КраткоеОписание",
		"Видимость",
		Ложь);
	
	// Показ комментария к ежегодным отпускам.
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ЕжегодныеОтпускаКомментарий",
		"Видимость",
		Истина);
		
КонецПроцедуры

&НаСервере
Процедура УстановитьОтображениеКоманднойПанелиФормыДляВнешнихДанных()

	ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Нет;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"КоманднаяПанельФормыВнешниеДанные",
		"Видимость",
		Истина);
		
	Если ТолькоПросмотр Тогда
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"КомандаОК",
			"Видимость",
			Ложь);
			
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"КомандаЗакрыть",
			"Заголовок",
			НСтр("ru='Закрыть'"));
		
		ИмяКнопкиПоУмолчанию = "КомандаЗакрыть";
			
	Иначе
		ИмяКнопкиПоУмолчанию = "КомандаОК";
	КонецЕсли; 
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		ИмяКнопкиПоУмолчанию,
		"КнопкаПоУмолчанию",
		Истина);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСвойстваЭлементовУправленияПриВеденииИстории()
	
	// Ключевые реквизиты
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Владелец",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Подразделение",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Должность",
		"ТолькоПросмотр",
		Истина);
	
	// Отражение в учете
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"СпособОтраженияЗарплатыВБухучете",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ОтношениеКЕНВД",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"СтатьяФинансирования",
		"ТолькоПросмотр",
		Истина);
	
	// Остальные не редактируемые реквизиты.
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"РазрядКатегория",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ТарифнаяСетка",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"РазрядКатегорияНадбавки",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ТарифнаяСеткаНадбавки",
		"ТолькоПросмотр",
		Истина);

	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"КоличествоСтавок",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"УсловияПриема",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"УтвердившийРегистраторНадпись",
		"Видимость",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ЗакрывшийРегистраторНадпись",
		"Видимость",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Утверждена",
		"Видимость",
		Ложь);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ДатаУтверждения",
		"Видимость",
		Ложь);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Закрыта",
		"Видимость",
		Ложь);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ДатаЗакрытия",
		"Видимость",
		Ложь);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГрафикРаботыСотрудников",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ЕжегодныеОтпуска",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Специальности",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсиейФлажок",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ОснованиеДосрочногоНазначенияПенсии",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ОсобыеУсловияТрудаПФР",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ТрудоваяФункция",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"КодПозицииСпискаПФР",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ХарактерВыполняемыхРаботПФР",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ПервичныеДокументыПФР",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ВидСтажаЛетныхЭкипажей",
		"ТолькоПросмотр",
		Истина);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ВидСтажаШахтеров",
		"ТолькоПросмотр",
		Истина);
	
	// Страница "Оплата труда"
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"УправленческийУчетГруппа",
		"ТолькоПросмотр",
		Истина);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаДанныеГоризонтальная",
		"ТолькоПросмотр",
		Истина);
	
	// Команда пересчета ФОТ
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"Рассчитать",
		"Видимость",
		Ложь);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаСпецоценкаУсловийТрудаКлассыУсловийТруда",
		"ТолькоПросмотр",
		Истина);
		
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.УстановитьСвойстваЭлементовУправленияШтатногоРасписанияПриВеденииИстории(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСвойстваЭлементовУправленияПриИспользованииУправленческойСтруктуры()
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.УстановитьСвойстваЭлементовУправленияШтатногоРасписания(ЭтотОбъект, СозданиеНовой);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией(Форма)
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией",
		"Доступность",
		Форма.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНаименование()
	
	ПриЗаполненииНаименования();		
	
	Если ВнешниеДанные Тогда
		Заголовок = Объект.Наименование;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ДополнительныеПараметрыЗаполненияНаименования(РазрядКатегория, Подразделение, Должность)
	
	ДополнительныеПараметры = Новый Структура();
	Если ИспользоватьРазрядыКатегорииКлассыДолжностейИПрофессий Тогда
		ДополнительныеПараметры.Вставить("РазрядКатегория", РазрядКатегория);
	КонецЕсли;
	ДополнительныеПараметры.Вставить("ПолноеНаименованиеДолжности", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Должность, "НаименованиеДляЗаписейОТрудовойДеятельности"));
	ДополнительныеПараметры.Вставить("ПолноеНаименованиеПодразделения", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Подразделение, "НаименованиеДляЗаписейОТрудовойДеятельности"));
	
	Возврат ДополнительныеПараметры;
КонецФункции

&НаКлиенте
Процедура ПриЗаполненииНаименования()
	
	СтандартнаяОбработка = Истина;
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктураКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОрганизационнаяСтруктураКлиент");
		МодульОрганизационнаяСтруктураКлиент.ПриЗаполненииНаименованияПозицииШтатногоРасписания(ЭтотОбъект, СтандартнаяОбработка);
	КонецЕсли;
	
	Если Не СтандартнаяОбработка Тогда
		Возврат;
	КонецЕсли;
	
	ДополнительныеПараметры = ДополнительныеПараметрыЗаполненияНаименования(Объект.РазрядКатегория, Объект.Подразделение, Объект.Должность);
	НаименованиеПозиции = УправлениеШтатнымРасписаниемКлиентСервер.НаименованиеПозицииШтатногоРасписания(
		Объект.Подразделение,
		Объект.Должность,
		ДополнительныеПараметры);
		
	Объект.Наименование = НаименованиеПозиции.Наименование;
	Объект.НаименованиеПолное = НаименованиеПозиции.НаименованиеПолное;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементов(Форма)
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ДатаЗакрытия",
		"Доступность",
		Форма.Объект.Закрыта);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"Закрыта",
		"Доступность",
		Форма.Объект.Утверждена);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ДатаУтверждения",
		"Доступность",
		Форма.Объект.Утверждена);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"КлассыУсловийТрудаПоДолжностямПериод",
		"Видимость",
		Не Форма.ВнешниеДанные);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"КлассУсловийТрудаИстория",
		"Видимость",
		Не Форма.ВнешниеДанные);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"РаботаВСельскомХозяйстве",
		"Видимость",
		Не Форма.ВнешниеДанные);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"РаботаСКоронавирусом",
		"Видимость",
		Не Форма.ВнешниеДанные);
	
	РазрешитьВидимостьСпецоценки = Не Форма.ВнешниеДанные Или Форма.ИспользоватьИсторию;
	
	Если ОбщегоНазначенияБЗККлиентСервер.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОхранаТруда") Тогда
		МодульОхранаТрудаКлиентСервер = ОбщегоНазначенияБЗККлиентСервер.ОбщийМодуль("ОхранаТрудаКлиентСервер");
		МодульОхранаТрудаКлиентСервер.ПроверитьЗначениеВидимостиСпецоценки(Форма, РазрешитьВидимостьСпецоценки);
	КонецЕсли;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ГруппаСпецоценкаУсловийТруда",
		"Видимость",
		РазрешитьВидимостьСпецоценки);
	
	УстановитьДоступностьВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией(Форма);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьРасчетФОТ(ЗаполнитьДанныеТарифнойСетки = Ложь, ЗаполнитьДанныеТарифнойСеткиНадбавки = Ложь)
	
	Если ЗаполнитьДанныеТарифнойСетки Тогда
		ПерезаполнитьДанныеТарифнойСетки = Истина;
	КонецЕсли; 
	
	Если ЗаполнитьДанныеТарифнойСеткиНадбавки Тогда
		ПерезаполнитьДанныеТарифнойСеткиНадбавки = Истина;
	КонецЕсли; 

	ЗарплатаКадрыРасширенныйКлиент.ПодключитьОбработчикОжиданияАвтоматическогоРасчета(ЭтотОбъект, РегистрацияНачисленийДоступна, "РассчитатьФОТНаКлиенте");
	
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьФОТНаКлиенте()
	
	РассчитатьФОТНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура РассчитатьФОТНаСервере()
	
	РассчитатьФОТПозиции();
	ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура РассчитатьФОТПозиции(ПолныйПерерасчет = Ложь)
	
	УстановитьПривилегированныйРежим(Истина);
	
	Если ПерезаполнитьДанныеТарифнойСетки Тогда
		ЗаполнитьДанныеТарифнойСеткиНаСервере();
	КонецЕсли; 
	
	Если ПерезаполнитьДанныеТарифнойСеткиНадбавки Тогда
		ЗаполнитьДанныеТарифнойСеткиНадбавкиНаСервере();
	КонецЕсли; 
	
	УправлениеШтатнымРасписанием.РассчитатьФОТВФормеСОднойПозицией(ЭтотОбъект, Объект, Объект.Владелец, УправлениеШтатнымРасписаниемКлиентСервер.ДатаСобытия(ЭтотОбъект, ТекущаяДатаСеанса()), ОписаниеТаблицыНачисленийНаСервере());
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
		МодульУправленческаяЗарплатаФормы.РассчитатьФОТУправленческихНачисленийПозиции(ЭтотОбъект);
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Ложь);
	
	УстановитьПредставлениеОкладаИФОТ(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура РассчитатьИтогиФОТПоПозиции()
	
    УправлениеШтатнымРасписанием.РассчитатьИтогиФОТПоПозиции(ЭтотОбъект, Объект, Объект.Начисления, ОписаниеТаблицыНачислений(ЭтотОбъект));
	
КонецПроцедуры

&НаСервере
Процедура УстановитьПодходящуюДатуУтверждения()
	
	Если ВнешниеДанные Тогда
		Возврат;
	КонецЕсли; 
	
	Если ЗначениеЗаполнено(Объект.Подразделение) Тогда
		ДатаСозданияПодразделения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Подразделение, "ДатаСоздания");
	Иначе
		ДатаСозданияПодразделения = '00010101';
	КонецЕсли; 
	
	Если ЗначениеЗаполнено(Объект.Должность) Тогда
		ПодходящаяДата = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Должность ,"ДатаВвода");
	Иначе
		ПодходящаяДата = '00010101';
	КонецЕсли;
	
	Если ДатаСозданияПодразделения > ПодходящаяДата Тогда
		ПодходящаяДата = ДатаСозданияПодразделения;
	КонецЕсли; 
	
	Если ПодходящаяДата = '00010101' Тогда
		ПодходящаяДата = НачалоМесяца(ТекущаяДатаСеанса());
	КонецЕсли;
	
	Объект.ДатаУтверждения = ПодходящаяДата;
	
КонецПроцедуры

&НаСервере
Функция ДанныеПодразделения(Знач Подразделение)
	
	ДанныеНачислений = Новый Структура("РайонныйКоэффициент,ПроцентСевернойНадбавки", 1, 0);
	Если ЗначениеЗаполнено(Подразделение) Тогда
		ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Подразделение, "РайонныйКоэффициент,ПроцентСевернойНадбавки");
		ДанныеНачислений.РайонныйКоэффициент = ЗначенияРеквизитов.РайонныйКоэффициент;
		
		ТерриториальныеУсловияПодразделения = ТерриториальныеУсловияПФРПодразделения(Подразделение, ТекущаяДатаСеанса());
		Если ТерриториальныеУсловияПодразделения <> Неопределено
			И ТерриториальныеУсловияПодразделения.ПрименятьСевернуюНадбавку Тогда
			
			ДанныеНачислений.ПроцентСевернойНадбавки = ЗначенияРеквизитов.ПроцентСевернойНадбавки;
		КонецЕсли;
	КонецЕсли;
	
	Возврат ДанныеНачислений;
	
КонецФункции

&НаСервере
Функция ТерриториальныеУсловияПФРПодразделения(Знач Подразделение, Знач ДатаСведений)
	
	Возврат УправлениеШтатнымРасписаниемФормы.ТерриториальныеУсловияПФРПодразделений(Подразделение, ДатаСведений).Получить(Подразделение);
	
КонецФункции

&НаСервере
Процедура ЗаполнитьДанныеТарифнойСеткиНаСервере()
	
	ДополнительныеПараметры = ЗарплатаКадрыРасширенныйКлиентСервер.ПараметрыЗаполненияЗначенийПоказателейТарифныхСеток();
	ДополнительныеПараметры.ДатаСведений = УправлениеШтатнымРасписаниемКлиентСервер.ДатаСобытия(ЭтотОбъект, ТекущаяДатаСеанса());
	ДополнительныеПараметры.ТарифнаяСетка = Объект.ТарифнаяСетка;
	ДополнительныеПараметры.РазрядКатегория = Объект.РазрядКатегория;
	ДополнительныеПараметры.СчитатьПоказателиПоДолжности = Истина;
	
	ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьЗначенияПоказателейТарифныхСеток(ЭтотОбъект, Объект.Начисления, ОписаниеТаблицыНачислений(ЭтотОбъект), 0, ДополнительныеПараметры);
		
	ПерезаполнитьДанныеТарифнойСетки = Ложь;
		
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДанныеТарифнойСеткиНадбавкиНаСервере()
	
	ДополнительныеПараметры = ЗарплатаКадрыРасширенныйКлиентСервер.ПараметрыЗаполненияЗначенийПоказателейТарифныхСеток();
	ДополнительныеПараметры.ДатаСведений = УправлениеШтатнымРасписаниемКлиентСервер.ДатаСобытия(ЭтотОбъект, ТекущаяДатаСеанса());
	ДополнительныеПараметры.ТарифнаяСеткаНадбавки = Объект.ТарифнаяСеткаНадбавки;
	ДополнительныеПараметры.РазрядКатегорияНадбавки = Объект.РазрядКатегорияНадбавки;
	ДополнительныеПараметры.СчитатьПоказателиПоДолжности = Истина;
	
	ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьЗначенияПоказателейТарифныхСеток(
		ЭтотОбъект,
		Объект.Начисления,
		ОписаниеТаблицыНачислений(ЭтотОбъект),
		0,
		ДополнительныеПараметры);
	
	ПерезаполнитьДанныеТарифнойСеткиНадбавки = Ложь;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтображениеПолейВводаРайонногоКоэффициента(Форма, РайонныйКоэффициент)
	
	ИспользуетсяРасчетЗарплаты = Форма.ПолучитьФункциональнуюОпциюФормы("ИспользоватьРасчетЗарплатыРасширенная");
	ЗначениеВидимости = ИспользуетсяРасчетЗарплаты И РайонныйКоэффициент > 1;
	ИспользоватьВилкуСтавок = ЗначениеВидимости И Форма.ИспользоватьВилкуСтавок;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"НачислениеРайонныйКоэффициент",
		"Видимость",
		ЗначениеВидимости);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"РайонныйКоэффициентРазмер",
		"Видимость",
		ЗначениеВидимости И НЕ ИспользоватьВилкуСтавок);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"РайонныйКоэффициентРазмерМин",
		"Видимость",
		ЗначениеВидимости И ИспользоватьВилкуСтавок);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"РайонныйКоэффициентРазмерМакс",
		"Видимость",
		ЗначениеВидимости И ИспользоватьВилкуСтавок);
		
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтображениеПолейВводаПроцентаЗаВредность(Форма, ВыплачиваетсяНадбавкаЗаВредность)
	
	ИспользуетсяРасчетЗарплаты = Форма.ПолучитьФункциональнуюОпциюФормы("ИспользоватьРасчетЗарплатыРасширенная");
	ИспользоватьНадбавкуЗаВредность = ИспользуетсяРасчетЗарплаты И Форма.ПолучитьФункциональнуюОпциюФормы("ИспользоватьНадбавкуЗаВредность");
	
	ЗначениеВидимости = ИспользоватьНадбавкуЗаВредность И ВыплачиваетсяНадбавкаЗаВредность;
	ИспользоватьВилкуСтавок = Форма.ИспользоватьВилкуСтавок;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ПроцентНадбавкиЗаВредность",
		"ТолькоПросмотр",
		Не ВыплачиваетсяНадбавкаЗаВредность);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"НадбавкаЗаВредностьРазмер",
		"Видимость",
		ЗначениеВидимости И НЕ ИспользоватьВилкуСтавок);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"НадбавкаЗаВредностьРазмерМин",
		"Видимость",
		ЗначениеВидимости И ИспользоватьВилкуСтавок);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"НадбавкаЗаВредностьРазмерМакс",
		"Видимость",
		ЗначениеВидимости И ИспользоватьВилкуСтавок);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтображениеПолейВводаСевернойНадбавки(Форма, ТерриториальныеУсловия)
	
	ИспользуетсяРасчетЗарплаты = Форма.ПолучитьФункциональнуюОпциюФормы("ИспользоватьРасчетЗарплатыРасширенная");
	
	ПрименятьСевернуюНадбавку = Ложь;
	Если ТерриториальныеУсловия <> Неопределено Тогда
		ПрименятьСевернуюНадбавку = ТерриториальныеУсловия.ПрименятьСевернуюНадбавку;
	КонецЕсли;
	
	ЗначениеВидимости = ИспользуетсяРасчетЗарплаты
		И Форма.ПолучитьФункциональнуюОпциюФормы("ПрименятьСевернуюНадбавку")
		И ПрименятьСевернуюНадбавку;
		
	ИспользоватьВилкуСтавок = ЗначениеВидимости И Форма.ИспользоватьВилкуСтавок;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"НачислениеСевернаяНадбавка",
		"Видимость",
		ЗначениеВидимости);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"СевернаяНадбавкаРазмер",
		"Видимость",
		ЗначениеВидимости И НЕ ИспользоватьВилкуСтавок);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"СевернаяНадбавкаРазмерМин",
		"Видимость",
		ЗначениеВидимости И ИспользоватьВилкуСтавок);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"СевернаяНадбавкаРазмерМакс",
		"Видимость",
		ЗначениеВидимости И ИспользоватьВилкуСтавок);
		
КонецПроцедуры

&НаСервере
Процедура ЗапомнитьЗначенияФункциональныхОпцийИНабораПрав()
	
	ИспользоватьВилкуСтавок = ПолучитьФункциональнуюОпциюФормы("ИспользоватьВилкуСтавокВШтатномРасписании");
	
	ИспользоватьИсторию = ПолучитьФункциональнуюОпциюФормы("ИспользоватьИсториюИзмененияШтатногоРасписания");
	
	ИспользоватьРасчетЗарплаты = ПолучитьФункциональнуюОпциюФормы("ИспользоватьРасчетЗарплатыРасширенная")
		И Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленийШтатногоРасписания,ЧтениеНачисленийШтатногоРасписания", , Ложь);
		
	ИспользоватьРазрядыКатегорииКлассыДолжностейИПрофессий = ПолучитьФункциональнуюОпциюФормы("ИспользоватьРазрядыКатегорииКлассыДолжностейИПрофессийВШтатномРасписании");
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьРазмераЛимитаЛьготы(Форма)
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "КоличествоБаллов", "Доступность", Форма.ИспользоватьЛимит);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииТарифнойСетки()
	
	Если ПолучитьФункциональнуюОпциюФормы("РаботаВБюджетномУчреждении") Тогда
		
		Если ЗначениеЗаполнено(Объект.ТарифнаяСетка) И ЗначениеЗаполнено(Объект.РазрядКатегория) Тогда
			
			ИдентификаторСтроки = СтрокаНачисленийПоКодуНачисления("ОКЛ"); 
			Если ИдентификаторСтроки <> Неопределено Тогда
				
				Элементы.Начисления.ТекущаяСтрока = ИдентификаторСтроки;
				НачисленияПриНачалеРедактирования(Элементы.Начисления, Истина, Ложь);				
				НачисленияНачислениеПриИзменении(Элементы.НачисленияНачисление);
				
			КонецЕсли; 
			
		КонецЕсли;
		
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииТарифнойСеткиНадбавки()
	
	Если ПолучитьФункциональнуюОпциюФормы("РаботаВБюджетномУчреждении") Тогда
		
		Если ЗначениеЗаполнено(Объект.ТарифнаяСеткаНадбавки) И ЗначениеЗаполнено(Объект.РазрядКатегорияНадбавки) Тогда
			
			ИдентификаторСтроки = СтрокаНачисленийКвалификационнойНадбавки(Объект.ТарифнаяСеткаНадбавки);
			Если ИдентификаторСтроки <> Неопределено Тогда
				
				Элементы.Начисления.ТекущаяСтрока = ИдентификаторСтроки;
				НачисленияПриНачалеРедактирования(Элементы.Начисления, Истина, Ложь);
				НачисленияНачислениеПриИзменении(Элементы.НачисленияНачисление);
				ОбновитьКвалификационнуюНадбавку(ИдентификаторСтроки);
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ОбновитьКвалификационнуюНадбавку(ИдентификаторСтроки)
	СтрокаНачисления = Объект.Начисления.НайтиПоИдентификатору(ИдентификаторСтроки);
	НачислениеКвалификационнаяНадбавка = СтрокаНачисления.Начисление;
КонецФункции

&НаСервере
Функция СтрокаНачисленийКвалификационнойНадбавки(ТарифнаяСеткаНадбавки = Неопределено)
	
	Если ЗначениеЗаполнено(ТарифнаяСеткаНадбавки)
		И ЗначениеЗаполнено(ТарифнаяСеткаНадбавки.Начисление) Тогда
		Возврат СтрокаНачисленийПоКодуНачисления(ТарифнаяСеткаНадбавки.Начисление, НачислениеКвалификационнаяНадбавка);
	КонецЕсли;
	
	КодНачисления = "НКК";
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
		МодульМедицина = ОбщегоНазначения.ОбщийМодуль("Медицина");
		Если МодульМедицина.РаботаВМедицинскомУчреждении() Тогда
			КодНачисления = "НККП";
		КонецЕсли;
	ИначеЕсли ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
		МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
		Если МодульГосударственнаяСлужба.ЭтоДолжностьГосударственнойСлужбы(ЭтотОбъект) Тогда
			КодНачисления = "ЕМКВН";
		КонецЕсли;
	КонецЕсли;
	
	Возврат СтрокаНачисленийПоКодуНачисления(КодНачисления);
	
КонецФункции

&НаСервере
Функция СтрокаНачисленийПоКодуНачисления(КодНачисления, ЗамещаемоеНачисление = Неопределено)
	
	ИдентификаторДобавленнойСтроки = Неопределено;
	Если ТипЗнч(КодНачисления) = Тип("ПланВидовРасчетаСсылка.Начисления") Тогда
		ИскомыеНачисления = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КодНачисления);
	Иначе
		ИскомыеНачисления = ПланыВидовРасчета.Начисления.НачисленияПоОтбору(Новый Структура("Код", КодНачисления), "");
	КонецЕсли;
	
	Если ИскомыеНачисления.Количество() > 0 Тогда
		
		НачислениеЕстьВСписке = Ложь;
		Для каждого Начисление Из ИскомыеНачисления Цикл
			СтрокиОкладов = Объект.Начисления.НайтиСтроки(Новый Структура("Начисление", Начисление));
			Если СтрокиОкладов.Количество() > 0 Тогда
				НачислениеЕстьВСписке = Истина;
				ИдентификаторДобавленнойСтроки = СтрокиОкладов[0].ПолучитьИдентификатор();
				Прервать;
			КонецЕсли; 
		КонецЦикла;
		
		Если Не НачислениеЕстьВСписке
			И ЗначениеЗаполнено(ЗамещаемоеНачисление) Тогда
			СтрокиОкладов = Объект.Начисления.НайтиСтроки(Новый Структура("Начисление", ЗамещаемоеНачисление));
			Если СтрокиОкладов.Количество() > 0 Тогда
				НачислениеЕстьВСписке = Истина;
				СтрокиОкладов[0].Начисление = ИскомыеНачисления[0];
				ИдентификаторДобавленнойСтроки = СтрокиОкладов[0].ПолучитьИдентификатор();
			КонецЕсли;
		КонецЕсли;
			
		Если Не НачислениеЕстьВСписке Тогда
			
			СтрокаНачислений = Объект.Начисления.Добавить();
			СтрокаНачислений.Начисление = ИскомыеНачисления[0];
			
			Если Объект.Начисления.Количество() > 1 Тогда
				
				ТаблицаНачислений = Объект.Начисления.Выгрузить();
				
				Запрос = Новый Запрос;
				Запрос.УстановитьПараметр("Начисления", ТаблицаНачислений);
				
				Запрос.Текст =
					"ВЫБРАТЬ
					|	*
					|ПОМЕСТИТЬ ВТНачисления
					|ИЗ
					|	&Начисления КАК Начисления
					|;
					|
					|////////////////////////////////////////////////////////////////////////////////
					|ВЫБРАТЬ
					|	*,
					|	ВЫРАЗИТЬ(Начисления.Начисление КАК ПланВидовРасчета.Начисления).РеквизитДопУпорядочивания КАК Порядок
					|ИЗ
					|	ВТНачисления КАК Начисления
					|
					|УПОРЯДОЧИТЬ ПО
					|	Порядок";
					
				Объект.Начисления.Загрузить(Запрос.Выполнить().Выгрузить());
				
				СтрокаНачислений = Объект.Начисления.НайтиСтроки(Новый Структура("Начисление", ИскомыеНачисления[0]))[0];
				
			КонецЕсли; 
			
			ИдентификаторДобавленнойСтроки = СтрокаНачислений.ПолучитьИдентификатор();
		КонецЕсли;
			
	КонецЕсли;
	
	Возврат ИдентификаторДобавленнойСтроки;
	
КонецФункции

&НаСервере
Процедура УстановитьДоступностьИндивидуальныхЛьгот()
	
	Если ДоступныВсеЛьготы = 0 Тогда 
		ИндивидуальныеЛьготы.Очистить();
	КонецЕсли;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИндивидуальныеЛьготы", "ТолькоПросмотр", ДоступныВсеЛьготы = 0);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПолеКлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений(Форма)
	
	ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(Форма, "КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений", "КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийСтрокой");
	
	Форма.Элементы.КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений.АвтоОтметкаНезаполненного = Форма.Элементы.КлассыУсловийТрудаПоДолжностямПериод.АвтоОтметкаНезаполненного;
	
	Если Не Форма.Элементы.КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений.АвтоОтметкаНезаполненного
		И Не ЗначениеЗаполнено(Форма.КлассыУсловийТрудаПоДолжностям.Период) Тогда
		
		Форма.Элементы.КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений.ОтметкаНезаполненного = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПрочитатьКлассыУсловийТрудаПоДолжностям()
	
	РедактированиеПериодическихСведений.ПрочитатьЗаписьДляРедактированияВФорме(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", СсылкаНаОбъект);
	Если Не ЗначениеЗаполнено(КлассыУсловийТрудаПоДолжностям.КлассУсловийТруда) И ЗначениеЗаполнено(Объект.Должность) Тогда
		УстановитьКлассУсловийТрудаПоДолжности();
	КонецЕсли;
	
	ОбновитьПолеКлассыУсловийТрудаПоДолжностямПериод(ЭтотОбъект);
	ОбновитьПолеКлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьКлассУсловийТрудаПоДолжности()
	
	Если Не КлассыУсловийТрудаДоступныДляИзменения Тогда
		Возврат;
	КонецЕсли;
	
	ПозицияШР = ?(ЗначениеЗаполнено(РедактируемаяПозиция), РедактируемаяПозиция, СсылкаНаОбъект);
	РедактированиеПериодическихСведений.ПрочитатьЗаписьДляРедактированияВФорме(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", Объект.Должность);
	КлассУсловийТрудаПоДолжности = Новый Структура;
	КлассУсловийТрудаПоДолжности.Вставить("Период", КлассыУсловийТрудаПоДолжностям.Период);
	КлассУсловийТрудаПоДолжности.Вставить("ДатаРегистрацииИзменений", КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений);
	КлассУсловийТрудаПоДолжности.Вставить("КлассУсловийТруда", КлассыУсловийТрудаПоДолжностям.КлассУсловийТруда);
	КлассУсловийТрудаПоДолжности.Вставить("Должность", ПозицияШР);
	РедактированиеПериодическихСведений.ПрочитатьЗаписьДляРедактированияВФорме(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", ПозицияШР);
	Если Не ЗначениеЗаполнено(КлассыУсловийТрудаПоДолжностям.КлассУсловийТруда) Тогда
		ЗаполнитьЗначенияСвойств(КлассыУсловийТрудаПоДолжностям, КлассУсловийТрудаПоДолжности);
		КлассыУсловийТрудаПоДолжностямНоваяЗапись = Истина;
		Если ВнешниеДанные Тогда
			КлассыУсловийТрудаПоДолжностям.Период = НачалоМесяца(Объект.ДатаУтверждения);
		КонецЕсли;
	КонецЕсли;
	РедактированиеПериодическихСведенийКлиентСервер.ОбновитьОтображениеПолейВвода(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", ПозицияШР);
	КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений = НачалоМесяца(КлассыУсловийТрудаПоДолжностям.Период);
	ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений", "КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийСтрокой");
	ОбновитьПолеКлассыУсловийТрудаПоДолжностямДатаРегистрацииИзменений(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ЗаписатьКлассыУсловийТрудаПоДолжностям()
	
	Если ПолучитьФункциональнуюОпцию("ПрименятьРезультатыСпециальнойОценкиУсловийТруда") Тогда
		ДополнительныеСвойства = Новый Структура("ОбновитьНастройкиИспользованияСтраховыхВзносовПоКлассамУсловийТруда", Ложь);
		РедактированиеПериодическихСведений.ЗаписатьЗаписьПослеРедактированияВФорме(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям", СсылкаНаОбъект, , ДополнительныеСвойства);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПрочитатьНаборЗаписейПериодическихСведений(ИмяРегистра, ВедущийОбъект) Экспорт
	
	РедактированиеПериодическихСведений.ПрочитатьНаборЗаписей(ЭтотОбъект, ИмяРегистра, ВедущийОбъект);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПолеКлассыУсловийТрудаПоДолжностямПериод(Форма)
	
	ПозицияШР = ?(ЗначениеЗаполнено(Форма.РедактируемаяПозиция), Форма.РедактируемаяПозиция, Форма.СсылкаНаОбъект);
	РедактированиеПериодическихСведенийКлиентСервер.ОбновитьОтображениеПолейВвода(Форма, "КлассыУсловийТрудаПоДолжностям", ПозицияШР);
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьДатуРегистрацииКлассаУсловийТрудаПоПериоду()
	
	КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений = НачалоМесяца(КлассыУсловийТрудаПоДолжностям.Период);
	ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтотОбъект, "КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений", "КлассыУсловийТрудаПоДолжностямДатаРегистрацииИзмененийСтрокой");
	
КонецПроцедуры

&НаСервере
Процедура ПрочитатьТерриториальныеУсловияДополнительныеПФР(ЗначениеКопирования = Неопределено)
	
	ИсточникСведений = Неопределено;
	Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
		ИсточникСведений = СсылкаНаОбъект;
	ИначеЕсли ЗначениеЗаполнено(ЗначениеКопирования) Тогда 
		ИсточникСведений = ЗначениеКопирования;
	ИначеЕсли ЗначениеЗаполнено(Объект.Подразделение) Тогда 
		ИсточникСведений = Объект.Подразделение;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ИсточникСведений) Тогда
		Возврат;
	КонецЕсли;
	
	Отбор = Новый Структура("СтруктурнаяЕдиница", ИсточникСведений);
	Выборка = РегистрыСведений.ТерриториальныеУсловияДополнительныеПФР.Выбрать(Отбор);
	
	Если Выборка.Следующий() И Выборка.ТерриториальныеУсловияПФР = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ТерриториальныеУсловияПФР.СЕЛО") Тогда 
		РаботаВСельскомХозяйстве = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаписатьТерриториальныеУсловияДополнительныеПФР()
	
	ПерсонифицированныйУчетРасширенный.ЗаписатьТерриториальныеУсловияДополнительныеПФР(СсылкаНаОбъект, РаботаВСельскомХозяйстве);
	
КонецПроцедуры

&НаСервере
Процедура ПрочитатьДанныеДолжностиСФР(ДанныеДолжности = Неопределено)
	
	Если Не ЗначениеЗаполнено(Объект.Должность) Тогда 
		Возврат;
	КонецЕсли;
	
	Если ДанныеДолжности = Неопределено Тогда 
		ДанныеДолжности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Должность, "ЯвляетсяДолжностьюЛетногоЭкипажа, ЯвляетсяШахтерскойДолжностью");
	КонецЕсли;
	
	ЗаполнитьЗначенияСвойств(ЭтаФорма, ДанныеДолжности, "ЯвляетсяДолжностьюЛетногоЭкипажа, ЯвляетсяШахтерскойДолжностью");
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////// 
// ПРОЦЕДУРЫ ПОДСИСТЕМЫ "СВОЙСТВ"

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект, РеквизитФормыВЗначение("Объект"));

КонецПроцедуры

&НаСервере
Функция АдресДанныхПозицииВХранилище()
	
	РеквизитыВДанные(Объект);
	
	ОписаниеПозиции = УправлениеШтатнымРасписанием.ОписаниеПозицииШтатногоРасписания();
	ЗаполнитьЗначенияСвойств(ОписаниеПозиции, Объект);
	ОписаниеПозиции.Вставить("Действие", Действие);
	ОписаниеПозиции.Вставить("ТекущееКоличествоСтавок", ТекущееКоличествоСтавок);
	ОписаниеПозиции.Вставить("ТекущийФОТ", ТекущийФОТ);
	
	ОписаниеПозиции.ПозицияШтатногоРасписания = РедактируемаяПозиция;
	
	// Класс условий труда
	ОписаниеПозиции.Вставить("КлассУсловийТруда", КлассыУсловийТрудаПоДолжностям.КлассУсловийТруда);
	ОписаниеПозиции.Вставить("КлассУсловийТрудаДатаРегистрацииИзменений", КлассыУсловийТрудаПоДолжностям.ДатаРегистрацииИзменений);
	
	// Начисления с показателями
	ОписаниеПозиции.Начисления = Объект.Начисления.Выгрузить();
	
	// Показатели и коэффициенты.
	ПоказателиПозиции =  Объект.Показатели.Выгрузить();
	ОписаниеПозиции.Вставить("Показатели",	ПоказателиПозиции);
	
	ОписаниеПозиции.ЕжегодныеОтпуска = Объект.ЕжегодныеОтпуска.Выгрузить();
	
	ОписаниеПозиции.Специальности = Объект.Специальности.Выгрузить();
	
	СтатистикаПерсоналаРасширенный.ПоместитьКатегориюПерсоналаВОписаниеПозиции(ЭтотОбъект, ОписаниеПозиции);

	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина.ТарификационнаяОтчетностьУчрежденийФМБА") Тогда
		МодульТарификационнаяОтчетностьУчрежденийФМБА = ОбщегоНазначения.ОбщийМодуль("ТарификационнаяОтчетностьУчрежденийФМБА");
		МодульТарификационнаяОтчетностьУчрежденийФМБА.ПоместитьТарификационнуюГруппуВОписаниеПозиции(ЭтотОбъект, ОписаниеПозиции);
	КонецЕсли;

	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОрганизационнаяСтруктура") Тогда
		МодульОрганизационнаяСтруктура = ОбщегоНазначения.ОбщийМодуль("ОрганизационнаяСтруктура");
		МодульОрганизационнаяСтруктура.ЗаполнитьМестоВСтруктуреПредприятияПоДаннымФормы(ЭтотОбъект, ОписаниеПозиции);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаФормы = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаФормы");
		МодульУправленческаяЗарплатаФормы.ПоместитьДанныеОНачисленияхВОписаниеПозиции(ЭтотОбъект, Объект, ОписаниеПозиции);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ПоместитьХарактеристикиПерсоналаВОписаниеПозиции(ЭтотОбъект, ОписаниеПозиции);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
		МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
		МодульЛьготыСотрудников.ПоместитьЛьготыВОписаниеПозиции(ЭтотОбъект, ОписаниеПозиции);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитие = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитие.ПоместитьОбучениеВОписаниеПозиции(ЭтотОбъект, ОписаниеПозиции);
	КонецЕсли;

	Возврат ПоместитьВоВременноеХранилище(ОписаниеПозиции, УникальныйИдентификатор);
	
КонецФункции

&НаСервере
Процедура УстановитьДоступностьСведенийПозиции()
	
	Если ВнешниеДанные Тогда
		
		ДоступностьСведений = ЗначениеЗаполнено(РедактируемаяПозиция);
		Если НЕ ДоступностьСведений Тогда
			ДоступностьСведений = ЗначениеЗаполнено(Объект.Подразделение) И ЗначениеЗаполнено(Объект.Должность);
		КонецЕсли; 
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"ОткрытаЗакрытаГруппа",
			"Доступность",
			ДоступностьСведений);
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"СтраницыФормы",
			"Доступность",
			ДоступностьСведений);
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"КомандаОК",
			"Доступность",
			ДоступностьСведений);
			
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПредставлениеОкладаИФОТ(Форма)
	
	ФорматнаяСтрока = "ЧДЦ=2";
	
	Если Форма.ИспользоватьВилкуСтавок Тогда
		
		Если Форма.Объект.ОкладТарифМин < Форма.Объект.ОкладТарифМакс Тогда
			Форма.Оклад = Формат(Форма.Объект.ОкладТарифМин, ФорматнаяСтрока) + " - " + Формат(Форма.Объект.ОкладТарифМакс, ФорматнаяСтрока);
		ИначеЕсли Форма.Объект.ОкладТарифМин > 0 И Форма.Объект.ОкладТарифМин = Форма.Объект.ОкладТарифМакс Тогда
			Форма.Оклад = Формат(Форма.Объект.ОкладТарифМин, ФорматнаяСтрока);
		Иначе
			Форма.Оклад = "";
		КонецЕсли;
		
		Если Форма.Объект.ФОТМин < Форма.Объект.ФОТМакс Тогда
			Форма.ФОТ = Формат(Форма.Объект.ФОТМин, ФорматнаяСтрока) + " - " + Формат(Форма.Объект.ФОТМакс, ФорматнаяСтрока);
		ИначеЕсли Форма.Объект.ФОТМин > 0 И Форма.Объект.ФОТМин = Форма.Объект.ФОТМакс Тогда
			Форма.ФОТ = Формат(Форма.Объект.ФОТМин, ФорматнаяСтрока);
		Иначе
			Форма.ФОТ = "";
		КонецЕсли;
		
	Иначе
		
		Форма.Оклад = Формат(Форма.Объект.ОкладТариф, ФорматнаяСтрока);
		Форма.ФОТ = Формат(Форма.Объект.ФОТ, ФорматнаяСтрока);
		
	КонецЕсли;
	
	Если ОбщегоНазначенияБЗККлиентСервер.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиентСервер = ОбщегоНазначенияБЗККлиентСервер.ОбщийМодуль("УправленческаяЗарплатаКлиентСервер");
		МодульУправленческаяЗарплатаКлиентСервер.УстановитьПредставлениеФОТ(Форма);
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьУтвердившийИЗакрывшийРегистраторы()
	
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, УправлениеШтатнымРасписаниемФормы.ИнформацияОбУтвержденииИЗакрытииПозиции(Объект.Ссылка));
	
	Если ЗначениеЗаполнено(Объект.ДатаУтверждения) Тогда
		УтвердившийРегистраторНадпись = Новый ФорматированнаяСтрока(
				НСтр("ru='Утверждена'") + " " + Формат(Объект.ДатаУтверждения, "ДЛФ=DD") + " (",
				Новый ФорматированнаяСтрока(Строка(УтвердившийРегистратор),,,,"УтвердившийРегистратор"),
				")");
	Иначе
		УтвердившийРегистраторНадпись = "";
	КонецЕсли; 
	
	Если ЗначениеЗаполнено(Объект.ДатаЗакрытия) Тогда
		ЗакрывшийРегистраторНадпись = Новый ФорматированнаяСтрока(
				НСтр("ru='Закрыта'") + " " + Формат(Объект.ДатаЗакрытия, "ДЛФ=DD") + " (",
				Новый ФорматированнаяСтрока(Строка(ЗакрывшийРегистратор),,,,"ЗакрывшийРегистратор"),
				")");
	Иначе
		ЗакрывшийРегистраторНадпись = "";
	КонецЕсли; 
	
КонецПроцедуры

#Область Подключаемый_КадровыйРезерв

&НаСервереБезКонтекста
Функция ПолучитьПозициюРезерваПоСсылке(НавигационнаяСсылка)
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКадровыйРезерв = ОбщегоНазначения.ОбщийМодуль("КадровыйРезерв");
		Возврат МодульКадровыйРезерв.ПолучитьПозициюРезерваПоСсылке(НавигационнаяСсылка);
	Иначе
		Возврат Неопределено;
	КонецЕсли;
КонецФункции

&НаСервере
Процедура ОбновитьЭлементыКадровогоРезерва()
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКадровыйРезервФормы = ОбщегоНазначения.ОбщийМодуль("КадровыйРезервФормы");
		МодульКадровыйРезервФормы.ОбновитьКадровыйРезервПозицииШР(ЭтотОбъект);
		МодульКадровыйРезервФормы.УстановитьЗначениеСвязаннойПозицииРезерва(ЭтотОбъект);
		МодульКадровыйРезервФормы.СформироватьИнфоСтрокуГруппРезерва(ЭтотОбъект);
		МодульКадровыйРезервФормы.УстановитьСвойстваЭлементовФормыШтатногоРасписания(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПоставитьРейтингНаКлиенте(Рейтинг)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
		ТекущиеДанные = МодульКлиент.ТекущиеДанныеТаблицы(ЭтотОбъект);
		Если ТекущиеДанные <> Неопределено Тогда
			ПоставитьРейтингНаСервере(ТекущиеДанные, Рейтинг);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПоставитьРейтингНаСервере(ТекущиеДанные, Рейтинг)
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
		МодульКадровыйРезерв = ОбщегоНазначения.ОбщийМодуль("КадровыйРезерв");
		МодульКадровыйРезерв.ПоставитьРейтинг(ТекущиеДанные.ПозицияРезерва, ТекущиеДанные.УчастникКадровогоРезерва, Рейтинг);
		МодульКадровыйРезервФормы = ОбщегоНазначения.ОбщийМодуль("КадровыйРезервФормы");
		МодульКадровыйРезервФормы.ОбновитьКадровыйРезервПозицииШР(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ЗаписьЭлемента

&НаКлиенте
Процедура ЗаписатьИЗакрытьНаКлиенте(Результат, ДополнительныеПараметры) Экспорт 
	
	ЗаписатьНаКлиенте(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьНаКлиенте(ЗакрытьПослеЗаписи, ОповещениеЗавершения = Неопределено) 

	ОценкаПроизводительностиКлиент.ЗамерВремени("ЗаписьЭлементаСправочникаШтатноеРасписание");
	
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("ЗакрытьПослеЗаписи", ЗакрытьПослеЗаписи);
	ДополнительныеПараметры.Вставить("ОповещениеЗавершения", ОповещениеЗавершения);
	
	Оповещение = Новый ОписаниеОповещения("ЗаписатьНаКлиентеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	
	ТекстКнопкиДа = НСтр("ru = 'Изменились сведения о классе условий труда'");
	ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = 'При редактировании были изменены сведения о классе условий труда.
		|Если были исправлены прежние сведения о классе условий труда (они были ошибочными), нажмите ""Исправлена ошибка"".
		|Если сведения о классе условий труда изменились с %1, нажмите ""%2""'"), 
		Формат(КлассыУсловийТрудаПоДолжностям.Период, "ДФ='ММММ гггг ""г""'"),
		ТекстКнопкиДа);
	
	РедактированиеПериодическихСведенийКлиент.ЗапроситьРежимИзмененияРегистра(ЭтотОбъект,"КлассыУсловийТрудаПоДолжностям", ТекстВопроса, ТекстКнопкиДа, Ложь, Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьНаКлиентеЗавершение(Отказ, ДополнительныеПараметры) Экспорт 

	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	ПараметрыЗаписи = Новый Структура("ПроверкаПередЗаписьюВыполнена", Истина);
	
	Если ДополнительныеПараметры.ОповещениеЗавершения <> Неопределено Тогда 
		ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеЗавершения, ПараметрыЗаписи);
	ИначеЕсли УправлениеШтатнымРасписаниемКлиент.СохранитьДанныеОбъектаФормы(ЭтотОбъект, ПараметрыЗаписи)
		И ДополнительныеПараметры.ЗакрытьПослеЗаписи Тогда
		
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

&НаСервере
Процедура ЗаполнитьЗначенияСтажевыхРеквизитовВСтроке(ИдентификаторСтроки)
	ТекущиеДанные = Объект.ЕжегодныеОтпуска.НайтиПоИдентификатору(ИдентификаторСтроки);
	ОстаткиОтпусков.ЗаполнитьЗначенияСтажевыхРеквизитовВСтроке(ТекущиеДанные);
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНачислениеНадбавкаЗаВредность()
	
	Если ПолучитьФункциональнуюОпцию("ИспользоватьНадбавкуЗаВредность") Тогда
		
		Если Не ЗначениеЗаполнено(НачислениеНадбавкаЗаВредность) Тогда
			
			НачисленияНадбавкаЗаВредность = ПланыВидовРасчета.Начисления.НачислениеНадбавкаЗаВредность();
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
				Элементы,
				"ВыплачиваетсяНадбавкаЗаВредность",
				"Заголовок",
				УправлениеШтатнымРасписаниемКлиентСервер.ПредставлениеНадбавкиЗаВредность(НачислениеНадбавкаЗаВредность));
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНачислениеКвалификационнаяНадбавка()

	Если ЗначениеЗаполнено(Объект.ТарифнаяСеткаНадбавки) Тогда
		ИдентификаторСтроки = СтрокаНачисленийКвалификационнойНадбавки(Объект.ТарифнаяСеткаНадбавки);
		Если ИдентификаторСтроки <> Неопределено Тогда
			СтрокаНачисления = Объект.Начисления.НайтиПоИдентификатору(ИдентификаторСтроки);
			НачислениеКвалификационнаяНадбавка = СтрокаНачисления.Начисление;
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

#Область УправленческаяЗарплата

&НаКлиенте
Процедура Подключаемый_ПриИзмененииНастройкиУправленческойЗарплаты(Элемент)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.ПриИзмененииНастройкиУправленческойЗарплатыПозицииШтатногоРасписания(ЭтотОбъект, Элемент);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправленческиеНачисленияПриАктивизацииСтроки(Элемент)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.УправленческиеНачисленияПриАктивизацииСтроки(ЭтотОбъект, Элемент);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправленческиеНачисленияПередУдалением(Элемент, Отказ)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.УправленческиеНачисленияПередУдалением(ЭтотОбъект, Элемент, Отказ);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправленческиеНачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.УправленческиеНачисленияПриНачалеРедактирования(ЭтотОбъект, Элемент, НоваяСтрока, Копирование);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправленческиеНачисленияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.УправленческиеНачисленияПриОкончанииРедактирования(ЭтотОбъект, Элемент, НоваяСтрока, ОтменаРедактирования);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправленческиеНачисленияПослеУдаления(Элемент)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.УправленческиеНачисленияПослеУдаления(ЭтотОбъект, Элемент);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправленческиеНачисленияНачислениеПриИзменении(Элемент)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
		МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
		МодульУправленческаяЗарплатаКлиент.УправленческиеНачисленияНачислениеПриИзменении(ЭтотОбъект, Элемент);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаУтвержденияПриИзменении(Элемент)
	ЗаполнитьПравамиНаОтпускаНаСервере();
	УстановитьВидимостьЕНВД(Элементы, 
		ИспользуетсяЕНВД(Объект.ДатаУтверждения));
КонецПроцедуры

#КонецОбласти

&НаСервере
Процедура ЗаполнитьПравамиНаОтпускаНаСервере()

	ОстаткиОтпусков.ЗаполнитьПоложеннымиПравамиПозициюШР(Объект.ЕжегодныеОтпуска, Объект.Подразделение, Объект.Должность, Объект.ДатаУтверждения);

КонецПроцедуры

#Область АдаптацияУвольнение

&НаСервере
Функция ЗаголовкиГруппСтраницыАдаптацияУвольнение() Экспорт
	
	ЗаголовкиГрупп = Новый Структура();
	ЗаголовкиГрупп.Вставить("МероприятияАдаптацииГруппа", НСтр("ru = 'При приеме или переводе на позицию назначается задание'"));
	ЗаголовкиГрупп.Вставить("МероприятияУвольненияГруппа", НСтр("ru = 'При увольнении или переводе с позиции назначается задание'"));
	
	Возврат ЗаголовкиГрупп;
	
КонецФункции

#КонецОбласти

&НаСервере
Процедура УстановитьНастройкиЭлементовВводаГрафика()
	НастройкиУчетаВремени = УчетРабочегоВремениРасширенный.НастройкиУчетаВремени();	
	
	Если Объект.ГрафикРаботыСотрудников = Неопределено Тогда
		Объект.ГрафикРаботыСотрудников = Справочники.ГрафикиРаботыСотрудников.ПустаяСсылка();
		ГрафикРаботыРежимРаботы = 0;
	ИначеЕсли ТипЗнч(Объект.ГрафикРаботыСотрудников) = Тип("СправочникСсылка.РежимыРаботыСотрудников") Тогда
		ГрафикРаботыРежимРаботы = 1;
	Иначе
		ГрафикРаботыРежимРаботы = 0;
	КонецЕсли;	

	Если НастройкиУчетаВремени.ИспользоватьРежимыРаботы Тогда
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГрафикРаботыРежимРаботыВыбор", "Видимость", Истина);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГрафикРаботыСотрудников", "ПоложениеЗаголовка", ПоложениеЗаголовкаЭлементаФормы.Нет);		
	Иначе
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГрафикРаботыРежимРаботыВыбор", "Видимость", Ложь);	
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГрафикРаботыСотрудников", "ПоложениеЗаголовка", ПоложениеЗаголовкаЭлементаФормы.Лево);	
		
		ТипГрафикРаботы = Новый ОписаниеТипов("СправочникСсылка.ГрафикиРаботыСотрудников");
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГрафикРаботыСотрудников", "ОграничениеТипа", ТипГрафикРаботы);
	КонецЕсли;		
КонецПроцедуры

#Область ДействияХарактеристики

&НаСервере
Процедура Подключаемый_ДобавитьХарактеристикиИзДействийНаСервере(МассивДобавленныхДействий) Экспорт
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ШтатноеРасписаниеДобавитьХарактеристикиИзДействийНаСервере(ЭтотОбъект, МассивДобавленныхДействий);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ДобавитьХарактеристикиПерсоналаНаКлиенте(НовыеХарактеристики, ДополнительныеПараметры = Неопределено) Экспорт
	Подключаемый_ДобавитьХарактеристикиПерсоналаНаСервере(НовыеХарактеристики, ДополнительныеПараметры);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ДобавитьХарактеристикиПерсоналаНаСервере(НовыеХарактеристики, ДополнительныеПараметры)
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ШтатноеРасписаниеДобавитьХарактеристикиВТабличнуюЧасть(ЭтотОбъект, НовыеХарактеристики, ДополнительныеПараметры);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ЗаполнитьДействияХарактеристикиИзПрофиляНаСервере() Экспорт
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ХарактеристикиПерсонала") Тогда
		МодульХарактеристикиПерсоналаФормы = ОбщегоНазначения.ОбщийМодуль("ХарактеристикиПерсоналаФормы");
		МодульХарактеристикиПерсоналаФормы.ШтатноеРасписаниеЗаполнитьДействияХарактеристикиИзПрофиляНаСервере(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ПрограммаОбучения

&НаСервере
Процедура Подключаемый_ЗаполнитьПрограммуОбученияИзПрофиляНаСервере() Экспорт
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеЗаполнитьПрограммуОбученияИзПрофиляНаСервере(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ЗаполнитьВторичныеДанныеОбученияНаСервере(ИдентификаторТекущейСтроки) Экспорт
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеЗаполнитьВторичныеДанныеОбученияНаСервере(ЭтотОбъект, ИдентификаторТекущейСтроки);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция Подключаемый_АдресХарактеристикПерсонала() Экспорт
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		Возврат МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеАдресХарактеристикПерсонала(ЭтотОбъект);
	КонецЕсли;
КонецФункции

&НаСервере
Функция Подключаемый_АдресПрограммыОбучения() Экспорт
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		Возврат МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеАдресПрограммыОбучения(ЭтотОбъект);
	КонецЕсли;
КонецФункции

&НаСервере
Процедура Подключаемый_ПересоздатьКолонкиПериодовПрограммыОбучения() Экспорт
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеПересоздатьКолонкиПериодовПрограммыОбучения(ЭтотОбъект);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ЗагрузитьПрограммуОбученияНаКлиенте(Результат, ДополнительныеПараметры = Неопределено) Экспорт
	Подключаемый_ЗагрузитьПрограммуОбученияНаСервере(Результат, ДополнительныеПараметры);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ЗагрузитьПрограммуОбученияНаСервере(Результат, ДополнительныеПараметры)
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
		МодульОбучениеРазвитиеФормы = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитиеФормы");
		МодульОбучениеРазвитиеФормы.ШтатноеРасписаниеЗагрузитьПрограммуОбучения(ЭтотОбъект, Результат);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьЕНВД(ЭлементыФормы, ИспользуетсяЕНВД)

	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		ЭлементыФормы,
		"ОтношениеКЕНВД",
		"Видимость",
		ИспользуетсяЕНВД);
		
КонецПроцедуры

&НаСервереБезКонтекста
Функция ИспользуетсяЕНВД(Период)

	Возврат ОтражениеЗарплатыВБухучете.ИспользуетсяЕНВД(Период);

КонецФункции

&НаСервере
Процедура УстановитьВидимостьПолейВидаСтажаСФР()
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ВидСтажаЛетныхЭкипажей",
		"Видимость",
		ЯвляетсяДолжностьюЛетногоЭкипажа);	
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ВидСтажаШахтеров",
		"Видимость",
		ЯвляетсяШахтерскойДолжностью);	
	
КонецПроцедуры

#Область Подключаемый_ЛьготыСотрудников

&НаСервереБезКонтекста
Процедура ЗаполнитьПозициюЛьготамиПоУмолчанию(Форма)

	Если Форма.СуществующаяПозиция Тогда 
		Возврат;
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
		МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
		МодульЛьготыСотрудников.ПрочитатьЛьготыПозиции(Форма, Неопределено, ОписаниеТаблицыЛьгот(), , "ИндивидуальныеЛьготы");
		МодульЛьготыСотрудников.ПрочитатьЛимитыЛьготПозиции(Форма, Неопределено);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

Связанные материалы