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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	ЗаполнитьДанныеФормыПоОрганизации();
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область КлючевыеРеквизитыЗаполненияФормы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Раздел = МногофункциональныеДокументыБЗККлиентСервер.РазделыДанных().ПлановыеНачисления;
	ВсеВидыПрав = МногофункциональныеДокументыБЗККлиентСервер.ВидыПравНаРазделыДанных();
	
	ДоступноЧтениеДанныхДляНачисленияЗарплаты 
		= МногофункциональныеДокументыБЗК.ПраваНаРаздел(Раздел).Просмотр;

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

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

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

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

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

&НаСервере
Процедура СотрудникиОбработкаВыбораНаСервере(ВыбранныеСотрудники)

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

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

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

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

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

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

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

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

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

&НаКлиенте
Функция ПолучитьДанныеОЗанятыхПозициях() Экспорт
	
	Возврат ПоместитьДанныеОЗанятыхПозицияхВоВременноеХранилище();
	
КонецФункции

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

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

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

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

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

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

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

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

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

// ЭДОБЗК

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

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

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

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