ДобавитьПодписьИзФайла (БСП)

Автор: 1С
ОбщийМодуль.ЭлектроннаяПодписьКлиент
БСП

Добавить подпись из файла. Предлагает пользователю выбрать файлы подписей для добавления к объекту и добавляет их.

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

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

Рекомендации

Похожие публикации

ДобавитьПодписьКФайлу (БСП)

ДобавитьПодписьИзФайла (БСП)

ДобавитьПодписьИзФайлаПослеСозданияМенеджераКриптографии (БСП)

ДобавитьПодписьИПечать (БСП)

ДобавитьПодпись (БСП)

ДоступнаЭлектроннаяПодпись (БСП)

СохранитьПодписьПослеПолученияФайла (БСП)

1С Менеджер конфигураций