Назначение подработки / Форма документа / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьШрифтЗаголовкаНачисленияУтверждены()
	
	Если Элементы.Найти("Утверждено") <> Неопределено Тогда 
		Элементы.Утверждено.ШрифтЗаголовка = Новый Шрифт(Элементы.Утверждено.ШрифтЗаголовка, , , Истина);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

&НаСервереБезКонтекста
Функция ГоловнаяОрганизацияСотрудника(Сотрудник)
	
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сотрудник, "ГоловнаяОрганизация");
	
КонецФункции

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьПКУПоУмолчанию()

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

&НаСервере
Процедура ЗаполнитьРазрядПоУмолчанию()

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

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

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

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

&НаСервере
Процедура УстановитьУточнениеНаименования()

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат ОтражениеЗарплатыВБухучете.ИспользуетсяЕНВД(Период);

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

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

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

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

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

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

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

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

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

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

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

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

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