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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()

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

// ЗарплатаКадрыПодсистемы.КадровыйУчет.ЭлектронныеТрудовыеКнижки

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

&НаКлиенте
Процедура НаименованиеДокументаПриИзменении(Элемент)
	
	ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаПриИзменении(Объект.Организация, "КадровыйПеревод", Объект.НаименованиеДокумента);
	
КонецПроцедуры

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

&НаКлиенте
Процедура НаименованиеДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаОбработкаВыбора(
		Объект.НаименованиеДокумента, ВыбранноеЗначение, СтандартнаяОбработка);
	
КонецПроцедуры

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

// Конец ЗарплатаКадрыПодсистемы.КадровыйУчет.ЭлектронныеТрудовыеКнижки

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


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

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

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

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

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

&НаКлиенте
Процедура СотрудникиДолжностьПоШтатномуРасписаниюПриИзменении(Элемент)
	
	Если Элементы.Сотрудники.ТекущаяСтрока <> Неопределено
		И ЗначениеЗаполнено(Элементы.Сотрудники.ТекущиеДанные.ДолжностьПоШтатномуРасписанию) Тогда
		
		СотрудникиДолжностьПоШтатномуРасписаниюПриИзмененииНаСервере(Элементы.Сотрудники.ТекущаяСтрока);
		
	КонецЕсли; 
	
КонецПроцедуры

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

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

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


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

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

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

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

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

// БлокировкаИзмененияОбъектов

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

// Конец БлокировкаИзмененияОбъектов

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

#Область КлючевыеРеквизитыЗаполненияФормы

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

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

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


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

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

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

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

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

&НаКлиенте
Функция ПолучитьДанныеОЗанятыхПозициях()Экспорт
	
	Возврат ПоместитьДанныеОЗанятыхПозицияхВоВременноеХранилище();
	
КонецФункции

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

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

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

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

&НаКлиенте
Функция РеквизитыПроверяемыеНаСоответствиеНаКлиенте() Экспорт
	
	Возврат РеквизитыПроверяемыеНаСоответствие();
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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