Расшифровать (БСП)

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебныйКлиент
БСП

Расшифровать. Расшифрует объект - Файл, Версия.

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

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

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

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

Расшифровать (БСП)

РасшифроватьБлок (БСП)

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