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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	Оповестить("Запись_ИзменениеОплатыТруда", ПараметрыЗаписи, Объект.Ссылка);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьБухучетДействующихНачислений(БухучетПрежнихНачислений = Неопределено)

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

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


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