&НаКлиенте
Перем Хранилище Экспорт;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("БезВозможностиВыбора") И Параметры.БезВозможностиВыбора Тогда
БезВозможностиВыбора = Истина;
Элементы.КоманднаяПанельФормыВыбрать.Видимость = Ложь;
КонецЕсли;
МножественныйВыбор = Параметры.МножественныйВыбор;
Отпечатки = Параметры.Отпечатки;
Если НЕ МножественныйВыбор Тогда
Элементы.ГруппаМножественныйВыбор.Видимость = Ложь;
КонецЕсли;
ОбрабатываемоеХранилище = ?(ЗначениеЗаполнено(Параметры.Хранилище), Врег(Параметры.Хранилище), "MY");
ЗапретитьВыборПросроченных = Параметры.ЗапретитьВыборПросроченных;
Если ЗапретитьВыборПросроченных Тогда
Элементы.ПоказыватьПросроченные.Пометка = Ложь;
Элементы.ПоказыватьПросроченные.Видимость = Ложь;
Иначе
Элементы.ПоказыватьПросроченные.Пометка = (Параметры.ПоказыватьПросроченные = Истина);
КонецЕсли;
Элементы.СертификатыИНН.Видимость = (ОбрабатываемоеХранилище = "MY");
Элементы.СертификатыСНИЛС.Видимость = (ОбрабатываемоеХранилище = "MY");
Если НЕ ЗначениеЗаполнено(Параметры.НачальноеЗначениеВыбора) Тогда
НачальноеЗначениеВыбора = Новый СписокЗначений;
ИначеЕсли ТипЗнч(Параметры.НачальноеЗначениеВыбора) = Тип("Массив") Тогда
НачальноеЗначениеВыбора = Новый СписокЗначений;
НачальноеЗначениеВыбора.ЗагрузитьЗначения(Параметры.НачальноеЗначениеВыбора);
ИначеЕсли ТипЗнч(Параметры.НачальноеЗначениеВыбора) = Тип("Строка") Тогда
НачальноеЗначениеВыбора = Новый СписокЗначений;
НачальноеЗначениеВыбора.Добавить(Параметры.НачальноеЗначениеВыбора);
Иначе
НачальноеЗначениеВыбора = Новый СписокЗначений;
НачальноеЗначениеВыбора.ЗагрузитьЗначения(Параметры.НачальноеЗначениеВыбора.Выгрузить( ,"Сертификат").ВыгрузитьКолонку("Сертификат"));
КонецЕсли;
Если НачальноеЗначениеВыбора.Количество() > 1 Тогда
Элементы.МножественныйВыбор.Пометка = Истина;
КонецЕсли;
ТекДата = ТекущаяДатаСеанса();
Для Каждого ЭлементУсловногоОформления Из УсловноеОформление.Элементы Цикл
Для Каждого Эл Из ЭлементУсловногоОформления.Отбор.Элементы Цикл
Эл.ПравоеЗначение = ТекДата;
КонецЦикла;
КонецЦикла;
Элементы.ПоказыватьТолькоСертификатыГОСТ2012.Пометка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПолучитьСертификатыЗавершение", ЭтотОбъект);
МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
МодульДокументооборотСМинобороныКлиент.ПолучитьСертификаты(
ОписаниеОповещения, Новый Структура("Хранилище,ЭтоЛокальноеХранилище", ОбрабатываемоеХранилище, Истина));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
&НаКлиенте
Процедура СертификатыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если БезВозможностиВыбора Тогда
ПоказатьСертификат();
Иначе
ВыбратьСертификат(Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КоманднаяПанельСертификатыПоказать(Команда = Неопределено)
ПоказатьСертификат()
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельФормыВыбрать(Кнопка)
ТекДанные = Элементы.Сертификаты.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
ПоказатьПредупреждение(, "Выберите сертификат!");
Возврат;
КонецЕсли;
ВыбратьСертификат();
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельФормыПоказыватьПросроченные(Команда)
Элементы.ПоказыватьПросроченные.Пометка = НЕ Элементы.ПоказыватьПросроченные.Пометка;
ОтобразитьТаблицуСертификатов();
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельСертификатыМножественныйВыбор(Команда)
Элементы.МножественныйВыбор.Пометка = НЕ Элементы.МножественныйВыбор.Пометка;
УправлениеЭУ();
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельСертификатыУстановитьВсеФлажки(Команда)
Для Каждого Стр Из Сертификаты Цикл
Стр.Пометка = Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельСертификатыСнятьВсеФлажки(Команда)
Для Каждого Стр Из Сертификаты Цикл
Стр.Пометка = Ложь;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПоказатьСертификат()
ТекДанные = Элементы.Сертификаты.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
ПоказатьПредупреждение(, "Выберите в таблице сертификат для показа.");
Иначе
СертификатДляПоказа = Новый Структура("Отпечаток, Поставщик", ТекДанные.Отпечаток, ТекДанные.Поставщик);
МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
МодульДокументооборотСМинобороныКлиент.ПоказатьСертификат(СертификатДляПоказа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЛокализованноеИмяГОСТ()
Возврат НСтр("ru='ГОСТ Р'");;
КонецФункции
&НаКлиенте
Процедура ПолучитьСертификатыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат.Выполнено Тогда
СписокСертификаты = Результат.Сертификаты;
ДополнительныеСвойстваСертификатов = Результат.ДополнительныеСвойстваСертификатов;
Иначе
СписокСертификаты = Новый Массив;
КонецЕсли;
МодульДокументооборотСМинобороныКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
МодульДокументооборотСМинобороныКлиентСервер =
ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиентСервер");
Для Каждого ЭлементСертификат Из СписокСертификаты Цикл
Если Отпечатки.Количество() > 0 И Отпечатки.НайтиПоЗначению(ЭлементСертификат.Отпечаток) <> Неопределено
ИЛИ Отпечатки.Количество() = 0 Тогда
НовыйСертификат = ПолнаяТаблицаСертификатов.Добавить();
НовыйСертификат.Сертификат = ЭлементСертификат.Отпечаток;
ЗаполнитьЗначенияСвойств(НовыйСертификат, ЭлементСертификат);
НовыйСертификат.Отпечаток = МодульДокументооборотСМинобороныКлиент.ДвоичныеДанныеВСтроку(ЭлементСертификат.Отпечаток);
НовыйСертификат.СерийныйНомер = Строка(ЭлементСертификат.СерийныйНомер);
НовыйСертификат.Наименование = МодульДокументооборотСМинобороныКлиент.НаименованиеСертификата(ЭлементСертификат);
НовыйСертификат.Поставщик = МодульДокументооборотСМинобороныКлиент.СтуктураДанныхСертификатаВСтроку(ЭлементСертификат.Издатель);
НовыйСертификат.Владелец = МодульДокументооборотСМинобороныКлиент.СтуктураДанныхСертификатаВСтроку(ЭлементСертификат.Субъект);
НовыйСертификат.ПоставщикСтруктура = ЭлементСертификат.Издатель;
НовыйСертификат.ВладелецСтруктура = ЭлементСертификат.Субъект;
СвойстваСертификата = ДополнительныеСвойстваСертификатов.Получить(ЭлементСертификат.Отпечаток);
НовыйСертификат.АлгоритмПубличногоКлюча = СтрЗаменить(
СвойстваСертификата.АлгоритмПубличногоКлюча,
"GOST R",
ЛокализованноеИмяГОСТ());
КонецЕсли;
КонецЦикла;
ПостОбработкаПолнойТаблицыСертификатовНаСервере();
ТекДата = ОбщегоНазначенияКлиент.ДатаСеанса();
Если НЕ ЗапретитьВыборПросроченных Тогда
Для Каждого ЭлНачальноеЗначениеВыбора Из НачальноеЗначениеВыбора Цикл
Если ЗначениеЗаполнено(ЭлНачальноеЗначениеВыбора.Значение) Тогда
ТекСертСтроки = ПолнаяТаблицаСертификатов.НайтиСтроки(Новый Структура("Отпечаток", ЭлНачальноеЗначениеВыбора.Значение));
Если ТекСертСтроки.Количество() > 0 Тогда
Для Каждого ТекСертСтрока Из ТекСертСтроки Цикл
Если НЕ Элементы.ПоказыватьПросроченные.Пометка И (ТекДата < ТекСертСтрока.ДатаНачала ИЛИ ТекДата > ТекСертСтрока.ДатаОкончания) Тогда
Элементы.ПоказыватьПросроченные.Пометка = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОтобразитьТаблицуСертификатов();
Для Каждого ЭлНачальноеЗначениеВыбора Из НачальноеЗначениеВыбора Цикл
Если ЗначениеЗаполнено(ЭлНачальноеЗначениеВыбора.Значение) Тогда
ТекСертСтроки = Сертификаты.НайтиСтроки(Новый Структура("Отпечаток", ЭлНачальноеЗначениеВыбора.Значение));
Если ТекСертСтроки.Количество() > 0 Тогда
Для Каждого Стр Из ТекСертСтроки Цикл
Стр.Пометка = Истина;
Элементы.Сертификаты.ТекущаяСтрока = Стр.ПолучитьИдентификатор();
КонецЦикла;
Иначе
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Сертификат с отпечатком ""%1"" не найден в хранилище сертификатов.'"),
ЭлНачальноеЗначениеВыбора);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
КонецЦикла;
УправлениеЭУ();
КонецПроцедуры
&НаСервере
Процедура ПостОбработкаПолнойТаблицыСертификатовНаСервере()
Для Каждого СтрСертификат Из ПолнаяТаблицаСертификатов Цикл
СтрСертификат.Поставщик = ЗначениеПоля(СтрСертификат.Поставщик);
СтрСертификат.СерийныйНомер = ЗначениеПоля(СтрСертификат.СерийныйНомер);
СтрСертификат.Владелец = ЗначениеПоля(СтрСертификат.Владелец);
СтрСертификат.Наименование = ЗначениеПоля(СтрСертификат.Наименование);
СтрСертификат.Отпечаток = нрег(СтрСертификат.Отпечаток);
ПараметрыВладельца = РазложитьСтрокуВладелец(СтрСертификат.ВладелецСтруктура);
СтрСертификат.ИмяВладельца = ЗначениеПоля(ПараметрыВладельца.Имя);
СтрСертификат.Организация = ЗначениеПоля(ПараметрыВладельца.Организация);
СтрСертификат.Должность = ЗначениеПоля(?(ЗначениеЗаполнено(ПараметрыВладельца.Должность) И ПараметрыВладельца.Должность <> "0", ПараметрыВладельца.Должность, ПараметрыВладельца.Подразделение));
СтрСертификат.EMail = ЗначениеПоля(ПараметрыВладельца.ЭлектроннаяПочта);
СтрСертификат.ИНН = ЗначениеПоля(ПараметрыВладельца.ИНН);
СтрСертификат.СНИЛС = ЗначениеПоля(ПараметрыВладельца.СНИЛС);
ПоставщикСтруктура = СтрСертификат.ПоставщикСтруктура;
Если ПоставщикСтруктура.Свойство("CN") Тогда
СтрСертификат.Издатель = ПоставщикСтруктура["CN"];
КонецЕсли;
КонецЦикла;
ПолнаяТаблицаСертификатов.Сортировать("ИмяВладельца");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗначениеПоля(СтрЗначениеПоля)
Возврат ?(НЕ ЗначениеЗаполнено(СтрЗначениеПоля) ИЛИ СокрЛП(СтрЗначениеПоля) = "0", "", СтрЗначениеПоля);
КонецФункции
&НаКлиенте
Функция АлгоритмНаАнглийском(ИмяАлгоритмаЛокализованное)
Возврат СтрЗаменить(ИмяАлгоритмаЛокализованное, ЛокализованноеИмяГОСТ(), "GOST R");
КонецФункции
&НаКлиенте
Функция ЭтоСертификатГОСТ2012(Сертификат) Экспорт
МодульДокументооборотСМинобороныКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиентСервер");
АлгоритмНаАнглийском = АлгоритмНаАнглийском(Сертификат.АлгоритмПубличногоКлюча);
Возврат МодульДокументооборотСМинобороныКлиентСервер.АлгоритмСертификатаПоддерживатся(АлгоритмНаАнглийском);
КонецФункции
&НаКлиенте
Процедура ОтобразитьТаблицуСертификатов()
ВыбранныеСертификаты = Новый Массив;
ПомеченныеСертификатыСтр = Сертификаты.НайтиСтроки(Новый Структура("Пометка", Истина));
Для Каждого ЭлСертификат Из ПомеченныеСертификатыСтр Цикл
ВыбранныеСертификаты.Добавить(ЭлСертификат.Отпечаток);
КонецЦикла;
Если Элементы.Сертификаты.ТекущиеДанные <> Неопределено Тогда
ТекущийСертификат = Элементы.Сертификаты.ТекущиеДанные.Отпечаток;
КонецЕсли;
Сертификаты.Очистить();
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса();
Для Каждого Сертификат Из ПолнаяТаблицаСертификатов Цикл
Если НЕ Элементы.ПоказыватьПросроченные.Пометка И (ТекущаяДата < Сертификат.ДатаНачала ИЛИ ТекущаяДата > Сертификат.ДатаОкончания) Тогда
Продолжить;
КонецЕсли;
Если Элементы.ПоказыватьТолькоСертификатыГОСТ2012.Пометка И НЕ ЭтоСертификатГОСТ2012(Сертификат) Тогда
Продолжить;
КонецЕсли;
НовСтр = Сертификаты.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, Сертификат);
КонецЦикла;
Для Каждого ВыбранныйСертификат Из ВыбранныеСертификаты Цикл
СтрНайденныеСертификаты = Сертификаты.НайтиСтроки(Новый Структура("Отпечаток", ВыбранныйСертификат));
Для Каждого СтрНайденныйСертификат Из СтрНайденныеСертификаты Цикл
СтрНайденныйСертификат.Пометка = Истина;
КонецЦикла;
КонецЦикла;
Если ТекущийСертификат <> Неопределено Тогда
СтрокаСертификат = Сертификаты.НайтиСтроки(Новый Структура("Отпечаток", ТекущийСертификат));
Если СтрокаСертификат.Количество() > 0 Тогда
Элементы.Сертификаты.ТекущаяСтрока = СтрокаСертификат[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РазложитьСтрокуВладелец(Знач ВладелецСтруктура)
СвойстваРезультат = Новый Структура();
СвойстваРезультат.Вставить("Имя", "");
СвойстваРезультат.Вставить("Организация", "");
СвойстваРезультат.Вставить("Подразделение", "");
СвойстваРезультат.Вставить("ЭлектроннаяПочта", "");
СвойстваРезультат.Вставить("Должность", "");
СвойстваРезультат.Вставить("ИНН", "");
СвойстваРезультат.Вставить("СНИЛС", "");
Если ВладелецСтруктура.Свойство("SN") И ВладелецСтруктура.Свойство("GN") Тогда
ФИО = ВладелецСтруктура["SN"] + " " + ВладелецСтруктура["GN"];
ИначеЕсли ВладелецСтруктура.Свойство("CN") Тогда
ФИО = ВладелецСтруктура["CN"];
Иначе
ФИО = "";
КонецЕсли;
СвойстваРезультат.Вставить("Имя", ФИО);
Если ВладелецСтруктура.Свойство("O") Тогда
Организация = ВладелецСтруктура["O"];
Иначе
Организация = "";
КонецЕсли;
СвойстваРезультат.Вставить("Организация", Организация);
Если ВладелецСтруктура.Свойство("OU") Тогда
Подразделение = ВладелецСтруктура["OU"];
Иначе
Подразделение = "";
КонецЕсли;
СвойстваРезультат.Вставить("Подразделение", Подразделение);
Если ВладелецСтруктура.Свойство("E") Тогда
ЭлектроннаяПочта = ВладелецСтруктура["E"];
Иначе
ЭлектроннаяПочта = "";
КонецЕсли;
СвойстваРезультат.Вставить("ЭлектроннаяПочта", ЭлектроннаяПочта);
Если ВладелецСтруктура.Свойство("T") Тогда
Должность = ВладелецСтруктура["T"];
Иначе
Должность = "";
КонецЕсли;
СвойстваРезультат.Вставить("Должность", Должность);
Если ВладелецСтруктура.Свойство("OID1_2_643_100_4") Тогда
ИНН = ВладелецСтруктура["OID1_2_643_100_4"];
ИначеЕсли ВладелецСтруктура.Свойство("OID1_2_643_3_131_1_1") Тогда
ИНН = ВладелецСтруктура["OID1_2_643_3_131_1_1"];
Иначе
ИНН = "";
КонецЕсли;
Если СтрДлина(ИНН) = 12 и Лев(ИНН, 2) = "00" Тогда
ИНН = Прав(ИНН, 10);
КонецЕсли;
СвойстваРезультат.Вставить("ИНН", ИНН);
Если ВладелецСтруктура.Свойство("OID1_2_643_100_3") Тогда
СНИЛС = ВладелецСтруктура["OID1_2_643_100_3"];
Иначе
СНИЛС = "";
КонецЕсли;
СвойстваРезультат.Вставить("СНИЛС", СНИЛС);
Возврат СвойстваРезультат;
КонецФункции
&НаКлиенте
Процедура УправлениеЭУ()
Если Элементы.ГруппаМножественныйВыбор.Видимость И Элементы.МножественныйВыбор.Пометка Тогда
Элементы.СертификатыПометка.Видимость = Истина;
Элементы.УстановитьВсеФлажки.Доступность = Истина;
Элементы.СнятьВсеФлажки.Доступность = Истина;
Иначе
Элементы.СертификатыПометка.Видимость = Ложь;
Элементы.УстановитьВсеФлажки.Доступность = Ложь;
Элементы.СнятьВсеФлажки.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьСертификат(парамМножественныйВыбор = Неопределено)
ТекДата = ОбщегоНазначенияКлиент.ДатаСеанса();
Если парамМножественныйВыбор <> Неопределено Тогда
ПризнакВыбораНесколькихСтрок = парамМножественныйВыбор;
Иначе
ПризнакВыбораНесколькихСтрок = Элементы.МножественныйВыбор.Пометка;
КонецЕсли;
Если ПризнакВыбораНесколькихСтрок Тогда
ТекСертификаты = Новый Массив;
ОдинИзСертификатовПросрочен = Ложь;
Для Каждого СтрСертификат Из Сертификаты Цикл
Если НЕ СтрСертификат.Пометка Тогда
Продолжить;
КонецЕсли;
СрокИстек = ТекДата > СтрСертификат.ДатаОкончания;
СрокНеНачался = ТекДата < СтрСертификат.ДатаНачала;
Если СрокИстек ИЛИ СрокНеНачался Тогда
ОдинИзСертификатовПросрочен = Истина;
КонецЕсли;
СвойстваСертификата = СвойстваСертификата(СтрСертификат);
ТекСертификаты.Добавить(СвойстваСертификата);
КонецЦикла;
Если ОдинИзСертификатовПросрочен Тогда
ДополнительныеПараметры = Новый Структура("ТекСертификаты", ТекСертификаты);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросСредиВыбранныеЕстьПросроченныеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстВопроса = НСтр("ru='Среди выбранных сертификатов есть такие, срок действия которых истек.
|Вы уверены, что хотите продолжить выбор?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
Закрыть(ТекСертификаты);
КонецЕсли;
Иначе
ТекДанные = Элементы.Сертификаты.ТекущиеДанные;
СрокИстек = ТекДата > ТекДанные.ДатаОкончания;
СрокНеНачался = ТекДата < ТекДанные.ДатаНачала;
ДополнительныеПараметры = Новый Структура("ТекДанные", ТекДанные);
Если НЕ ЭтоСертификатГОСТ2012(ТекДанные) Тогда
ТекстПредупреждения = НСтр("ru='Выбран сертификат с алгоритмом подписи, который не удовлетворяет требованиям Минобороны РФ.
|Необходимо указать квалифицированный сертификат с алгоритмом подписи ГОСТ Р 34.10-2012.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
Если СрокИстек ИЛИ СрокНеНачался Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросСертификатПросроченЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстВопроса = НСтр("ru='Вы уверены, что хотите выбрать сертификат, срок действия которого " + ?(СрокИстек, "истек", "еще не начался") + "?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
СвойстваСертификата = СвойстваСертификата(ТекДанные);
Закрыть(СвойстваСертификата);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция СвойстваСертификата(ТекДанные)
СвойстваСертификата = Новый Структура;
СвойстваСертификата.Вставить("ДатаНачала", ТекДанные.ДатаНачала);
СвойстваСертификата.Вставить("ДатаОкончания", ТекДанные.ДатаОкончания);
СвойстваСертификата.Вставить("Отпечаток", ТекДанные.Отпечаток);
СвойстваСертификата.Вставить("Поставщик", ТекДанные.Поставщик);
СвойстваСертификата.Вставить("СерийныйНомер", ТекДанные.СерийныйНомер);
СвойстваСертификата.Вставить("Владелец", ТекДанные.Владелец);
СвойстваСертификата.Вставить("Наименование", ТекДанные.Наименование);
СвойстваСертификата.Вставить("ВозможностьПодписи", ТекДанные.ПригоденДляПодписания);
СвойстваСертификата.Вставить("ВозможностьШифрования", ТекДанные.ПригоденДляШифрования);
СвойстваСертификата.Вставить("ПоставщикСтруктура", ТекДанные.ПоставщикСтруктура);
СвойстваСертификата.Вставить("ВладелецСтруктура", ТекДанные.ВладелецСтруктура);
СвойстваСертификата.Вставить("АлгоритмПубличногоКлюча", АлгоритмНаАнглийском(ТекДанные.АлгоритмПубличногоКлюча));
Возврат СвойстваСертификата;
КонецФункции
&НаКлиенте
Процедура ВопросСертификатПросроченЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ТекДанные = ДополнительныеПараметры.ТекДанные;
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Закрыть(СвойстваСертификата(ТекДанные));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросСредиВыбранныеЕстьПросроченныеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ТекСертификаты = ДополнительныеПараметры.ТекСертификаты;
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Закрыть(ТекСертификаты);
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельФормыПоказыватьТолькоСертификатыГОСТ2012(Команда)
Элементы.ПоказыватьТолькоСертификатыГОСТ2012.Пометка = НЕ Элементы.ПоказыватьТолькоСертификатыГОСТ2012.Пометка;
ОтобразитьТаблицуСертификатов();
КонецПроцедуры
#КонецОбласти