///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// Следующие процедуры и функции предназначены для интеграции с 1С-Отчетность

// Выполняет интерактивную аутентификацию пользователя по сценарию: логин и пароль
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//
Процедура АутентификацияПоЛогину(ОповещениеОЗавершении, НастройкиПользователя = Неопределено, ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.АутентификацияПоЛогину(ТекущиеНастройки, ОповещениеОЗавершении);
	
КонецПроцедуры

// Выполняет интерактивную аутентификацию пользователя по сценарию: сертификат авторизации и пароль к нему
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//
Процедура АутентификацияПоСертификату(ОповещениеОЗавершении, НастройкиПользователя = Неопределено, ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.АутентификацияПоСертификату(ТекущиеНастройки, ОповещениеОЗавершении);
	
КонецПроцедуры

// Выполняет интерактивную аутентификацию пользователя по сценарию: двухфакторная авторизация с подтверждением
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. функцию СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//
Процедура АутентификацияДвухФакторная(ОповещениеОЗавершении, НастройкиПользователя = Неопределено, ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.АутентификацияДвухФакторная(ТекущиеНастройки, ОповещениеОЗавершении);
	
КонецПроцедуры

// Выполняет интерактивную аутентификацию пользователя по сценарию: Web-форма
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//
Процедура АутентификацияЧерезВебФорму(ОповещениеОЗавершении, НастройкиПользователя = Неопределено, ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.АутентификацияЧерезВебФорму(ТекущиеНастройки, ОповещениеОЗавершении);
	
КонецПроцедуры

// Выполняет запуск "произвольного" подтверждения операции
// В случае, если в настройках сервера не указано имя шаблона, то будет использоваться "фиктивное" подписание.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ОписаниеСодержания 		- Строка - формируемый заголовок формы подтверждения
//  СпособПодтверждения 	- Массив из ПеречислениеСсылка.СпособыАвторизацииDSS - ограничивает список способов указанным значением
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//    * Сертификат 		- Строка - отпечаток сертификата
//    * ДанныеДокументов 	- Массив, Структура - содержит данные о документах для этой операции. 
//				см. СервисКриптографииDSSКлиентСервер.ПодготовитьНаборДокументов()
//
Процедура ПодтверждениеПроизвольнойОперации(ОповещениеОЗавершении, 
											НастройкиПользователя, 
											ОписаниеСодержания = "", 
											СпособПодтверждения = Неопределено, 
											ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПодтверждениеПроизвольнойОперации(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ОписаниеСодержания, 
											СпособПодтверждения, 
											ПараметрыОперации);
	
КонецПроцедуры	

// Выполняет запуск зашифрования данных
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 		- ДвоичныеДанные, Строка - один файл, который необходимо обработать.
//							см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента().
//  СертификатыПолучателей 	- ДвоичныеДанные, Структура, ФиксированнаяСтруктура, Массив, ФиксированныйМассив - 
//							сертификаты получателей зашифрованного сообщения, см. функцию СервисКриптографииDSS.ПолучитьДвоичныеДанныеСертификатов() 
//  ТипШифрования 			- Строка - одно из значений: CMS или XML
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//    * ПараметрыШифрования - Структура - содержит дополнительные поля для шифрования, см. документацию сервиса DSS
//
Процедура Зашифровать(ОповещениеОЗавершении, 
						НастройкиПользователя, 
						ДанныеДокумента, 
						СертификатыПолучателей, 
						ТипШифрования = "CMS", 
						ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.Зашифровать(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ДанныеДокумента, 
											СертификатыПолучателей, 
											ТипШифрования, 
											ПараметрыОперации);
	
КонецПроцедуры

// Выполняет запуск цикла расшифрования данных
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 			- СправочникСсылка.УчетныеЗаписиDSS
//                        			- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 				- ДвоичныеДанные, Строка - один файл, который необходимо обработать.
//									см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента().
//  ТипШифрования 					- Строка - тип шифрования, варианты: CMS или XML
//  ИдентификаторСертификата 		- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSSСлужебный.НайтиСертификат
//  ПараметрыОперации 				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции:
//    * ИдентификаторТранзакции 	- Строка - передается, если произошло подтверждение операции в потребителе
//    * ПинКод 					- Строка - пин-код для сертификата, который пользователь ввел в потребителе
//    * ПодтверждатьПринудительно - Булево - Истина, если нужно запустить операцию с подтверждением, вне зависимости от
//                                           установленных настроек DSS.
//    * ЗапомнитьПинКод			- Булево - Ложь, не запоминать пин-код в сеансовых данных
//			
Процедура Расшифровать(ОповещениеОЗавершении, 
						НастройкиПользователя, 
						ДанныеДокумента, 
						ТипШифрования = "CMS", 
						ИдентификаторСертификата = Неопределено, 
						ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.Расшифровать(ТекущиеНастройки, 
														ОповещениеОЗавершении, 
														ДанныеДокумента, 
														ТипШифрования, 
														ИдентификаторСертификата, 
														ПараметрыОперации);
	
КонецПроцедуры

// Выполняет запуск цикла расшифрования данных по всем известным учетным записям.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ДанныеДокумента 			- ДвоичныеДанные, Строка - один файл, который необходимо обработать.
//								см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента().
//  ТипШифрования 				- Строка - тип шифрования, варианты: CMS или XML
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции:
//    * РасшифровкаПоУчетнымЗаписям - Булево - принудительно пытаться расшифровать по всем учетным записям
//
Процедура РасшифроватьВЦикле(ОповещениеОЗавершении, 
							ДанныеДокумента, 
							ТипШифрования = "CMS", 
							ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.РасшифроватьВЦикле(ОповещениеОЗавершении, 
												ДанныеДокумента, 
												ТипШифрования, 
												ПараметрыОперации);
	
КонецПроцедуры

// Выполняет запуск цикла подписание данных. 
// По анализу входящих данных, выбирается способ подписание: одиночное или пакетное.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 			- СправочникСсылка.УчетныеЗаписиDSS
//                        			- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 				- ДвоичныеДанные
//                  				- Строка - см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//                  				- Массив - Массив из см. СервисКриптографииDSSКлиентСервер.ПодготовитьПакетДляПодписи
//  СвойствоПодписи 				- Структура - СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиГост,
//                  				СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCMS,
//                  				СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиXML,
//                  				СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCAdES,
//                  				СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиPDF,
//                  				СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиMSOffice.
//  ИдентификаторСертификата 		- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSSКлиентСервер.НайтиСертификат
//  ПараметрыОперации 				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//    * ПотоковыйРежим 			- Булево - включает режим потокового подписания (только для одного документа и отсоединенной подписи)
//    * ИдентификаторТранзакции 	- Строка - передается, если произошло подтверждение операции заранее в потребителе
//    * ПинКод 					- Строка - пин-код для сертификата, который пользователь ввел заранее в потребителе
//    * ПодтверждатьПринудительно - Булево - Истина, если нужно запустить операцию с подтверждением, вне зависимости от
//                                           установленных настроек DSS.
//
Процедура Подписать(ОповещениеОЗавершении, 
					НастройкиПользователя,
					ДанныеДокумента, 
					СвойствоПодписи = Неопределено, 
					ИдентификаторСертификата = Неопределено, 
					ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	Если СвойствоПодписи = Неопределено Тогда
		ПараметрыПодписи = СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCMS(Истина, Ложь);
		СервисКриптографииDSSКлиентСервер.ПолучитьИнформациюДокументаДляПодписи(
							ПараметрыПодписи, 
							НСтр("ru = 'Тестовые данные'"), 
							"bin");
	Иначе
		ПараметрыПодписи = СвойствоПодписи;
	КонецЕсли;
	
	СервисКриптографииDSSСлужебныйКлиент.Подписать(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ДанныеДокумента, 
											ПараметрыПодписи, 
											ИдентификаторСертификата, 
											ПараметрыОперации);
	
КонецПроцедуры

// Выполняет запуск цикла усовершенствования подписи. 
// Имеет смысл для типов подписей, содержащей метку времени: XLT1 и T
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 			- СправочникСсылка.УчетныеЗаписиDSS
//                        			- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеПодписи	 				- ДвоичныеДанные
//               	 				- Строка - см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//  СвойствоПодписи 				- Структура - СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCAdES,
//  ПараметрыОперации 				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура УсовершенствоватьПодпись(ОповещениеОЗавершении, 
					НастройкиПользователя,
					ДанныеПодписи, 
					СвойствоПодписи = Неопределено, 
					ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	Если СвойствоПодписи = Неопределено Тогда
		ПараметрыПодписи = СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCAdES("T", Истина, Ложь, "Подпись");
		СервисКриптографииDSSКлиентСервер.ПолучитьИнформациюДокументаДляПодписи(
							ПараметрыПодписи, 
							НСтр("ru = 'ЭП'"), 
							"sig");
	Иначе
		ПараметрыПодписи = СвойствоПодписи;
	КонецЕсли;
	
	СервисКриптографииDSSСлужебныйКлиент.УсовершенствоватьПодпись(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ДанныеПодписи, 
											ПараметрыПодписи, 
											ПараметрыОперации);
	
КонецПроцедуры

// Выполняет запуск цикла для вычисления хеш-значения для переданных данных.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 		- ДвоичныеДанные, Строка, Массив - один или несколько файлов, которые необходимо обработать.
//							см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента(). 
//  АлгоритмХеширования 	- Строка - идентификатор алгоритма вычисления хеша, допустимые варианты
//								GOST R 34.11-94,
//								GR 34.11-2012 256,
//								GR 34.11-2012 512,
//								SHA-1,
//								SHA-256,
//								SHA-384,
//								SHA-512,
//								MD5.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции:
//    * ИнвертироватьПолубайты - Булево - если Истина, предварительно инвертирует байты в полученным результате
//
Процедура ХешированиеДанных(ОповещениеОЗавершении, 
							НастройкиПользователя, 
							ДанныеДокумента, 
							АлгоритмХеширования = "GR 34.11-2012 256", 
							ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ХешированиеДанных(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ДанныеДокумента, 
											АлгоритмХеширования, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл получения основных свойств и содержимого сертификата установленного на сервере DSS.
// Для получения свойств произвольного сертификата из двоичных данных можно воспользоваться функцией СервисКриптографииDSS.ПолучитьОбъектСертификата.
// Для прямого разбора данных сертификата можно воспользоваться функционалом из модуля СервисКриптографииDSSASNКлиентСервер.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторСертификата 	- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSSСлужебный.НайтиСертификат
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПолучитьДанныеСертификата(ОповещениеОЗавершении, 
									НастройкиПользователя, 
									ИдентификаторСертификата, 
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПолучитьДанныеСертификата(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ИдентификаторСертификата, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл получения сведений о сертификате установленного на сервере DSS.
// Например, данная информация выводиться в форме: СвойствоСертификата.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. функцию СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторСертификата 	- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSSСлужебный.НайтиСертификат
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПолучитьСвойстваСертификата(ОповещениеОЗавершении, 
										НастройкиПользователя, 
										ИдентификаторСертификата, 
										ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПолучитьСвойстваСертификата(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ИдентификаторСертификата, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл для обновления кеша сертификатов учетной записи.
// Может потребоваться после установки сертификата.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ОбновитьДанныеСертификатов(ОповещениеОЗавершении, 
										НастройкиПользователя, 
										ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбновитьДанныеСертификатов(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл формирования запроса на новый сертификат.
// Одновременно на сервере генерируется новый закрытый ключ.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 			- СправочникСсылка.УчетныеЗаписиDSS
//                        			- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//    * ПоляЗапроса 				- Структура - содержит поля для формирования запроса:
//      ** УдостоверяющийЦентр		- Строка, Число - идентификатор удостоверяющего центра, список можно получить здесь 
//									СервисКриптографииDSS.ПолучитьИнформациюУдостоверяющихЦентров().
//      ** КриптоПровайдер			- Строка, Число - идентификатор криптопровайдера, список можно получить здесь СервисКриптографииDSS.ПолучитьИнформациюУдостоверяющихЦентров()
//       ** ШаблонСертификата		- Строка - значение шаблона сертификата, список можно получить здесь СервисКриптографииDSS.ПолучитьРеестрШаблоновУдостоверяющегоЦентра
//      ** ПоляАтрибутов			- см. СервисКриптографииDSS.ПолучитьРеестрПолейУдостоверяющегоЦентра
//      ** ПинКод					- Строка - значение пин-кода для нового сертификата
//    * ГотовыйЗапрос				- Булево - если Истина, то пользователю не отображается форма с полями сертификата
//    * ПодтверждатьПринудительно	- Булево - если Истина, то пользователю необходимо пройти процедуру подтверждения
//
Процедура СоздатьЗапросНаСертификат(ОповещениеОЗавершении, 
									НастройкиПользователя, 
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.СоздатьЗапросНаСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл получения реестра запросов на новый сертификат.
// Одновременно на сервере генерируется новый закрытый ключ.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//    * ТолькоАктуальные 		- Булево - по умолчанию Истина, Если Истина, то возвращается информация об запросах в статусе "Обрабатывается"
//
Процедура СписокЗапросовНаСертификат(ОповещениеОЗавершении, 
									НастройкиПользователя, 
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьЗапросыНаСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении,
											"СписокЗапросовНаСертификат",
											Неопределено,
											ПараметрыОперации);
	
КонецПроцедуры

// Получает свойства ранее созданного запроса на сертификат на сервере.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//  ИдентификаторЗапроса		- Число - идентификатор ранее созданного запроса на сертификат
//                      		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//
Процедура ПолучитьЗапросНаСертификат(ОповещениеОЗавершении, 
									НастройкиПользователя,
									ИдентификаторЗапроса,
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	ПараметрыВызова = Новый Структура;
	ПараметрыВызова.Вставить("ИдентификаторЗапроса", ИдентификаторЗапроса);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьЗапросыНаСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении,
											"ПолучитьЗапросНаСертификат",
											ПараметрыВызова,
											ПараметрыОперации);
	
КонецПроцедуры

// Удаляет ранее созданный запрос на сертификат на сервере.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//  ИдентификаторЗапроса		- Число - идентификатор ранее созданного запроса на сертификат
//                      		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемые поля:
//
Процедура УдалитьЗапросНаСертификат(ОповещениеОЗавершении, 
									НастройкиПользователя,
									ИдентификаторЗапроса,
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	ПараметрыВызова = Новый Структура;
	ПараметрыВызова.Вставить("ИдентификаторЗапроса", ИдентификаторЗапроса);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьЗапросыНаСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении,
											"УдалитьЗапросНаСертификат",
											ПараметрыВызова,
											ПараметрыОперации);
	
КонецПроцедуры
										
// Предназначена для получения информации об УЦ доступных учетной записи.
// Вызывает функцию СервисКриптографииDSS.ПолучитьИнформациюУдостоверяющихЦентров().
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПолучитьИнформациюУдостоверяющихЦентров(ОповещениеОЗавершении, 
												НастройкиПользователя, 
												ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПолучитьИнформациюУдостоверяющихЦентров(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл установки сертификата на сервере DSS. 
// Внимание! Возможна установка произвольного сертификата, т.е. непривязанного с закрытому ключу. 
// Но никаких значимых операций с такими сертификатами произвести не удаться.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеСертификата 		- ДвоичныеДанные, Строка - СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура УстановитьСертификат(ОповещениеОЗавершении, 
								НастройкиПользователя, 
								ДанныеСертификата, 
								ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.УстановитьСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ДанныеСертификата, 
											ПараметрыОперации);
	
КонецПроцедуры

// Выполняет цикл для назначения указанного сертификата "по-умолчанию" на сервере DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторСертификата 	- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSS.НайтиСертификат()
//  Установить 					- Булево - установить / снять пометку основного для сертификата
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура НазначитьОсновнымСертификат(ОповещениеОЗавершении, 
										НастройкиПользователя, 
										ИдентификаторСертификата, 
										Установить = Истина, 
										ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.НазначитьОсновнымСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ИдентификаторСертификата, 
											Установить, 
											ПараметрыОперации);
	
КонецПроцедуры

// Выполняет цикл смены пин-кода для закрытого ключа сертификата на сервере DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторСертификата 	- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSS.НайтиСертификат()
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура СменитьПинКодСертификата(ОповещениеОЗавершении, 
									НастройкиПользователя, 
									ИдентификаторСертификата, 
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.СменитьПинКодСертификата(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ИдентификаторСертификата, 
											ПараметрыОперации);
	
КонецПроцедуры	

// Выполняет цикл проверки валидности произвольного сертификата на сервере SVS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеСертификата 		- ДвоичныеДанные, Строка - СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПроверитьСертификат(ОповещениеОЗавершении, 
								НастройкиПользователя, 
								ДанныеСертификата, 
								ПараметрыОперации = Неопределено) Экспорт
	
	Если НастройкиПользователя = Неопределено Тогда
		ТекущиеНастройки = НастройкиПользователя;
	Иначе						
		ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	КонецЕсли;	
	
	СервисКриптографииDSSСлужебныйКлиент.ПроверитьСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ДанныеСертификата, 
											ПараметрыОперации);
	
КонецПроцедуры

// Выполняет цикл получения сведений о подписантах переданного документа на сервере SVS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 		- ДвоичныеДанные, Строка - СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//  ТипПодписи 				- см. СервисКриптографииDSSКлиентСервер.ПолучитьТипыПодписей
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПолучитьСведенияОПодписантах(ОповещениеОЗавершении, 
									НастройкиПользователя, 
									ДанныеДокумента, 
									ТипПодписи = "CMS", 
									ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПолучитьСведенияОПодписантах(ТекущиеНастройки, 
												ОповещениеОЗавершении, 
												ДанныеДокумента, 
												ТипПодписи, 
												ПараметрыОперации);
	
КонецПроцедуры	

// Выполняет цикл получения проверки подписи переданного документа на сервере SVS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 		- ДвоичныеДанные, Строка - СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//  ИсходныйДокумент 		- Строка, ДвоичныеДанные - СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//  ТипПодписи 				- см. СервисКриптографииDSSКлиентСервер.ПолучитьТипыПодписей
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции: 
//    * Сертификат 			- Строка, ДвоичныеДанные - СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента()
//							для проверки отделенной подписи, "голой" подписи необходимо передать дополнительно сертификат.
//    * СвойстваПроверки	- см. СервисКриптографииDSSКлиентСервер.ПолучитьСвойстваПроверкиПодписи
//
Процедура ПроверитьПодпись(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ДанныеДокумента,
						ИсходныйДокумент = Неопределено,
						ТипПодписи = "CMS",
						ПараметрыОперации = Неопределено) Экспорт
						
						
	Если НастройкиПользователя = Неопределено Тогда
		ТекущиеНастройки = НастройкиПользователя;
	Иначе						
		ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	КонецЕсли;	
	
	СервисКриптографииDSSСлужебныйКлиент.ПроверитьПодпись(ТекущиеНастройки, 
					ОповещениеОЗавершении,
					ДанныеДокумента,
					ИсходныйДокумент,
					ТипПодписи, 
					ПараметрыОперации);
	
КонецПроцедуры						

// Получает выборку записей аудита (действий пользователя) на сервере.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ФильтрыОтбора 			- Неопределено, Массив из Структура - если передан массив, то каждый элемент это структура с полями:
//    * Колонка 			- Число, Неопределено - колонка в БД, по которой осуществляется фильтрация
//    * Операция 			- Число, Неопределено - операция, которая применяется фильтром
//    * Значение 			- Строка, Неопределено - значение фильтра
//  НачальнаяПозиция		- Неопределено, Число - если не задано, то Значение по умолчанию - 0
//  КонечнаяПозиция			- Неопределено, Число - если не задано, то Значение по умолчанию - 10 к начальной позиции
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ПолучитьЗаписиАудита(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ФильтрыОтбора,
						НачальнаяПозиция = Неопределено,
						КонечнаяПозиция = Неопределено,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПолучитьЗаписиАудита(ТекущиеНастройки, 
					ОповещениеОЗавершении,
					ФильтрыОтбора,
					НачальнаяПозиция,
					КонечнаяПозиция, 
					ПараметрыОперации);
						
КонецПроцедуры

// Загружает данные документа на сервер, для последующей обработки.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ДанныеДокумента 		- ДвоичныеДанные, Строка - один файл, который необходимо обработать.
//							см. функцию СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента().
//  ПараметрыДокумента		- см. СервисКриптографииDSSКлиентСервер.ПолучитьСвойстваДокумента
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции
//
Процедура ЗагрузитьДокумент(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ДанныеДокумента,
						ПараметрыДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ЗагрузитьДокумент",
					ПараметрыДокумента,
					ДанныеДокумента,
					ПараметрыОперации);
						
КонецПроцедуры

// Загружает пакет (небольшой) документов (небольших) на сервер, для последующей обработки.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыДокументов		- Массив из см. СервисКриптографииDSSКлиентСервер.ПолучитьСвойстваДокумента
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ЗагрузитьПакетДокументов(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ПараметрыДокументов,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ЗагрузитьПакетДокументов",
					ПараметрыДокументов,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает информацию о загруженном документе по его идентификатору.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа, присвоенный ему при загрузке
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ИнформацияОДокументеПоИдентификатору(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ИнформацияОДокументеПоИдентификатору",
					ИдентификаторДокумента,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает информацию о загруженном документе по его идентификатору.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ХешДокумента			- Строка - хеш-значение документа, присвоенный ему при загрузке
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ИнформацияОДокументеПоХешу(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ХешДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ИнформацияОДокументеПоХешу",
					ХешДокумента,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает содержимое загруженного или обработанного документа по его идентификатору.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа, присвоенный ему при загрузке или обработке
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ПолучитьОбработанныйДокумент(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ПолучитьОбработанныйДокумент",
					ИдентификаторДокумента,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает содержимое загруженных или обработанных документов по его идентификатору.
// Данный ресурс доступен в сборках сервера DSS c API 2.0.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат				- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторыДокументов- Массив - идентификаторы документов, присвоенные им при загрузке или обработке
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции 
//
Процедура ПолучитьОбработанныеДокументы(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторыДокументов,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ПолучитьОбработанныеДокументы",
					ИдентификаторыДокументов,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Загружает данные документа на сервер, для последующей обработки.
// Внимание, данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа
//  ПараметрыДокумента		- Структура - подробнее СервисКриптографииDSS.ИнформацияОДокументеОбработки
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ИзменитьИнформациюОДокументе(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ПараметрыДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ИзменитьИнформациюОДокументе",
					ПараметрыДокумента,
					ИдентификаторДокумента,
					ПараметрыОперации);
						
КонецПроцедуры

// Привязывает текущий документ к указанному.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа
//  ИдентификаторРодительскогоДокумента	- Строка
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ПривязатьДокумент(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ИдентификаторРодительскогоДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ПривязатьДокумент",
					ИдентификаторДокумента,
					ИдентификаторРодительскогоДокумента,
					ПараметрыОперации);
						
КонецПроцедуры

// Посылает запрос на конвертацию документа, ранее загруженного на сервер.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура СконвертироватьДокумент(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"СконвертироватьДокумент",
					ИдентификаторДокумента,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает информацию о преобразованном документе.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура ПолучитьИнформациюДокументаКонвертации(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ПолучитьИнформациюДокументаКонвертации",
					ИдентификаторДокумента,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры
				
// Удаляет документ, ранее загруженный на сервер или обработанный на нем.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторДокумента	- Строка - идентификатор документа
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции/ 
//
Процедура УдалитьДокумент(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторДокумента,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбработатьДокумент(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"УдалитьДокумент",
					ИдентификаторДокумента,
					Неопределено,
					ПараметрыОперации);
						
КонецПроцедуры

// Создает закрытый ключ и сертификат к нему на сервере, подписанный владельцем.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторАлгоритмаКлюча	- см. СервисКриптографииDSSКлиентСервер.ИдентификаторАлгоритмаЗакрытогоКлюча
//  ПараметрыКлюча 				- Строка - идентификатор набора параметров эллиптической кривой 
//  ПинКод		 				- Строка - значение пин-кода для нового закрытого ключа
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции 
//
Процедура СоздатьЗакрытыйКлюч(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторАлгоритмаКлюча,
						ПараметрыКлюча,
						ПинКод = Неопределено,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("ИдентификаторАлгоритмаКлюча", ИдентификаторАлгоритмаКлюча);
	ПараметрыВыполнения.Вставить("ПараметрыКлюча", ПараметрыКлюча);
	ПараметрыВыполнения.Вставить("ПинКод", ПинКод);
	
	СервисКриптографииDSSСлужебныйКлиент.ОперацияСЗакрытомКлючом(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"СоздатьЗакрытыйКлюч",
					ПараметрыВыполнения,
					ПараметрыОперации);
						
КонецПроцедуры

// Задает произвольный параметр для закрытого ключа.
// Внимание: данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторСертификата 		- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSSКлиентСервер.НайтиСертификат
//  ИмяПараметра 				- Строка - идентификатор произвольного параметра
//  ЗначениеПараметра			- Строка - значение параметра
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции
//
Процедура УстановитьПараметрЗакрытогоКлюча(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторСертификата,
						ИмяПараметра,
						ЗначениеПараметра,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("ИдентификаторСертификата", ИдентификаторСертификата);
	ПараметрыВыполнения.Вставить("ИмяПараметра", ИмяПараметра);
	ПараметрыВыполнения.Вставить("ЗначениеПараметра", ЗначениеПараметра);
	
	СервисКриптографииDSSСлужебныйКлиент.ОперацияСЗакрытомКлючом(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"УстановитьПараметрЗакрытогоКлюча",
					ПараметрыВыполнения,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает произвольный параметр для закрытого ключа.
// Внимание, данный ресурс доступен не во всех сборках сервера DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторСертификата 		- Число, Строка, Структура - значения для поиска сведений о сертификате, см. СервисКриптографииDSSКлиентСервер.НайтиСертификат
//  ИмяПараметра 				- Строка - идентификатор произвольного параметра
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции
//
Процедура ПолучитьПараметрЗакрытогоКлюча(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ИдентификаторСертификата,
						ИмяПараметра,
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("ИдентификаторСертификата", ИдентификаторСертификата);
	ПараметрыВыполнения.Вставить("ИмяПараметра", ИмяПараметра);
	
	СервисКриптографииDSSСлужебныйКлиент.ОперацияСЗакрытомКлючом(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"ПолучитьПараметрЗакрытогоКлюча",
					ПараметрыВыполнения,
					ПараметрыОперации);
						
КонецПроцедуры

// Получает сведения об операции начатой на сервере облачной подписи.
//
// Параметры:
//  ОповещениеОЗавершении 		- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ИдентификаторОперации 		- Строка - идентификатор операции ранее созданной на сервере
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемы поля:
//
Процедура СведенияОбОперации(
					ОповещениеОЗавершении,
					НастройкиПользователя, 
					ИдентификаторОперации,
					ПараметрыОперации = Неопределено) Экспорт
					
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ДанныеОпераций(
					ТекущиеНастройки, 
					ОповещениеОЗавершении,
					"СведенияОбОперации",
					ИдентификаторОперации,
					ПараметрыОперации);
					
КонецПроцедуры

// Открывает форму выбора сертификата из списка и возвращает результат выбора.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции:
//    * ПолноеОписаниеСертификата - Булево - результат выбора дополнять полной информацией о сертификате см. НайтиСертификат
//
Процедура ВыборСертификата(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ВыборСертификата(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ПараметрыОперации);
			
КонецПроцедуры

// Открывает форму выбора учетной записи из списка, аутентифицирует ее и возвращает заполненные настройки пользователя DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВыбратьПользователя(ОповещениеОЗавершении, ПараметрыОперации = Неопределено) Экспорт
	
	ПараметрыВызова = Новый Структура("НастройкиПользователя", Неопределено);
	
	СервисКриптографииDSSСлужебныйКлиент.ПроверкаАутентификацииПользователя(ОповещениеОЗавершении, ПараметрыВызова);
	
КонецПроцедуры

// Открывает форму отображения сведений сертификата, на основе данных полученных на сервере DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 			- СправочникСсылка.УчетныеЗаписиDSS
//                        			- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  Сертификат 						- Число - идентификатор сертификата
//  ПараметрыОперации 				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции:
//    * ПоказатьСведениеСервиса 	- Булево - показывает в отдельной форме данные сервиса, иначе в стандартной форме "ОбщиеФормы.Сертификат"
//    * ФормаВладелец 			- Форма - передается форма владелец
//
Процедура ПоказатьСертификат(ОповещениеОЗавершении, 
								НастройкиПользователя,
								Сертификат, 
								ПараметрыОперации = Неопределено) Экспорт

	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПоказатьСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											Сертификат, 
											ПараметрыОперации);
			
КонецПроцедуры

// Открывает форму отображения сведений о запросе на сертификат, на основе данных PKSC10.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 			- СправочникСсылка.УчетныеЗаписиDSS
//                        			- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ЗапросНаСертификат				- Число, ДвоичныеДанные - если число, то нужно указать идентификатор запроса на сертификат
//  ПараметрыОперации 				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции:
//    * ФормаВладелец 			- Форма - передается форма владелец
//
Процедура ПоказатьЗапросНаСертификат(ОповещениеОЗавершении, 
								НастройкиПользователя,
								ЗапросНаСертификат, 
								ПараметрыОперации = Неопределено) Экспорт

	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПоказатьЗапросНаСертификат(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ЗапросНаСертификат, 
											ПараметрыОперации);
			
КонецПроцедуры

// Запуск сервисной функции сохранения данных в файл.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ДанныеФайла 			- Строка, ДвоичныеДанные - может быть строкой Base64, адресом временного хранилища или двоичными данными
//  ИмяФайла 				- Строка - можно полное имя файла или расширение файла (точка первый символ)
//  ВыборФайла 				- Булево - нужно ли показывать пользователю диалог выбора файла
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура СохранитьДанныеВФайл(ОповещениеОЗавершении, 
								ДанныеФайла, 
								ИмяФайла, 
								ВыборФайла = Ложь, 
								ПараметрыОперации = Неопределено)Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.СохранитьДанныеВФайл(ОповещениеОЗавершении, 
													ДанныеФайла, 
													ИмяФайла, 
													ВыборФайла, 
													ПараметрыОперации);
	
КонецПроцедуры	

// Запуск сервисной функции загрузки данных из файла.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ИмяФайла 				- Строка - можно полное имя файла или расширение файла (точка первый символ)
//  АдресХранилища			- Строка - указывает адрес временного хранилища куда поместить данные
//  ВыборФайла				- Булево - нужно ли показывать пользователю диалог выбора файла
//  ПараметрыОперации		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ЗагрузитьДанныеИзФайла(ОповещениеОЗавершении, 
								ИмяФайла, 
								АдресХранилища = Неопределено, 
								ВыборФайла = Ложь, 
								ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ЗагрузитьДанныеИзФайла(ОповещениеОЗавершении, 
											ИмяФайла, 
											АдресХранилища, 
											ВыборФайла, 
											ПараметрыОперации);
	
КонецПроцедуры

// Открывает отчет для отображения состояния сеансовых данных учетной записи.
//
// Параметры:
//  УчетнаяЗапись 			- СправочникСсылка.УчетныеЗаписиDSS - данные необходимые для получения сеансовых данных учетной записи
//  ДополнительныеПараметры	- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПоказатьОтчетСостояниеУчетнойЗаписи(УчетнаяЗапись, ДополнительныеПараметры) Экспорт
	
	ФорматРезультата = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(ДополнительныеПараметры, "ФорматРезультата", "");
	ОповещениеОЗавершении = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(ДополнительныеПараметры, "ОповещениеОЗавершении");
	
	ПоказатьСостояниеУчетнойЗаписи(ОповещениеОЗавершении, УчетнаяЗапись, ФорматРезультата);
	
КонецПроцедуры

// Открывает сервисную функцию отображения состояния сеансовых данных учетной записи.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  УчетнаяЗапись 			- СправочникСсылка.УчетныеЗаписиDSS - данные необходимые для получения сеансовых данных учетной записи
//  ФорматРезультата		- Строка - описывает формат результата, ожидаемые значение XML или пустое
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПоказатьСостояниеУчетнойЗаписи(ОповещениеОЗавершении, УчетнаяЗапись, ФорматРезультата, ПараметрыОперации = Неопределено) Экспорт
	
	Если ПараметрыОперации = Неопределено Тогда
		ПараметрыОперации = Новый Структура();
	КонецЕсли;
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(УчетнаяЗапись, ПараметрыОперации);
	
	ПараметрыОперации.Вставить("ФорматРезультата", ФорматРезультата);
	
	СервисКриптографииDSSСлужебныйКлиент.ПоказатьСостояниеУчетнойЗаписи(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ПараметрыОперации);
	
КонецПроцедуры

// Универсальная процедура для выполнения криптографических операций встроенных в существующие формы.
// 
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 		- СправочникСсылка.УчетныеЗаписиDSS
//                        		- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыВыполнения			- Структура - состоит из обязательных полей:
//    * ТипОперации 			- Строка - сейчас поддерживается "Подписание", "Расшифрование", "Шифрование", "Подтверждение", "Аутентификация"
//								Полный список шагов (в зависимости от настроек и текущего состояния применяться могут не все)
//								авторизация, проверка пин-кода, проверка сертификата и его даты действия,
//								создание транзакции (только для Подписание, Расшифрование).
//    * Сертификат 			- Число, ДвоичныеДанные, Массив - в зависимости от типа операции
//    * ДанныеДокумента 		- Строка - адрес во временном хранилище
//    * ТипДокумента 			- Строка - обычно расширение файла, требуется для корректного отображения документа в мобильном приложении
//    * ОписаниеДокумента 	- Строка - обычно имя файла или его описание
//    * ПарольПользователя 	- Строка - необходим для авторизации
//    * ПинКод 				- Строка - пин-код сертификата
//    * ДанныеПодтверждения	- см. СервисКриптографииDSSПодтверждениеСервер.ДанныеВторичнойАвторизацииПоУмолчанию
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПодготовитьТранзакцию(ОповещениеОЗавершении, 
								НастройкиПользователя,
								ПараметрыВыполнения,
								ПараметрыОперации = Неопределено) Экспорт
								
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	ПараметрыВыполнения.Вставить("НастройкиПользователя", ТекущиеНастройки);
	ПараметрыВыполнения.Вставить("ДатаСеанса", СервисКриптографииDSSСлужебныйКлиент.ДатаСеанса());
	
	СервисКриптографииDSSСлужебныйКлиент.ПодготовитьТранзакцию(ОповещениеОЗавершении, ПараметрыВыполнения, ПараметрыОперации);
	
КонецПроцедуры

// Принудительно получает повторно (обновляет) политику учетной записи.
// При этом требует повторной авторизации.
// Может потребоваться, в случае параллельного изменения настроек в личном кабинете учетной записи.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ОбновитьПолитикуПользователя(ОповещениеОЗавершении,
						НастройкиПользователя, 
						ПараметрыОперации = Неопределено) Экспорт
	
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ОбновитьПолитикуПользователя(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											ПараметрыОперации);
	
КонецПроцедуры

// Открывает форму элемента справочника "Учетные записи DSS".
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  СсылкаУчетнойЗаписи 	- СправочникСсылка.УчетныеЗаписиDSS - данные необходимые для открытия формы
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ОткрытьСведенияУчетнойЗаписи(ОповещениеОЗавершении,
						СсылкаУчетнойЗаписи, 
						ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ОткрытьСведенияУчетнойЗаписи(ОповещениеОЗавершении, 
											СсылкаУчетнойЗаписи, 
											ПараметрыОперации);

КонецПроцедуры

// Открывает форму списка справочника "Учетные записи DSS"
//
Процедура ОткрытьСписокУчетныхЗаписей() Экспорт
	
	ОткрытьФорму("Справочник.УчетныеЗаписиDSS.ФормаСписка");

КонецПроцедуры

// Открывает форму подбора учетных записей облачной подписи.
// Данная форма предполагает возможность режим создания нового логина с помощью сервисов.
//
// Параметры:
//  ОповещениеОЗавершении 		- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ПараметрыФормы					- Структура:
//    * Логин						- Строка
//    * Сервер					- Строка
//    * УчетнаяЗапись			- СправочникСсылка.УчетныеЗаписиDSS
//    * ВыборНовойУчетнойЗаписи	- Булево - по-умолчанию Истина, возможность указания логина и сервера
//  ПараметрыОперации			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ОткрытьПодборУчетныхЗаписей(ОповещениеОЗавершении, ПараметрыФормы, ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ОткрытьПодборУчетныхЗаписей(ОповещениеОЗавершении, ПараметрыФормы, ПараметрыОперации);

КонецПроцедуры

// Открывает подходящую форму авторизации учетной записи.
// Может вызываться из формы элемента справочника "Учетные записи DSS" в момент изменения параметров.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  СсылкаУчетнойЗаписи 	- СправочникСсылка.УчетныеЗаписиDSS - данные необходимые для открытия формы
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции. Проверяемы поля:
//    * ПоказатьДиалог		- Булево - режим отображения диалога авторизации
//    * Принудительно		- Булево - режим принудительной авторизации
//    * ПарольПользователя	- Строка - значение пароля, чтобы исключить вызов диалога ввода
//
Процедура ПроверкаАутентификацииПользователя(ОповещениеОЗавершении,
						СсылкаУчетнойЗаписи, 
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(СсылкаУчетнойЗаписи, ПараметрыОперации);
	
	ПараметрыПроверки = Новый Структура();
	ПараметрыПроверки.Вставить("НастройкиПользователя", ТекущиеНастройки);
	ПараметрыПроверки.Вставить("ПараметрыОперации", ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПроверкаАутентификацииПользователя(ОповещениеОЗавершении, 
							ПараметрыПроверки, 
							СервисКриптографииDSSСлужебныйКлиент.СвойствоСтруктуры(ПараметрыОперации, "ПоказатьДиалог", Ложь), 
							СервисКриптографииDSSСлужебныйКлиент.СвойствоСтруктуры(ПараметрыОперации, "Принудительно", Ложь));
	
КонецПроцедуры

// Открывает список учетных записей для выбора.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВыбратьУчетнуюЗапись(ОповещениеОЗавершении, ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ПроверкаВыбранногоПользователя(
							ОповещениеОЗавершении,
							Неопределено,
							ПараметрыОперации);
	
КонецПроцедуры

// Открывает форму проверки выполнения базовых операций для учетной записи.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  СписокОпераций 			- Структура из КлючИЗначение - перечисляет список операций для проверки сервиса, если не указан, проверка операций по умолчанию:
//    * Ключ				- Строка - имя проверки
//    * Значение			- Булево - результат проверки. Полный список проверок см. Форма.ПроверкаСервиса.ВесьСписокОпераций
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПроверитьРаботоспособностьСервиса(ОповещениеОЗавершении,
						НастройкиПользователя, 
						СписокОпераций = Неопределено, 
						ПараметрыОперации = Неопределено) Экспорт
						
	ТекущиеНастройки = ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
	
	СервисКриптографииDSSСлужебныйКлиент.ПроверитьРаботоспособностьСервиса(ТекущиеНастройки, 
											ОповещениеОЗавершении, 
											СписокОпераций, 
											ПараметрыОперации);
	
КонецПроцедуры

// Запускает цикл формирования адресов подключения к ЦИ и СЭП.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  АдресСервера 			- Строка - web-адрес сервере DSS, на котором опубликован сервис обнаружения
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ПолучитьОписаниеСервиса(ОповещениеОЗавершении,
						АдресСервера = Неопределено, 
						ПараметрыОперации = Неопределено) Экспорт
						
	СервисКриптографииDSSСлужебныйКлиент.ПолучитьОписаниеСервиса(ОповещениеОЗавершении, АдресСервера, ПараметрыОперации);
	
КонецПроцедуры

// Открывает форму элемента справочника "Экземпляры сервера DSS".
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  СсылкаСервера 			- СправочникСсылка.ЭкземплярыСервераDSS - ссылка открываемого элемента
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ОткрытьСведенияСервера(ОповещениеОЗавершении,
						СсылкаСервера, 
						ПараметрыОперации = Неопределено) Экспорт
						
	СервисКриптографииDSSСлужебныйКлиент.ОткрытьСведенияСервера(ОповещениеОЗавершении, СсылкаСервера, ПараметрыОперации);
	
КонецПроцедуры

// Открывает форму списка выбора справочника "Экземпляры сервера DSS".
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВыборЭкземпляраСервера(ОповещениеОЗавершении, ПараметрыОперации = Неопределено) Экспорт
						
	СервисКриптографииDSSСлужебныйКлиент.ВыборЭкземпляраСервера(ОповещениеОЗавершении, ПараметрыОперации);
			
КонецПроцедуры

// Открывает служебную форму выбора настроек сервера полученные из данных службы обнаружения.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  АдресСервера 			- Строка - web-адрес сервере DSS, на котором опубликован сервис обнаружения
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВыбратьНастройкиСервиса(ОповещениеОЗавершении,
						АдресСервера = Неопределено, 
						ПараметрыОперации = Неопределено) Экспорт
						
	СервисКриптографииDSSСлужебныйКлиент.ВыбратьНастройкиСервиса(ОповещениеОЗавершении, АдресСервера, ПараметрыОперации);
	
КонецПроцедуры

// Открывает служебную форму выбора вида программы подписи перед созданием.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ДобавлениеПрограммыЭлектроннойПодписи(ОповещениеОЗавершении, ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ДобавлениеПрограммыЭлектроннойПодписи(ОповещениеОЗавершении, ПараметрыОперации);
		
КонецПроцедуры

// Открывает служебную форму отображения ошибки при работе сервиса DSS.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ОписаниеОшибки 			- Строка - подробнее СервисКриптографииDSSСлужебныйКлиент.ПолучитьОписаниеОшибки
//                 			- Структура - см. СервисКриптографииDSSКлиентСервер.СтатусОшибки
//  ЭтоКодОшибки			- Булево - обозначает, что в параметре ТекстОшибки передан код ошибки
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВывестиОшибку(ОповещениеОЗавершении, 
						ОписаниеОшибки, 
						ЭтоКодОшибки = Ложь, 
						ПараметрыОперации = Неопределено) Экспорт
	
	Если ТипЗнч(ОписаниеОшибки) = Тип("Структура") Тогда
		Содержимое = ОписаниеОшибки.КодОшибки;
	Иначе
		Содержимое = СервисКриптографииDSSКлиентСервер.ПолучитьКодОшибки(ОписаниеОшибки);
	КонецЕсли;
	
	СервисКриптографииDSSСлужебныйКлиент.ВывестиОшибку(ОповещениеОЗавершении, 
											Содержимое, 
											ЭтоКодОшибки, 
											ПараметрыОперации);
	
КонецПроцедуры

// Открывает служебную форму отображения информации пользователю при работе сервиса DSS.
//
// Параметры:
//  ОповещениеОЗавершении 	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//      * Результат					- см. ОтветСервисаПоУмолчанию
//      * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ТекстСообщения 			- Строка - содержит текст сообщения для пользователя
//  ТаймАут					- Число - время показа формы
//  Заголовок				- Строка - заголовок формы вывода информации
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВывестиИнформацию(ОповещениеОЗавершении, 
						ТекстСообщения, 
						ТаймАут = Неопределено, 
						Заголовок = "", 
						ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ВывестиИнформацию(ОповещениеОЗавершении, 
											ТекстСообщения, 
											ТаймАут,
											Заголовок,
											ПараметрыОперации);
	
КонецПроцедуры

// Открывает служебную форму отображения информации пользователю при работе сервиса DSS.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ТекстСообщения 			- Строка - содержит текст сообщения для пользователя
//  СписокКоманд 			- СписокЗначений - где элементы списка содержат информацию 
//									"значение" имя команды по правилам 1С, 
//									"представление" отображаемое представление,
//									"картинка" необязательно.
//  ТаймАут					- Число - время показа формы
//  Заголовок				- Строка - заголовок формы вывода информации
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура ВывестиВопрос(ОповещениеОЗавершении, 
						ТекстСообщения,
						СписокКоманд,
						ТаймАут = Неопределено, 
						Заголовок = "", 
						ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ВывестиВопрос(ОповещениеОЗавершении, 
											ТекстСообщения, 
											СписокКоманд,
											ТаймАут,
											Заголовок,
											ПараметрыОперации);
	
КонецПроцедуры

// Общая функция определения сеансовых настроек указанной учетной записи
//
// Параметры:
//  НастройкиПользователя 	- Неопределено
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//							- СправочникСсылка.УчетныеЗаписиDSS - значения поиска. 
//							Варианты поиска
//								Неопределено - поиск по текущей учетной записи в параметрах сеанса
//								Структура - это и есть сеансовые данные, с проверкой актуальности токена
//								СправочникСсылка.УчетныеЗаписиDSS - поиск или формирование в сеансовых данных.
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
// Возвращаемое значение:
//   см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//
Функция ПолучитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации = Неопределено) Экспорт 
	
	Результат = НастройкиПользователя;
	НовыеПараметры = СервисКриптографииDSSСлужебныйКлиент.ПодготовитьПараметрыФормы(ПараметрыОперации);
	
	Если НастройкиПользователя = Неопределено Тогда
		Результат	= СервисКриптографииDSSСлужебныйВызовСервера.ПолучитьНастройкиПользователя();
	ИначеЕсли ТипЗнч(НастройкиПользователя)	<> Тип("Структура") Тогда
		Результат = СервисКриптографииDSSСлужебныйВызовСервера.ПолучитьНастройкиПользователя(НастройкиПользователя, НовыеПараметры);
	Иначе
		КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(НастройкиПользователя);
		ТекущиеНастройки = СервисКриптографииDSSСлужебныйВызовСервера.ПолучитьНастройкиПользователя(КлючНастроек, НовыеПараметры);
		
		Если ТекущиеНастройки.ВерсияНастройки > НастройкиПользователя.ВерсияНастройки Тогда
			Результат = ТекущиеНастройки;
		КонецЕсли;	
	КонецЕсли;	
	
	Возврат Результат;
	
КонецФункции	

// Сервисная функция формирования идентификатора СЭП на основе web-адреса
//
// Параметры:
//  АдресСервисаПодписи - Строка - адрес сервиса подписка, как полный, так и относительный
//
// Возвращаемое значение:
//  Строка 				- текстовое представление идентификатора сервиса
//
Функция СформироватьИдентификаторСЭП(Знач АдресСервисаПодписи) Экспорт
	
	Результат = "";
	
	Если СтрНайти(АдресСервисаПодписи, "/") > 0 Тогда
		СоставАдреса = СервисКриптографииDSSСлужебныйКлиент.СтруктураВебАдреса(АдресСервисаПодписи);
		ПутьНаСервере = СоставАдреса.ПутьНаСервере;
		ДлинаСтроки	= СтрДлина(ПутьНаСервере);
	Иначе
		ПутьНаСервере = АдресСервисаПодписи;
		ДлинаСтроки	= СтрДлина(ПутьНаСервере);
	КонецЕсли;	
	
	Если ДлинаСтроки > 0 Тогда
		Если Прав(ПутьНаСервере, 1) = "/" Тогда
			ПутьНаСервере = Сред(ПутьНаСервере, 1, ДлинаСтроки - 1);
		КонецЕсли;
		
		ЭлементыПути = СтрРазделить(ПутьНаСервере, "/");
		ВсегоЭлементов = ЭлементыПути.Количество();
		Если ВсегоЭлементов > 0 Тогда
			Результат = "urn:cryptopro:dss:signserver:" + ЭлементыПути[ВсегоЭлементов - 1];
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

// Клиентский вызов функции проверки наличия сертификата в сервисе.
// Анализируется по наличию в кеше сертификатов.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ОписаниеСертификата 	- Строка
//                      	- Число
//                      	- Структура
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//
Процедура НайтиСертификат(ОповещениеОЗавершении, ОписаниеСертификата, ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.НайтиСертификат(ОповещениеОЗавершении, ОписаниеСертификата, ПараметрыОперации);
	
КонецПроцедуры

// Анализирует вид ссылки и запускает соответствующее действие
//
// Параметры:
//  НавигационнаяСсылка - Строка - сформированная навигационная ссылка
//  ТипОбозревателя		- Неопределено, Строка - для определенных случаев нужно открывать в IE
//
Процедура ПерейтиПоСсылке(НавигационнаяСсылка, ТипОбозревателя = Неопределено) Экспорт
	
	Позиция = СтрНайти(НавигационнаяСсылка, "://");
	Префикс = "---";
	ПолныйПуть = НавигационнаяСсылка;
	Если Позиция > 0 Тогда
		Префикс = Сред(НавигационнаяСсылка, 1, Позиция - 1);
		ПолныйПуть = Сред(НавигационнаяСсылка, Позиция + 3);
	КонецЕсли;
	
	Если Префикс = "file" Тогда
		ФайловаяСистемаКлиент.ОткрытьФайл(ПолныйПуть);
	ИначеЕсли СтрНайти("http, https, e1c, v8help, mailto, tel, skype", Префикс) > 0 Тогда
		СервисКриптографииDSSСлужебныйКлиент.ОткрытьВБраузере(НавигационнаяСсылка, ТипОбозревателя);
	Иначе
		ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка);
	КонецЕсли;
	
КонецПроцедуры	

// Готовит объект описания для пароля введенного пользователем, прежде чем он будет передан на сервер
//
// Параметры:
//  ВведенныйСекрет 			- Строка
//  ПризнакКонфиденциальности 	- Число - применяемый алгоритм
//
// Возвращаемое значение:
//   см. СервисКриптографииDSSКлиентСервер.ОбъектПароля
//
Функция ПодготовитьОбъектПароля(ВведенныйСекрет, ПризнакКонфиденциальности = 1) Экспорт
	
	ТекущийПользователь = ПользователиКлиент.АвторизованныйПользователь();
	Результат = СервисКриптографииDSSКлиентСервер.ПодготовитьОбъектПароля(ВведенныйСекрет, ТекущийПользователь, ПризнакКонфиденциальности);	
	
	Возврат Результат;
	
КонецФункции

// Функция для получения статуса подключения подсистемы
//
// Возвращаемое значение:
//  Булево
//
Функция ИспользоватьСервисОблачнойПодписи() Экспорт
	
	Результат = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента(), "ИспользованиеОблачнойПодписиВозможно", Ложь);
	
	Возврат Результат = Истина;
	
КонецФункции

// Инициализирует параметры сеанса учетной записи.
// Востребована в случае смены аутентификационных данных: логин, пароль и прочее.
//
// Параметры:
//  НастройкиПользователя 	- СправочникСсылка.УчетныеЗаписиDSS
//                        	- Структура - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//  ПараметрыОперации 		- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
// 
// Возвращаемое значение:
//   см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
//
Функция СброситьПараметрыСеансаУчетнойЗаписи(НастройкиПользователя, ПараметрыОперации = Неопределено) Экспорт
	
	Результат = СервисКриптографииDSSСлужебныйВызовСервера.СброситьПараметрыСеансаУчетнойЗаписи(НастройкиПользователя, ПараметрыОперации);
	Возврат Результат;
	
КонецФункции

// Открывает форму для изменения параметров подключения учетной записи к серверу.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ПараметрыФормы	 				- Структура:
//    * ОбновитьАвтоматически		- Булево - запустить обновление автоматически
//    * РежимВвода					- Булево - включает в форме режим только для изменения параметров
//    * СодержимоеЗаявления			- см. Обработки.УправлениеПодключениемDSS.СтруктураРеквизитовЗаявления
//    * СостояниеЗаявления			- ПеречислениеСсылка.СостоянияЗаявленияНаВыпускСертификата
//    * УчетнаяЗапись				- СправочникСсылка.УчетныеЗаписиDSS
//  ПараметрыОперации				- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
//		
Процедура ОткрытьЗаявлениеНаИзменение(ОповещениеОЗавершении, ПараметрыФормы, ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ОткрытьЗаявлениеНаИзменение(ОповещениеОЗавершении, ПараметрыФормы, ПараметрыОперации);
	
КонецПроцедуры

// Выполняет процедуру проверки учетной записи облачной подписи, 
// в случае успеха регистрирует информацию о ней в справочниках СправочникСсылка.УчетныеЗаписиDSS 
// и СправочникСсылка.ЭкземплярыСервераDSS.
//
// Параметры:
//  ОповещениеОЗавершении	- ОписаниеОповещения - указывает процедуру для получения результата операции: 
//    * Результат					- см. ОтветСервисаПоУмолчанию
//    * ДополнительныеПараметры	- Произвольный - значение, указанное при создании описания оповещения.
//  ДанныеСервиса				- Структура - подробнее в функции РазобратьФайлНастроекСервера модуля СервисКриптографииDSSСлужебный
//  Логин						- Строка - наименование логина
//  Пароль						- Строка
//  ПараметрыОперации 			- Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
// 
Процедура ВосстановитьУчетнуюЗапись(ОповещениеОЗавершении, ДанныеСервиса, Логин, Пароль = "", ПараметрыОперации = Неопределено) Экспорт
	
	СервисКриптографииDSSСлужебныйКлиент.ВосстановитьУчетнуюЗапись(ОповещениеОЗавершении, ДанныеСервиса, Логин, Пароль, ПараметрыОперации);
	
КонецПроцедуры

// Формирует стандартный ответ применяемый в подсистеме.
// Содержит как обязательные поля, так и дополнительные поля.
// Состав дополнительных полей зависит от состояния операции и вида операции.
// Если "МаркерОбновлен" = Истина, то добавляется поле "НастройкиПользователя".
//
// Параметры:
//  Выполнено 				- Булево - сразу устанавливает признак успешности выполнения операции
//  ИдентификаторОшибки 	- Строка - ключевое слово для формирования описания ошибки
//
// Возвращаемое значение:
//   Структура - содержит обязательные поля:
//    * Выполнено 		- Булево - признак выполнения операция. Истина, если успешно.
//    * Ошибка 			- Строка - строка с описанием ошибки, заполняется если Выполнено = Ложь
//    * КодОшибки 		- Строка - строка с кодом ошибки, заполняется если Выполнено = Ложь
//    * МаркерОбновлен 	- Булево - признак, того что в процессе запроса произошло обновление маркера безопасности
//    * СтатусОшибки	- см. СервисКриптографииDSSКлиентСервер.СтатусОшибки
//
Функция ОтветСервисаПоУмолчанию(Выполнено = Истина, ИдентификаторОшибки = "") Экспорт
	
	ОтветМетода = СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию(Выполнено);
	
	Если НЕ Выполнено И ЗначениеЗаполнено(ИдентификаторОшибки) Тогда
		СервисКриптографииDSSСлужебныйКлиент.ПолучитьОписаниеОшибки(ОтветМетода, ИдентификаторОшибки);
	КонецЕсли;
	
	Возврат ОтветМетода;
	
КонецФункции

#КонецОбласти

#КонецОбласти