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