Материальная помощь / Форма документа / Модуль формы

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

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

&НаКлиенте
Перем АктивизированныйСотрудник;

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

&НаКлиенте
Перем СотрудникиКРасчету Экспорт;

&НаКлиенте
Перем ЗакрытьПослеЗаписи;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОтношениеКЕНВДПриИзменении(Элемент)
	ОбновитьБухучетРезультатовРасчета();
КонецПроцедуры

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

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

///////////////////////////////////////////////////////////////////////////////
// Редактирование месяца строкой.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура НачисленияПерерасчетПослеУдаления(Элемент)
	ПослеУдаленияПерерасчета();
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПодборСотрудников(Команда)
	
	ОценкаПроизводительностиКлиент.ЗамерВремени("ПодборСотрудникаВФормеДокументаМатериальнаяПомощь");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОписанияТаблиц.Добавить(ОписаниеТаблицыУдержаний());
	ОписанияТаблиц.Добавить(ОписаниеТаблицыНДФЛ());
	ОписанияТаблиц.Добавить(ОписаниеТаблицыКорректировкиВыплаты());
	
	Возврат ОписанияТаблиц;
	
КонецФункции

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецФункции

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПересчитатьСотрудникаНаСервере(ИмяТаблицы, ВыбранныеСтроки, ВедущееПоле, ТипВедущегоПоля)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьПодсказкуВводаСпособаРасчетовСФизическимиЛицами()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СтарыеЗначенияКонтролируемыхПолей = Новый Соответствие;
СотрудникиКРасчету = Новый Соответствие;
ЗакрытьПослеЗаписи = Ложь;

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

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