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