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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПособиеДоТрехЛетПриИзменении(Элемент)
	
	ПриИзмененииВидаПособияДоТрехЛет();	
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли; 
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ТаблицаСотрудников = ТаблицаСотрудников();
	ПрочитатьДанныеСотрудников(ТаблицаСотрудников, ВремяРегистрации);	

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

	УдалитьОплатуПособийПоУходуЗаРебенкомИзРедактируемыхНачислений();
	
КонецПроцедуры	

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Функция ДанныеСотрудника(Сотрудник)
	
	СтруктураДанныхСотрудника = СтруктураОписанияДанныхСотрудника();
	
	Если ДанныеСотрудников <> Неопределено Тогда
		СведенияСотрудника = ДанныеСотрудников.Получить(Сотрудник);
		Если СведенияСотрудника <> Неопределено Тогда
			СтруктураДанныхСотрудника = СведенияСотрудника;
		КонецЕсли; 
	КонецЕсли; 
	
	Возврат СтруктураДанныхСотрудника;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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