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

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

&НаКлиенте
Перем СтарыеЗначенияКонтролируемыхПолей;

&НаКлиенте
Перем СотрудникУдаляемойСтроки;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ПорядокВыплатыПриИзменении(Элемент)
		
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОплатаЛьготПередУдалением(Элемент, Отказ)
	
	СотрудникУдаляемойСтроки = Элемент.ТекущиеДанные.Сотрудник;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура НДФЛПередНачаломИзменения(Элемент, Отказ)
	
	// Механизм закладки примененные вычеты.
	УчетНДФЛКлиент.НДФЛПередНачаломИзменения(ЭтаФорма, Элементы.НДФЛ.ТекущиеДанные, Отказ);
	
КонецПроцедуры

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

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

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

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

	// Механизм закладки примененные вычеты.
	УчетНДФЛКлиент.НДФЛУстановитьДоступностьЭлементовЛичныхВычетов(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура НДФЛПослеУдаления(Элемент)
	
	// Механизм закладки примененные вычеты.
	УчетНДФЛКлиентРасширенный.УдалитьПримененныеВычеты(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДанныеОДетяхПредставлениеОчередностиАвтоПодбор(ПолеФормы, ВведенныйТекст, СписокВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	СписокВыбора = Новый СписокЗначений;
	ВведеннаяОчередность = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(ВведенныйТекст);
	Если ВведеннаяОчередность = 0 Тогда // Пустой текст (начало редактирования, нажатие на кнопку выбора), число 0.
		СтрокаТаблицы = Элементы.ДанныеОДетях.ТекущиеДанные;
		Если СтрокаТаблицы = Неопределено Тогда
			Начало = 1;
		Иначе
			Начало = Макс(СтрокаТаблицы.Очередность - СтрокаТаблицы.Очередность%10, 1);
		КонецЕсли;
	ИначеЕсли ВведеннаяОчередность <> Неопределено И ВведеннаяОчередность > 0 И ВведеннаяОчередность < 100 Тогда // Ввели число до 99.
		СписокВыбора.Добавить(ВведеннаяОчередность, ПредставлениеОчередностиРебенка(ВведеннаяОчередность));
		Если ВведеннаяОчередность > 9 Тогда
			Возврат; // Не требуется экстраполировать.
		КонецЕсли;
		Начало = ВведеннаяОчередность*10;
	Иначе
		ВведеннаяОчередность = ЧислительноеДоДевятиВЧисло(НРег(ВведенныйТекст));
		Если ВведеннаяОчередность <> Неопределено Тогда // Ввели числительное до девяти.
			СписокВыбора.Добавить(ВведеннаяОчередность, ПредставлениеОчередностиРебенка(ВведеннаяОчередность));
			Возврат; // Не требуется экстраполировать.
		КонецЕсли;
		Начало = 1;
	КонецЕсли;
	Окончание = ?(Начало = 1, 9, Начало+9);
	Для Очередность = Начало По Окончание Цикл
		СписокВыбора.Добавить(Очередность, ПредставлениеОчередностиРебенка(Очередность));
	КонецЦикла;
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеОчередностиРебенка(Очередность)
	Если Очередность = 1 Тогда
		Возврат НСтр("ru = 'Первый ребенок'");
	ИначеЕсли Очередность = 2 Тогда
		Возврат НСтр("ru = 'Второй ребенок'");
	ИначеЕсли Очередность = 3 Тогда
		Возврат НСтр("ru = 'Третий ребенок'");
	ИначеЕсли Очередность = 4 Тогда
		Возврат НСтр("ru = 'Четвертый ребенок'");
	ИначеЕсли Очередность = 5 Тогда
		Возврат НСтр("ru = 'Пятый ребенок'");
	ИначеЕсли Очередность = 6 Тогда
		Возврат НСтр("ru = 'Шестой ребенок'");
	ИначеЕсли Очередность = 7 Тогда
		Возврат НСтр("ru = 'Седьмой ребенок'");
	ИначеЕсли Очередность = 8 Тогда
		Возврат НСтр("ru = 'Восьмой ребенок'");
	ИначеЕсли Очередность = 9 Тогда
		Возврат НСтр("ru = 'Девятый ребенок'");
	Иначе
		Возврат СтрШаблон(НСтр("ru = '%1й ребенок'"), Формат(Очередность, "ЧГ="));
	КонецЕсли;
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ЧислительноеДоДевятиВЧисло(ВведенныйТекстНРег)
	// Определяет число от 1 до 9, введенное прописью как числительное (например - "девятый").
	КодСимвола1 = КодСимвола(ВведенныйТекстНРег, 1);
	Если КодСимвола1 = 1087 Тогда
		Возврат ?(КодСимвола(ВведенныйТекстНРег, 2) = 1103, 5, 1); // Первый / Пятый.
	ИначеЕсли КодСимвола1 = 1074 Тогда
		Возврат ?(КодСимвола(ВведенныйТекстНРег, 2) = 1086, 8, 2); // Второй / Восьмой.
	ИначеЕсли КодСимвола1 = 1090 Тогда
		Возврат 3;
	ИначеЕсли КодСимвола1 = 1095 Тогда
		Возврат 4;
	ИначеЕсли КодСимвола1 = 1096 Тогда
		Возврат 6;
	ИначеЕсли КодСимвола1 = 1089 Тогда
		Возврат 7;
	ИначеЕсли КодСимвола1 = 1076 Тогда
		Возврат 9;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ИнициализацияФормы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыПроверяемыеНаСоответствие() Экспорт
	
	РеквизитыПроверяемыеНаСоответствие = Новый Структура("РеквизитыШапки,ТабличныеЧасти", Новый Соответствие, Новый Соответствие);
	
	Возврат РеквизитыПроверяемыеНаСоответствие;
	
КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Функция КомментарийКДокументу(Объект)
	Если Объект.КоличествоДетей = 0 Тогда
		Текст = "";
	ИначеЕсли Объект.ВыплачиватьПособиеДоПолутораЛет Тогда
		ПроцентОплаты = Мин(40 * Объект.КоличествоДетей * ?(Объект.ПрименятьЛьготыПриНачисленииПособия, 2, 1),100); 
		Текст = НСтр(
			"ru = 'Ежемесячное пособие по уходу за ребенком до достижения ребенком полутора лет начисляется в размере %1% среднего заработка.
			|Минимальный размер пособия определяется для %2.'");
		Если Объект.КоличествоПервыхДетей = 0 Тогда
			Если Объект.КоличествоДетей = 1 Тогда
				ПредставлениеДетей = НСтр("ru='одного ребенка, рожденного (усыновленного) вторым или последующим'");
			Иначе
				ПредставлениеДетей = НСтр("ru='%1 детей, среди которых нет первого ребенка'");
				ПредставлениеДетей = СтрШаблон(ПредставлениеДетей, Объект.КоличествоДетей);
			КонецЕсли;
		ИначеЕсли Объект.КоличествоПервыхДетей = 1 Тогда
			Если Объект.КоличествоДетей = 1 Тогда
				ПредставлениеДетей = НСтр("ru='одного ребенка, рожденного (усыновленного) первым'");
			Иначе
				ПредставлениеДетей = НСтр("ru='%1 детей, среди которых есть ребенок, рожденный (усыновленный) первым'");
				ПредставлениеДетей = СтрШаблон(ПредставлениеДетей, Объект.КоличествоДетей);
			КонецЕсли;
		КонецЕсли;
		Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, ПроцентОплаты, ПредставлениеДетей);
	Иначе
		Текст = НСтр("ru='Ежемесячное пособие по уходу за ребенком до достижения ребенком полутора лет не начисляется.'");
	КонецЕсли;
	Возврат Текст;
КонецФункции

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьДанныеДляРасчетаСреднего(ВыводитьСообщения = Ложь)

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

	РассчитатьСреднийЗаработок();
	
	УстановитьИнфонадписьРасчетаСреднегоЗаработка();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	
	ПраваНаДокумент.ОграниченияНаУровнеЗаписей.Вставить("ПлановыеНачисленияИзменениеБезОграничений", ИзменениеБезОграничений);
	ПраваНаДокумент.ОграниченияНаУровнеЗаписей.Вставить("ПлановыеНачисленияЧтениеБезОграничений", ЧтениеБезОграничений);	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОбновитьПредставлениеВычетовКДоходамСтрокиНДФЛ()
	
	УчетНДФЛФормы.ОбновитьПредставлениеВычетовКДоходамСтрокиНДФЛ(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьФиксРасчетСтрокНДФЛ(СтруктураПоиска)
	
	УчетНДФЛФормы.УстановитьФиксРасчетСтрокНДФЛ(ЭтаФорма, СтруктураПоиска);
	
КонецПроцедуры

&НаКлиенте
Процедура ПерезаполнитьНачисленияСотрудника(Сотрудники, СохранятьИсправления = Истина) Экспорт
	
	РассчитатьНачисленияНаСервере();

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

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

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

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

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

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

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

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

		НесколькоРабочихМестОбработкаФормы(Ложь);
		
	КонецЕсли;
	
	КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

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

#Область РедактированиеПроцентаЕНВДВФормеДокумента

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

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

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

&НаКлиенте
Процедура Подключаемый_ПроцентЕНВДСтрокаПриИзменении(Элемент)
	
	ОтражениеЗарплатыВБухучетеКлиент.ПроцентЕНВДСтрокаПриИзменении(ЭтаФорма, Элемент, ЭтаФорма.ПроцентЕНВДСтрока);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПроцентЕНВДСтрокаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ОтражениеЗарплатыВБухучетеКлиент.ПроцентЕНВДСтрокаНачалоВыбора(ЭтаФорма, Элемент, ДанныеВыбора, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

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

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

#Область ПрямыеВыплатыФСС

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ЭДОБЗК

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

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

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

#Область Инициализация

СтарыеЗначенияКонтролируемыхПолей = Новый Соответствие;

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

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