Документооборот с контролирующими органами / Выгрузка пакета для министерства обороны РФ / Модуль формы

файл
#Область ОбработчикиСобытийФормы

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииПослеПолученияКонтекстаЭДО", ЭтотОбъект);
	ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
	
	ПараметрыОтображенияСертификатов = Новый Массив;
	
	ПараметрыОтображенияСертификата = Новый Структура;
	ПараметрыОтображенияСертификата.Вставить("ПолеВвода", 								Элементы.СертификатАбонентаПредставление);
	ПараметрыОтображенияСертификата.Вставить("Сертификат", 								СертификатДляПодписания);
	ПараметрыОтображенияСертификата.Вставить("ИмяРеквизитаПредставлениеСертификата", 	"СертификатАбонентаПредставление");
	
	ПараметрыОтображенияСертификатов.Добавить(ПараметрыОтображенияСертификата);
	
	Оповещение = Новый ОписаниеОповещения("ПриОткрытииПослеОтображенияСертификата", ЭтотОбъект);
	МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
	МодульДокументооборотСМинобороныКлиент.ОтобразитьПредставленияСертификатов(
		ПараметрыОтображенияСертификатов, ЭтотОбъект, Ложь, Оповещение);
	
КонецПроцедуры

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

#Область СлужебныеПроцедурыИФункции

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

&НаКлиенте
Процедура ПриОткрытииПослеОтображенияСертификата(Результат, ДополнительныеПараметры) Экспорт

	Если Результат.Свойство("СвойстваСертифката") Тогда
		ЭтоСертификатФизическогоЛица = ЭтоСертификатФизическогоЛица(Результат.СвойстваСертифката);
		УправлениеЭлементамиФормы();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытииПослеПолученияКонтекстаЭДО(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДО = Результат.КонтекстЭДО;
	
	Оповещение = Новый ОписаниеОповещения("ПриОткрытииПослеПодбораСертификатаЗавершение", ЭтотОбъект, );
	
	ПараметрыПодбора = Новый Структура;
	ПараметрыПодбора.Вставить("Сертификат", СертификатДляПодписания);
	ПараметрыПодбора.Вставить("КонтекстЭДО", КонтекстЭДО);
	ПараметрыПодбора.Вставить("Организация", Организация);
	МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
	МодульДокументооборотСМинобороныКлиент.ПодобратьСертификатДляАбонента(Оповещение, ПараметрыПодбора);
		
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытииПослеПодбораСертификатаЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат.Выполнено И СертификатДляПодписания <> Результат.ОтпечатокСертификата Тогда
		СертификатДляПодписания = Результат.ОтпечатокСертификата;
		МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
		МодульДокументооборотСМинобороныКлиент.ОтобразитьПредставлениеСертификата(
			Элементы.СертификатАбонентаПредставление,
			СертификатДляПодписания,
			ЭтотОбъект, 
			"СертификатАбонентаПредставление");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СертификатАбонентаПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	Оповещение = Новый ОписаниеОповещения(
		"СертификатАбонентаПредставлениеНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("Элемент", Элемент));
	
	МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
	МодульДокументооборотСМинобороныКлиент.ВыбратьСертификат(
		Оповещение, СертификатДляПодписания);

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

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

&НаКлиенте
Функция ЭтоСертификатФизическогоЛица(ДанныеСертификата)
	
	МодульДокументооборотСМинобороныКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиентСервер");
	Результат = МодульДокументооборотСМинобороныКлиентСервер.ЭтоСертификатФизическогоЛица(ДанныеСертификата);
	Возврат Результат;
	
КонецФункции

&НаКлиенте
Процедура СертификатАбонентаПредставлениеОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ПредставлениеСертификата = Новый Структура;
	ПредставлениеСертификата.Вставить("Отпечаток", СертификатДляПодписания);
	КриптографияЭДКОКлиентСервер.ЗаполнитьМестоХраненияКлюча(МестоХраненияКлюча, ПредставлениеСертификата);
	МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
	МодульДокументооборотСМинобороныКлиент.ПоказатьСертификат(ПредставлениеСертификата);

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

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

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

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

	Диалог.Показать(ОписаниеОповещения);
	
КонецПроцедуры

&НаКлиенте
Процедура ПутьВыгрузкиПослеВыбораКаталога(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Если ВыбранныеФайлы = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ПутьВыгрузки = ВыбранныеФайлы[0];
	ПутьВыгрузки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьВыгрузки);
	
КонецПроцедуры

&НаКлиенте
Процедура СертификатАбонентаПредставлениеОчистка(Элемент, СтандартнаяОбработка)
	
	СертификатДляПодписания = "";
	МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
	МодульДокументооборотСМинобороныКлиент.ОтобразитьПредставлениеСертификата(
		Элемент,
		СертификатДляПодписания,
		ЭтотОбъект,
		"СертификатАбонентаПредставление");
	
	Модифицированность = Истина;

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

&НаКлиенте
Процедура МЧДПриИзменении(Элемент)
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаСервере
Процедура УправлениеЭлементамиФормы()
	
	Элементы.ГруппаМЧД.Видимость = ЭтоСертификатФизическогоЛица;
	
КонецПроцедуры

&НаКлиенте
Процедура МЧДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ДополнительныеПараметры = Новый Структура();
	ДополнительныеПараметры.Вставить("Организация", Организация);
	ДополнительныеПараметры.Вставить("Доверенность", Доверенность);

	ОткрытьФорму(
		"Обработка.ДокументооборотСКонтролирующимиОрганами.Форма.ВыборТипаДоверенностиДляМинОбороны",
		ДополнительныеПараметры,
		ЭтотОбъект,
		Новый УникальныйИдентификатор,
		, , ,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
		
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Доверенность = ВыбранноеЗначение;
	МЧДПриИзменении(Элементы.МЧД);
	
КонецПроцедуры

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

Связанные материалы