Физические лица семья / Модуль

файл

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СостоянияВБракеФизическихЛицПериодПриИзменении(Элемент)
	
	СостоянияВБракеФизическихЛицЗаблокироватьФизическоеЛицо();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура СостоянияВБракеФизическихЛицИстория(Команда)

	СотрудникиКлиент.ОткрытьФормуРедактированияИстории("СостоянияВБракеФизическихЛиц", ФизическоеЛицоСсылка, ЭтотОбъект);

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

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

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

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

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

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

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

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

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

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

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

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

	Если Не Отказ И Открыта() Тогда
		
		Модифицированность = Ложь;
		Если ДополнительныеПараметры.ЗакрытьФорму Тогда
			Закрыть();
		КонецЕсли; 
		
	КонецЕсли; 
	
КонецПроцедуры

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

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

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

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

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

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

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

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