Редактирование состава начислений и удержаний / Модуль

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РайонныйКоэффициентРазмерМинПриИзменении(Элемент)
	
	РассчитатьИтогиПоФОТ(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура РайонныйКоэффициентРазмерМаксПриИзменении(Элемент)
	
	РассчитатьИтогиПоФОТ(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ПересчитатьФОТДокумента(Элемент)
	
	ВыполнитьРасчетФОТ();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ОписанияТаблицБухучета(Форма)

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

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

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

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

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

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

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