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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

#Область РеквизитыПервичногоДокумента

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

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

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

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

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

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

&НаКлиенте
Процедура ДатаПервичногоДокументаОчистка(Элемент, СтандартнаяОбработка)
	Объект.ДатаПервичногоДокумента = Дата(1,1,1);
	Модифицированность = Истина;
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область РаспределениеПоТерриториямУсловиямТруда

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбработчикОжиданияМесяцНачисленияПриИзменении()
	
	ПриИзмененииМесяцаНачисления();
	
КонецПроцедуры

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ ПОДСИСТЕМЫ "АНАЛИЗ ТЕКУЧЕСТИ ПЕРСОНАЛА"

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

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

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

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

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

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

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


#Область ПособияСоциальногоСтрахования

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

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

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

// Конец ЗарплатаКадрыРасширеннаяПодсистемы.ПособияСоциальногоСтрахования

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

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

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

// ЭДОБЗК

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

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

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

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