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

файл

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

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормы

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗаменитьЗначения(Команда)
	
	Если АвтоматическоеИсправлениеНевозможно Тогда
		Закрыть();
	Иначе
		Закрыть(НСтр("ru = 'Взять из сертификата'"));
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВБумажномВиде(Команда)
	
	Закрыть(НСтр("ru = 'В бумажном виде'"));
	
КонецПроцедуры

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

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

&НаСервере
Функция ЭлектронноеПодписаниеНевозможно()
	
	ЭлектронноеПодписаниеНевозможно = Ложь;
	
	Для каждого СтрокаТаблицы Из ТаблицаСравненияРеквизитов Цикл
		
		Если СтрокаТаблицы.Различается Тогда
			
			Если СтрокаТаблицы.Наименование = НСтр("ru = 'Страна'") Тогда
			
				ЭлектронноеПодписаниеНевозможно = Истина;
				Прервать;
				
			КонецЕсли;
			
		КонецЕсли;
	КонецЦикла;
	
	Возврат ЭлектронноеПодписаниеНевозможно;
	
КонецФункции

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

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

	Иначе	
		ЭлектронноеПодписаниеНевозможно 	= ЭлектронноеПодписаниеНевозможно();
		АвтоматическоеИсправлениеНевозможно = АвтоматическоеИсправлениеНевозможно();
		
		Подстрока1 = НСтр("ru = 'Некоторые реквизиты сертификата '");
		
		Если ИспользоватьСуществующий Тогда
			Подстрока2 = Новый ФорматированнаяСтрока(ПредставлениеСертификата,,,,"Сертификат");
			Подстрока3 = НСтр("ru = ' отличаются от указанных в заявлении. '");
			Подстрока4 = НСтр("ru = 'Перечисленные ниже реквизиты должны совпадать в заявлении и в сертификате.'");
		Иначе
			Подстрока2 = Новый ФорматированнаяСтрока(ПредставлениеСертификата,,,,"Сертификат");
			Подстрока3 = НСтр("ru = ' отличаются от указанных в заявлении. '");
			Подстрока4 = НСтр("ru = 'Чтобы воспользоваться возможностью электронного подписания заявления в нем должны быть указаны такие же реквизиты, как и в сертификате.'");
		КонецЕсли;
		
		Если ИспользоватьСуществующий Тогда
			
			// Нужно исправлять вручную
			Элементы.ФормаЗаменитьЗначения.Заголовок = НСтр("ru = 'Вернуться к заявлению для исправления'");
			Элементы.ФормаВБумажномВиде.Видимость 	 = Ложь;
			
		ИначеЕсли ЭлектронноеПодписаниеНевозможно ИЛИ ЭтоВторичное Тогда
			
			// Бумажное подписание невозможно
			Элементы.ФормаЗаменитьЗначения.Видимость 	  = Ложь;
			Элементы.ФормаВБумажномВиде.КнопкаПоУмолчанию = Истина;
			
			Подстрока4 = НСтр("ru = 'В этом случае подписание электронной подписью недоступно, возможно оформление подключения только в бумажном виде.'");
			
		ИначеЕсли АвтоматическоеИсправлениеНевозможно Тогда
			
			// Нужно исправлять вручную
			Элементы.ФормаЗаменитьЗначения.Заголовок = НСтр("ru = 'Вернуться к заявлению для исправления'");
			
		КонецЕсли;
				
		Элементы.ТекстПояснения.Заголовок = Новый ФорматированнаяСтрока(
			Подстрока1,
			Подстрока2,
			Подстрока3,
			Подстрока4);
			
	КонецЕсли;

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

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


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