Кадровый перевод списком / Форма строки / Модуль формы

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбособленноеПодразделениеПриИзменении(Элемент)

	ОбособленноеПодразделениеПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УчитыватьКакИндексациюЗаработкаПриИзменении(Элемент)
	
	Объект.КоэффициентИндексации = 0;
	РассчитатьКоэффициентИндексацииЗаработка();
	УстановитьВидимостьКоэффициентаИндексации();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьНачисленияПоПозиции(Команда)
	
	ЗаполнитьНачисленияПоПозицииНаСервере();
	ЗаполнитьБухучетДействующихНачислений(Истина, Ложь);
	УстановитьСвойствоНачисленияУтверждены();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Иначе
				
		Форма.ГрафикРаботыКомментарий = "";
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьПКУПоУмолчанию()

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

&НаСервере
Процедура ЗаполнитьРазрядПоУмолчанию()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Объект.ЕжегодныеОтпуска.Загрузить(ЕжегодныеОтпуска.Выгрузить());
	
	СформироватьНадписьПраваНаОтпуск();
	
	Модифицированность = Истина;

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура СформироватьНадписьПраваНаОтпуск()
	НадписьПраваНаОтпуск = ОстаткиОтпусков.НадписьПраваНаОтпуск(Объект.ЕжегодныеОтпуска,ТолькоПросмотр, 1);
КонецПроцедуры

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

	Объект.ИзменитьЕжегодныеОтпуска = Ложь;
	Для каждого СтрокаОтпуска Из Объект.ЕжегодныеОтпуска Цикл
		Если СтрокаОтпуска["КоличествоДнейВГод"] <> СтрокаОтпуска["ТекущееКоличествоДнейВГод"]
			ИЛИ СтрокаОтпуска.Действие = ПредопределенноеЗначение("Перечисление.ДействияСЕжегоднымиОтпусками.Отменить") Тогда
			
			Объект.ИзменитьЕжегодныеОтпуска = Истина;
			Прервать;
			
		КонецЕсли; 
	КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьДанныеПоПозицияШтатногоРасписания(ПерезаполнитьТекущиеНачисленияСотрудника)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ЭДОБЗК

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

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

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

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

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

&НаСервереБезКонтекста
Функция НастройкиБухучетаПозицииШтатногоРасписания(ДолжностьПоШтатномуРасписанию)

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

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

&НаКлиенте
Процедура УстановитьЗначениеИзменитьБухучетЗарплаты()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ИзменитьБухучетНачисленийПриИзмененииНаСервере()

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

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

&НаСервере
Процедура ИзменитьБухучетЛьготПриИзмененииНаСервере()

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

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

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

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

&НаСервере
Процедура ЗаполнитьБухучетДействующихНачислений(ЗаполнитьБухучетНачислений = Истина, ЗаполнитьБухучетЛьгот = Истина, БухучетПрежнихНачислений = Неопределено)

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

&НаСервере
Процедура ДатаОкончанияПриИзмененииНаСервере()

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

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

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

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

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











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