Панель настроек зарплата кадры / Настройка состава начислений и удержаний / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Отмена(Команда)
	
	Модифицированность = Ложь;
	Закрыть();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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