Панель настроек зарплата кадры / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область СлужебныйПрограммныйИнтерфейс

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

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

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

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

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

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

Функция ЗаполнитьСтруктуруПараметровНастроек(ИмяНастройки) Экспорт
	
	СтруктураПараметров = СтруктураПараметровНастроек();
	Настройки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяНастройки,,,Истина);
	Для каждого Настройка Из Настройки Цикл
		СтруктураПараметров.ПараметрыНастроек[Настройка] = Истина;
	КонецЦикла;
	
	Возврат СтруктураПараметров;
	
КонецФункции 

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

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

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

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

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

#КонецЕсли

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