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