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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область УчетПособий

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

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

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

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

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

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