Подразделения организаций / Форма элемента / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

	ОбновитьПовторноИспользуемыеЗначения();
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура РасформированоПриИзменении(Элемент)
	
	УстановитьДоступностьЭлементов(ЭтотОбъект);
	
	Если Не Объект.Расформировано Тогда
		Объект.ДатаРасформирования = '00010101';
	ИначеЕсли Объект.ДатаРасформирования = '00010101' Тогда
		Объект.ДатаРасформирования = КонецМесяца(ОбщегоНазначенияКлиент.ДатаСеанса()) + 1;
	КонецЕсли;	
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
// Места выплаты зарплаты

&НаКлиенте
Процедура ВидМестаВыплатыЗарплатыКакВсемПриИзменении(Элемент)
	УстановитьДоступностьМестВыплатыЗарплаты();
КонецПроцедуры

&НаКлиенте
Процедура ВидМестаВыплатыЗарплатыКассаПриИзменении(Элемент)
	УстановитьДоступностьМестВыплатыЗарплаты();
КонецПроцедуры

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

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

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

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

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

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

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

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

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

#Область ФинансовыйУчет

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

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

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

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

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

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

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

#Область РедактированиеПериодическихСведенийФинансовыйУчет

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

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

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

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

///////////////////////////////////////////////////////////////////// 
//ПРОЦЕДУРЫ ПОДСИСТЕМЫ "СВОЙСТВ"

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

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

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

&НаСервере
Процедура ПриПолученииДанныхНаСервере(ТекущийОбъект)
	
	ОрганизацияФормы = Объект.Владелец;

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

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

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

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

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

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

&НаКлиенте
Процедура ОбособленноеПодразделениеПриИзменении(Элемент)
	
	УстановитьДоступностьЭлементов(ЭтотОбъект);
	ЗаполнитьРегистрациюИКоэффициенты();
	ЗаполнитьСамостоятельнуюКлассификационнуюЕдиницу();
	
КонецПроцедуры

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

&НаКлиенте
Процедура РайонныйКоэффициентРФПриИзменении(Элемент)
	
	ПриИзмененииРайонногоКоэффициента();
	
КонецПроцедуры

&НаКлиенте
Процедура РайонныйКоэффициентПриИзменении(Элемент)
	
	ПриИзмененииРайонногоКоэффициента();
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПолеСведенияОБухучетеПериод(Форма, Объект, Элементы, БухучетЗарплатыПодразделений, БухучетЗарплатыПодразделенийПрежняя, ДатаСеанса)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.Свойства

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

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

// Конец СтандартныеПодсистемы.Свойства

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьДетализациюМестВыплат()
	
	Если ДоступенПросмотрМестВыплатыЗарплаты
		И МестаВыплатыЗарплатыДетализация.Количество() = 0 Тогда
		
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("Организация", ОрганизацияФормы);
		Запрос.УстановитьПараметр("Подразделение", СсылкаНаОбъект);
		Запрос.Текст =
			"ВЫБРАТЬ
			|	МестаВыплатыЗарплаты.СпособВыплаты КАК СпособВыплаты,
			|	МестаВыплатыЗарплаты.Вид КАК Вид,
			|	МестаВыплатыЗарплаты.МестоВыплаты КАК МестоВыплаты
			|ИЗ
			|	РегистрСведений.МестаВыплатыЗарплатыПодразделений КАК МестаВыплатыЗарплаты
			|ГДЕ
			|	МестаВыплатыЗарплаты.Организация = &Организация
			|	И МестаВыплатыЗарплаты.Подразделение = &Подразделение
			|	И МестаВыплатыЗарплаты.СпособВыплаты <> ЗНАЧЕНИЕ(Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка)";
		
		МестаВыплатыЗарплатыДетализация.Загрузить(Запрос.Выполнить().Выгрузить());
		
	КонецЕсли;
		
КонецПроцедуры

&НаКлиенте
Процедура УстановитьДоступностьМестВыплатыЗарплаты()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область АдаптацияУвольнение

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

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

#Область ЗаписьЭлемента

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

&НаКлиенте
Процедура ЗаписатьНаКлиенте(ЗакрытьПослеЗаписи, ОповещениеЗавершения = Неопределено) Экспорт 

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

&НаКлиенте
Процедура ЗаписатьНаКлиентеЗавершение(Отказ, ДополнительныеПараметры) Экспорт 

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

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


#Область РедактированиеПериодическихСведенийБухучетЗарплаты

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

&НаКлиентеНаСервереБезКонтекста
Процедура БухучетЗарплатыОбновитьТекущуюСтраницу(Форма)

	Если Форма.БухучетЗарплатыВариантНастройки = 0 Тогда
		Форма.Элементы.БухучетСтраницы.ТекущаяСтраница = Форма.Элементы.БухучетПустаяСтраница;
	ИначеЕсли Форма.БухучетЗарплатыВариантНастройки = 1 Тогда
		Форма.Элементы.БухучетСтраницы.ТекущаяСтраница = Форма.Элементы.БухучетОдноЗначение;
	Иначе
		Форма.Элементы.БухучетСтраницы.ТекущаяСтраница = Форма.Элементы.БухучетРаспределение;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаписатьБухучетЗарплатыПодразделений()

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОткрытьФормуРедактированияИсторииБухучетЗарплаты()

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

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

&НаСервере
Процедура СписокВыбораБухучетЗарплатыВариантНастройки()

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

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

&НаКлиенте
Процедура ОбработатьОповещениеБухучетЗарплатыПодразделений()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Функция ПодразделениеЗаписаноУспешно()

	Возврат Не (Модифицированность Или Параметры.Свойство("Ключ") И Параметры.Ключ.Пустая());
	
КонецФункции

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

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

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

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