Исходящая справка для расчета пособий / Форма документа / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

&НаКлиенте
Процедура ДанныеОЗаработкеПриАктивизацииСтроки(Элемент)
	ПодключитьОбработчикОжидания("ОбновитьОтображениеПредупрежденийТЧ_ДанныеОЗаработке", 0.2, Истина);	
КонецПроцедуры

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

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


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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура КомандаОбновитьДанныеОЗаработке(Команда)
	ОбновитьДанныеОЗаработкеНаСервере();
КонецПроцедуры

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

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

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

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

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


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

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

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

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

#Область ПодключаемыеКоманды

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

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

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

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

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

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

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

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

#Область ФиксацияВторичныхДанныхВДокументах

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ФиксацияЗаполнитьИдентификаторыФиксТЧ(Форма);
	ФиксацияВторичныхДанныхВДокументахКлиентСервер.ЗаполнитьИдентификаторыСтрок(Форма);
КонецПроцедуры

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

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

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

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

&НаСервере
Функция ОбъектЗафиксирован() Экспорт
	
	ДокументОбъект = РеквизитФормыВЗначение("Объект");
	
	Возврат ДокументОбъект.ОбъектЗафиксирован();
	
КонецФункции

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

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

&НаСервере
Процедура ЗаполнитьДанныеСправкиНаСервере()

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

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

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

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

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

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

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

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

&НаСервере
Процедура ДанныеОЗаработкеРасчетныйГодПриИзмененииНаСервере(Знач Год)
	ОбновитьДанныеОЗаработкеНаСервере(Год);
КонецПроцедуры

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

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

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

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