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