#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлектроннаяПодписьСлужебный.УстановитьВидимостьСсылкиНаИнструкциюПоРаботеСПрограммами(Элементы.Инструкция);
ЕстьПравоНаДобавлениеВСправочник = ПравоДоступа("Добавление",
Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования);
УсловноеОформление.Элементы.Очистить();
Если Не ЕстьПравоНаДобавлениеВСправочник Тогда
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor");
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение;
ЭлементЦветаОформления.Использование = Истина;
ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Сертификаты");
ПолеОформления.Использование = Истина;
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сертификаты.ЕстьВСправочнике");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
СертификатПараметрыРеквизитов =
ЭлектроннаяПодписьСлужебный.НовыеПараметрыРеквизитовСертификата();
Если ЗначениеЗаполнено(Параметры.Организация) Тогда
СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация);
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.АдресДанныхСертификата) Тогда
ДанныеСертификата = ПолучитьИзВременногоХранилища(Параметры.АдресДанныхСертификата);
СертификатКриптографии = ЭлектроннаяПодписьСлужебный.СертификатИзДвоичныхДанных(ДанныеСертификата);
Если СертификатКриптографии = Неопределено Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
ПоказатьСтраницуУточнениеСвойствСертификата(ЭтотОбъект,
СертификатКриптографии,
СертификатКриптографии.Выгрузить(),
ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии));
Элементы.Назад.Видимость = Ложь;
Иначе
Если ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда
Элементы.ГруппаСертификаты.Заголовок =
НСтр("ru = 'Личные сертификаты на компьютере и сервере'");
КонецЕсли;
ОшибкаПолученияСертификатовНаКлиенте = Параметры.ОшибкаПолученияСертификатовНаКлиенте;
ОбновитьСписокСертификатовНаСервере(Параметры.СвойстваСертификатовНаКлиенте);
КонецЕсли;
Если Не ЭлектроннаяПодпись.ОбщиеНастройки().ОрганизацияИспользуется Тогда
Элементы.СертификатОрганизация.Видимость = Ложь;
Иначе
ОпределяемыйТипОрганизацияНастроен = Истина;
КонецЕсли;
Элементы.ГруппаФизическоеЛицо.Видимость = ЭлектроннаяПодпись.ОбщиеНастройки().ФизическоеЛицоИспользуется;
Элементы.СертификатПользователь.Подсказка =
Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Реквизиты.Пользователь.Подсказка;
Элементы.СертификатОрганизация.Подсказка =
Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Реквизиты.Организация.Подсказка;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(Сертификат) Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(СертификатАдрес) Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования")
Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux") Тогда
ОбновитьПовторноИспользуемыеЗначения();
Если Элементы.Назад.Видимость Тогда
ОбновитьСписокСертификатов();
КонецЕсли;
Возврат;
КонецЕсли;
Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
ОбновитьСписокСертификатов();
Возврат;
КонецЕсли;
Если ВРег(ИмяСобытия) = ВРег("Установка_РасширениеРаботыСКриптографией")
Или ВРег(ИмяСобытия) = ВРег("Установка_КомпонентаExtraCryptoAPI") Тогда
ОбновитьСписокСертификатов();
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ЭлектроннаяПодписьСлужебный.ПроверитьУникальностьПредставления(
СертификатНаименование, Сертификат, "СертификатНаименование", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("Ссылка", Сертификат);
ВозвращаемоеЗначение.Вставить("Добавлен", ЗначениеЗаполнено(Сертификат));
Закрыть(ВозвращаемоеЗначение);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СертификатыНедоступныНаКлиентеНадписьНажатие(Элемент)
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru = 'Сертификаты недоступны на компьютере'"),
"",
ОшибкаПолученияСертификатовНаКлиенте,
Новый Структура);
КонецПроцедуры
&НаКлиенте
Процедура СертификатыНедоступныНаСервереНадписьНажатие(Элемент)
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru = 'Сертификаты недоступны на сервере'"),
"",
Новый Структура,
ОшибкаПолученияСертификатовНаСервере);
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьВсеПриИзменении(Элемент)
ОбновитьСписокСертификатов();
КонецПроцедуры
&НаКлиенте
Процедура ИнструкцияНажатие(Элемент)
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьИнструкциюПоРаботеСПрограммами();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификаты
&НаКлиенте
Процедура СертификатыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Далее(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура СертификатыПриАктивизацииСтроки(Элемент)
Если Элементы.Сертификаты.ТекущиеДанные = Неопределено Тогда
ОтпечатокВыбранногоСертификата = "";
Иначе
ОтпечатокВыбранногоСертификата = Элементы.Сертификаты.ТекущиеДанные.Отпечаток;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Обновить(Команда)
ОбновитьСписокСертификатов();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьДанныеТекущегоСертификата(Команда)
ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Отпечаток, Не ТекущиеДанные.ЭтоЗаявление);
КонецПроцедуры
&НаКлиенте
Процедура Далее(Команда)
Если Элементы.Сертификаты.ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Выделите сертификаты, которые требуется добавить.'"));
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные;
Если ТекущиеДанные.ЭтоЗаявление Тогда
ПоказатьПредупреждение(,
НСтр("ru = 'Для этого сертификата заявление на выпуск еще не исполнено.
|Откройте заявление на выпуск сертификата и выполните требуемые шаги.'"));
ОбновитьСписокСертификатов();
Возврат;
КонецЕсли;
Если Не ЕстьПравоНаДобавлениеВСправочник И Не ТекущиеДанные.ЕстьВСправочнике Тогда
ВызватьИсключение(НСтр("ru = 'Недостаточно прав на использование сертификата.'"),
КатегорияОшибки.НарушениеПравДоступа);
КонецЕсли;
Элементы.Далее.Доступность = Ложь;
УчетнаяЗапись = Неопределено;
Если ЭлектроннаяПодписьСлужебныйКлиентСервер.РазмещениеСертификата(ТекущиеДанные.ТипРазмещения) = "ОблачнаяПодпись" Тогда
МодульСервисКриптографииDSSКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиентСервер");
МодульСервисКриптографииDSSСлужебныйВызовСервера = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSСлужебныйВызовСервера");
МодульСервисКриптографииDSSКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиент");
ОтпечатокСертификата = МодульСервисКриптографииDSSКлиентСервер.ТрансформироватьОтпечаток(ТекущиеДанные.Отпечаток);
НастройкиПользователя = МодульСервисКриптографииDSSСлужебныйВызовСервера.ПолучитьНастройкиПользователяПоСертификату(ОтпечатокСертификата);
УчетнаяЗапись = НастройкиПользователя.Ссылка;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ПолучитьДвоичныеДанные", Истина);
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Отпечаток", ОтпечатокСертификата);
МодульСервисКриптографииDSSКлиент.НайтиСертификат(Новый ОписаниеОповещения(
"ДалееПослеПоискаСертификатаОблачнаяПодпись", ЭтотОбъект, УчетнаяЗапись), СтруктураПоиска, ПараметрыОперации);
ИначеЕсли ЭлектроннаяПодписьСлужебныйКлиент.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() И ТекущиеДанные.ВОблачномСервисе Тогда
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Отпечаток", Base64Значение(ТекущиеДанные.Отпечаток));
МодульХранилищеСертификатовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХранилищеСертификатовКлиент");
МодульХранилищеСертификатовКлиент.НайтиСертификат(Новый ОписаниеОповещения(
"ДалееПослеПоискаСертификатаВОблачномСервисе", ЭтотОбъект), СтруктураПоиска);
Иначе
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСертификатПоОтпечатку(Новый ОписаниеОповещения(
"ДалееПослеПоискаСертификата", ЭтотОбъект), ТекущиеДанные.Отпечаток, Ложь, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДалееПослеПоискаСертификата(Результат, Контекст) Экспорт
Если ТипЗнч(Результат) = Тип("СертификатКриптографии") Тогда
Результат.НачатьВыгрузку(Новый ОписаниеОповещения(
"ДалееПослеВыгрузкиСертификата", ЭтотОбъект, Результат));
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Если Результат.Свойство("СертификатНеНайден") Тогда
Контекст.Вставить("ОписаниеОшибки", НСтр("ru = 'Сертификат не установлен на компьютере (возможно удален).'"));
Иначе
Контекст.Вставить("ОписаниеОшибки", Результат.ОписаниеОшибки);
КонецЕсли;
ОбновитьСписокСертификатов(Новый ОписаниеОповещения(
"ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст));
КонецПроцедуры
&НаКлиенте
Процедура ДалееПослеПоискаСертификатаОблачнаяПодпись(Результат, Контекст) Экспорт
Если Не Результат.Выполнено Тогда
Контекст = Новый Структура;
Контекст.Вставить("ОписаниеОшибки", Результат.Ошибка);
ОбновитьСписокСертификатов(Новый ОписаниеОповещения(
"ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Результат.ДанныеСертификата) Тогда
Контекст = Новый Структура;
Контекст.Вставить("ОписаниеОшибки", НСтр("ru = 'Сертификат отсутствует в сервисе (возможно удален).'"));
ОбновитьСписокСертификатов(Новый ОписаниеОповещения(
"ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст));
Возврат;
КонецЕсли;
ДалееПослеВыгрузкиСертификата(Результат.ДанныеСертификата.Сертификат, Результат.ДанныеСертификата);
КонецПроцедуры
&НаКлиенте
Асинх Процедура ДалееПослеВыгрузкиСертификата(ВыгруженныеДанные, СертификатКриптографии) Экспорт
ПоказатьСтраницуУточнениеСвойствСертификата(ЭтотОбъект,
СертификатКриптографии,
ВыгруженныеДанные,
Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(СертификатКриптографии));
КонецПроцедуры
&НаКлиенте
Процедура ДалееПослеОбновленияСпискаСертификатов(Результат, Контекст) Экспорт
ПоказатьПредупреждение(, Контекст.ОписаниеОшибки);
Элементы.Далее.Доступность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДалееПослеПоискаСертификатаВОблачномСервисе(Результат, Контекст) Экспорт
Если Не Результат.Выполнено Тогда
Контекст = Новый Структура;
Контекст.Вставить("ОписаниеОшибки", Результат.ОписаниеОшибки.Описание);
ОбновитьСписокСертификатов(Новый ОписаниеОповещения(
"ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Результат.Сертификат) Тогда
Контекст = Новый Структура;
Контекст.Вставить("ОписаниеОшибки", НСтр("ru = 'Сертификат отсутствует в сервисе (возможно удален).'"));
ОбновитьСписокСертификатов(Новый ОписаниеОповещения(
"ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст));
Возврат;
КонецЕсли;
ДалееПослеВыгрузкиСертификата(Результат.Сертификат.Сертификат, Результат.Сертификат);
КонецПроцедуры
&НаКлиенте
Процедура Назад(Команда)
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыборСертификата;
Элементы.Далее.КнопкаПоУмолчанию = Истина;
ОбновитьСписокСертификатов();
КонецПроцедуры
&НаКлиенте
Процедура Добавить(Команда)
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата();
Если Не ЗначениеЗаполнено(Сертификат) Тогда
ДополнительныеПараметры.ЭтоНовый = Истина;
КонецЕсли;
ЗаписатьСертификатВСправочник();
ЭлектроннаяПодписьСлужебныйКлиент.ПослеДобавленияВСправочникСертификатовЭлектроннойПодписи(Сертификат, ДополнительныеПараметры);
ОповеститьОВыборе(Сертификат);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьДанныеСертификата(Команда)
Если ЗначениеЗаполнено(СертификатАдрес) Тогда
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СертификатАдрес, Истина);
Иначе
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СертификатОтпечаток, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьФизическоеЛицо(Команда)
ПараметрыОтбора = Новый структура;
ПараметрыОтбора.Вставить("Свойство", НСтр("ru = 'Кому выдан:'"));
СтрокиОписанияДанныхСертификата = СертификатОписаниеДанных.НайтиСтроки(ПараметрыОтбора);
Если СтрокиОписанияДанныхСертификата.Количество() = 0 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Подходящее физическое лицо не существует.'"));
Возврат;
КонецЕсли;
КомуВыдан = СтрокиОписанияДанныхСертификата[0].Значение;
ЭлектроннаяПодписьСлужебныйКлиент.ПодобратьФизическоеЛицоДляСертификата(ЭтотОбъект, КомуВыдан, СертификатФизическоеЛицо);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ПоказатьСтраницуУточнениеСвойствСертификата(Форма, СертификатКриптографии, ДанныеСертификата, СвойстваСертификата)
Элементы = Форма.Элементы;
Форма.СертификатАдрес = ПоместитьВоВременноеХранилище(ДанныеСертификата, Форма.УникальныйИдентификатор);
Форма.СертификатОтпечаток = Base64Строка(СертификатКриптографии.Отпечаток);
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(
Форма.СертификатОписаниеДанных, СвойстваСертификата);
СертификатПараметрыРеквизитов = Форма.СертификатПараметрыРеквизитов;
СохраненныеСвойства = СохраненныеСвойстваСертификата(
Форма.СертификатОтпечаток,
Форма.СертификатАдрес,
СертификатПараметрыРеквизитов);
Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда
НаименованиеСертификата = СертификатПараметрыРеквизитов.Наименование;
Если НаименованиеСертификата.ТолькоПросмотр Тогда
Элементы.СертификатНаименование.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
Если Форма.ОпределяемыйТипОрганизацияНастроен Тогда
Если СертификатПараметрыРеквизитов.Свойство("Организация") Тогда
Если Не СертификатПараметрыРеквизитов.Организация.Видимость Тогда
Элементы.СертификатОрганизация.Видимость = Ложь;
ИначеЕсли СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда
Элементы.СертификатОрганизация.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Форма.Сертификат = СохраненныеСвойства.Ссылка;
Форма.СертификатНаименование = СохраненныеСвойства.Наименование;
Форма.СертификатПользователь = СохраненныеСвойства.Пользователь;
Форма.СертификатОрганизация = СохраненныеСвойства.Организация;
Форма.СертификатФизическоеЛицо = СохраненныеСвойства.ФизическоеЛицо;
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУточнениеСвойствСертификата;
Элементы.Добавить.КнопкаПоУмолчанию = Истина;
Элементы.Далее.Доступность = Истина;
Строка = ?(ЗначениеЗаполнено(Форма.Сертификат), НСтр("ru = 'Обновить'"), НСтр("ru = 'Добавить'"));
Если Элементы.Добавить.Заголовок <> Строка Тогда
Элементы.Добавить.Заголовок = Строка;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СохраненныеСвойстваСертификата(Знач Отпечаток, Адрес, ПараметрыРеквизитов)
Возврат ЭлектроннаяПодписьСлужебный.СохраненныеСвойстваСертификата(Отпечаток, Адрес, ПараметрыРеквизитов, Истина);
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокСертификатов(Оповещение = Неопределено)
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Оповещение);
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(Новый ОписаниеОповещения(
"ОбновитьСписокСертификатовПродолжение", ЭтотОбъект, Контекст), Ложь, ПоказыватьВсе);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокСертификатовПродолжение(Результат, Контекст) Экспорт
ОшибкаПолученияСертификатовНаКлиенте = Результат.ОшибкаПолученияСертификатовНаКлиенте;
ОбновитьСписокСертификатовНаСервере(Результат.СвойстваСертификатовНаКлиенте);
Если Контекст.Оповещение <> Неопределено Тогда
ВыполнитьОбработкуОповещения(Контекст.Оповещение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписокСертификатовНаСервере(Знач СвойстваСертификатовНаКлиенте)
ОшибкаПолученияСертификатовНаСервере = Новый Структура;
ЭлектроннаяПодписьСлужебный.ОбновитьСписокСертификатов(Сертификаты, СвойстваСертификатовНаКлиенте,
Истина, Ложь, ОшибкаПолученияСертификатовНаСервере, ПоказыватьВсе);
Если ЗначениеЗаполнено(ОтпечатокВыбранногоСертификата)
И ( Элементы.Сертификаты.ТекущаяСтрока = Неопределено
Или Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока) = Неопределено
Или Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока).Отпечаток
<> ОтпечатокВыбранногоСертификата) Тогда
Отбор = Новый Структура("Отпечаток", ОтпечатокВыбранногоСертификата);
Строки = Сертификаты.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
Элементы.Сертификаты.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
Элементы.ГруппаСертификатыНедоступныНаКлиенте.Видимость =
ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаКлиенте)
И ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаКлиенте.ОписаниеОшибки);
Элементы.ГруппаСертификатыНедоступныНаСервере.Видимость =
ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаСервере)
И ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаСервере.ОписаниеОшибки);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьСертификатВСправочник()
Если ЗначениеЗаполнено(УчетнаяЗапись) Тогда
ЭлектроннаяПодписьСлужебный.ЗаписатьСертификатВСправочник(ЭтотОбъект, УчетнаяЗапись, Истина);
Иначе
ЭлектроннаяПодписьСлужебный.ЗаписатьСертификатВСправочник(ЭтотОбъект, , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытииФормыВыбораФизическогоЛица(Значение, Параметры) Экспорт
Если Значение = Неопределено Тогда
Возврат;
КонецЕсли;
СертификатФизическоеЛицо = Значение;
КонецПроцедуры
#КонецОбласти