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