Прием на работу списком / Форма строки / Модуль формы

файл

#Область ОписаниеПеременных

&НаКлиенте
Перем ИдентификаторЗамераПроведениеНеНужнаРегистрацияОшибки;

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


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

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

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

	УстановитьВидимостьПредупрежденияПоОплатеТруда();
	
КонецПроцедуры

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

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

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

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

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


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

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

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

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	
	ОрганизацияПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ТерриторияПриИзменении(Элемент)
	
	ТерриторияПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

// Обработчик подсистемы "ПодписиДокументов".
&НаКлиенте
Процедура Подключаемый_ПодписиДокументовЭлементПриИзменении(Элемент) 
	ПодписиДокументовКлиент.ПриИзмененииПодписывающегоЛица(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПодписиДокументовЭлементНажатие(Элемент) 
	ПодписиДокументовКлиент.РасширеннаяПодсказкаНажатие(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
// Конец Обработчик подсистемы "ПодписиДокументов".

#Область КадровыеРешения

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

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

// ЗарплатаКадрыПодсистемы.КадровыйУчет.ЭлектронныеТрудовыеКнижки

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

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

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

&НаКлиенте
Процедура НаименованиеДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаОбработкаВыбора(
		Объект.НаименованиеДокумента, ВыбранноеЗначение, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура НаименованиеДокументаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаАвтоПодбор(
		Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

// Конец ЗарплатаКадрыПодсистемы.КадровыйУчет.ЭлектронныеТрудовыеКнижки

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

// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()

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

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


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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ПересчитатьИтогиФОТДокумента(Элемент)
	
	РассчитатьИтогиПоФОТ(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СрочныйДоговорПриИзменении(Элемент)
	СрочныйДоговорПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ВидДоговораПриИзменении(Элемент)
	ВидДоговораПриИзмененииНаСервере();
	ВидДоговораПредыдущий = Объект.ВидДоговора;
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_ГрейдПриИзменении(Элемент)
	
	ГрейдПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура БронированиеПозицииПриИзменении(Элемент)
	
	Если Объект.БронированиеПозиции Тогда
		УстановитьЗначениеНачисленияУтверждены(Ложь);
	КонецЕсли;
	
КонецПроцедуры

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыБухучетНачисленийРедактируемыхВОтдельныхПолях

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

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

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

// ИнтеграцияС1САрхивом

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

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

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

// Конец ИнтеграцияС1САрхивом

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

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

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

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

// БлокировкаИзмененияОбъектов

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

// Конец БлокировкаИзмененияОбъектов

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

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

	ОткрытьФорму("Документ.ПриемНаРаботу.Форма.ФормаРедактированияПравНаОтпуск", ПараметрыОткрытия, ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура КомандаПровестиИЗакрыть(Команда) Экспорт
	
	ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
	ЗаписатьНаКлиенте(Истина, ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПровести(Команда)
	
	ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
	ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаЗаписать(Команда)
	
	ПараметрыЗаписи = Новый Структура("РежимЗаписи", ?(Объект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
	ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ОК(Команда)
	
	ОчиститьСообщения();
	ЗавершитьРедактированиеСтрокиДокумента();
	
КонецПроцедуры

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

			Модифицированность = Ложь;
			
		КонецЕсли;
		
	Иначе
		ОписаниеДокумента = Неопределено;
	КонецЕсли;
	
	Если Не Отказ Тогда
		Закрыть(ОписаниеДокумента);
	КонецЕсли; 
	
КонецПроцедуры

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

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

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


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

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

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

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

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()

	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);

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

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

#Область ОбработчикиСобытийПроцессыОбработкиДокументов

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

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

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

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

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

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

// СтандартныеПодсистемы.КонтрольВеденияУчета

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

// Конец СтандартныеПодсистемы.КонтрольВеденияУчета

#Область ИсправлениеДокументов

&НаКлиенте
Процедура УстановитьПоляИсправленияНаКлиенте() Экспорт
	
	УстановитьПоляИсправления(ЭтаФорма);

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

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

	ИсправлениеДокументовЗарплатаКадрыКлиентСервер.УстановитьПоляИсправления(Форма, "ПериодическиеСведения");
	
КонецПроцедуры

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

#Область ИнициализацияФормы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

&НаСервере
Процедура ЗаполнитьСведенияСотрудника(ЗаполнитьДанныеДокумента = Ложь)

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПоказРазмераАванса(Форма)
	РасчетЗарплатыКлиентСервер.УстановитьПоказРазмераАванса(Форма);
КонецПроцедуры	

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РассчитатьРазмерЛьготНаКлиенте()
	
	РассчитатьРазмерЛьготНаСервере();
	
КонецПроцедуры

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ВидыСтажаВЛисткеНетрудоспособности() Экспорт 
	
	Возврат Документы.БольничныйЛист.ВидыСтажаВЛисткеНетрудоспособности();
	
КонецФункции

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

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

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

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

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


#Область ЗаписьДокумента

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

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

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

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


#Область РедактированиеДанныхКонтрактаДоговора

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

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

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

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

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

	Объект.УсловияПриема = ВведенныйТекст;
	Модифицированность = Истина;
	
КонецПроцедуры

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

	Объект.ИныеУсловияДоговора = ВведенныйТекст;
	Модифицированность = Истина;
	
КонецПроцедуры

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

	Объект.ОборудованиеРабочегоМеста = ВведенныйТекст;
	Модифицированность = Истина;
	
КонецПроцедуры

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

	Объект.СрокЗаключенияДоговора = ВведенныйТекст;
	Модифицированность = Истина;
	
КонецПроцедуры

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

	Объект.ОснованиеПредставителяНанимателя = ВведенныйТекст;
	Модифицированность = Истина;
	
КонецПроцедуры

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

	Объект.ВидАктаГосоргана = ВведенныйТекст;
	Модифицированность = Истина;
	
КонецПроцедуры

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

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

&НаСервере
Процедура ЗагрузитьЕжегодныеОтпуска(ЕжегодныеОтпуска)

	Объект.ЕжегодныеОтпуска.Загрузить(ЕжегодныеОтпуска.Выгрузить());
	
	УстановитьНадписьПраваНаОтпуск();

	Модифицированность = Истина;

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

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

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

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

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


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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция НомерСледующегоТрудовогоДоговора(Организация, НомераДоговоровТекущегоДокумента, ГодНомера)
	
	Возврат КадровыйУчетРасширенный.НомерСледующегоТрудовогоДоговора(Организация, НомераДоговоровТекущегоДокумента, ГодНомера);
	
КонецФункции

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

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

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

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

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

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

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

// ЭДОБЗК

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

// Конец ЭДОБЗК

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

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

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

&НаСервере
Функция ОписанияТаблиц()

	ОписанияТаблиц = Новый Массив;
	ОписанияТаблиц.Добавить(ОписаниеТаблицыНачислений());
	ОписанияТаблиц.Добавить(ОписаниеТаблицыЛьгот());
	
	Возврат ОписанияТаблиц;

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

&НаСервере
Функция ОписанияТаблицБухучета()

	ОписанияТаблиц = Новый Массив;
	ОписанияТаблиц.Добавить(ОписаниеТаблицыБухучетНачислений());
	ОписанияТаблиц.Добавить(ОписаниеТаблицыБухучетЛьгот());
	ОписанияТаблиц.Добавить(ОписаниеТаблицыБухучетНачисленийРедактируемыхВОтдельныхПолях());
	
	Возврат ОписанияТаблиц;

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

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

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

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

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

&НаСервере
Функция УстановитьВидимостьБухучетПлановыхНачислений()

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

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

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

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

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







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