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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РассчитатьРазмерДоплаты(Команда)
	РассчитатьЕслиФиксРасчет = Истина;
	РассчитатьДоплатуНаКлиенте();
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Обработчики событий элементов (на сервере).

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

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

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

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

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

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

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

// Механизм многофункционального документа.

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

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

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

// Автозаполнение и расчеты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если Объект.РазмерДоплаты < 0 Тогда
		Объект.РазмерДоплаты = 0;
	КонецЕсли;
	
	Объект.ФиксРасчет = Ложь;
	
	РассчитатьФОТПоДокументу();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		ДанныеПоказателя.Показатель = СтрокаСДополнительнымПоказателем.Показатель;
		ДанныеПоказателя.ДокументОснование = Неопределено;
		ДанныеПоказателя.Значение = СтрокаСДополнительнымПоказателем.Значение;
	КонецЦикла;
	
КонецПроцедуры

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

// Оформление формы (видимость, доступность, заголовки).

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

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

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

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

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

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

&НаСервере
Функция ИтоговыйФОТ(ТабличнаяЧасть)

	ИтоговыйФОТ = 0;
	Для каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
		Если СтрокаТЧ.Использовать Тогда
			ИтоговыйФОТ = ИтоговыйФОТ + СтрокаТЧ.Размер;
		КонецЕсли;
	КонецЦикла;
	
	Возврат ИтоговыйФОТ;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

// Работа с данными формы редактирования начислений.

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

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

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

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

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

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

&НаСервере
Процедура УстановитьНачислениеПоПрошлымДокументам()

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

&НаСервере
Процедура УстановитьПризнакИспользованиеПоПрошлымДокументам(ТабличнаяЧасть)

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачисленияНеУчитываемыеПриРасчетеДоплатыЗаСовмещение.Начисление КАК Начисление
		|ИЗ
		|	РегистрСведений.НачисленияНеУчитываемыеПриРасчетеДоплатыЗаСовмещение КАК НачисленияНеУчитываемыеПриРасчетеДоплатыЗаСовмещение";
		
	ИсключаемыеНачисления = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Начисление");
	
	Для каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
		СтрокаТЧ.Использовать = ИсключаемыеНачисления.Найти(СтрокаТЧ.Начисление) = Неопределено;
	КонецЦикла;

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

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

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

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

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

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

	Если Форма.Объект.БухучетУказываетсяРаспределением Тогда
		Форма.Элементы.СтраницыБухучет.ТекущаяСтраница = Форма.Элементы.СтраницаБухучетРаспределение;
	Иначе
		Форма.Элементы.СтраницыБухучет.ТекущаяСтраница = Форма.Элементы.СтраницаБухучет;
	КонецЕсли;

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

&НаСервере
Процедура ЗаполнитьПредставлениеРаспределенияБухучета()

	Элементы.ПредставлениеРаспределенияБухучета.Заголовок = ОтражениеЗарплатыВБухучетеРасширенный.ПредставлениеРаспределенияБухучетаДокумента(Объект.НастройкиБухучета);

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

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

	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ИзменитьБухучетРаспределениеЗавершениеНаСервере(Результат);
	
КонецПроцедуры 

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

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

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

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

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