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