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