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