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