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