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

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

&НаКлиенте
Перем КонтекстЭДОКлиент;

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	// 0 - ожидание
	// 1 - компонента не установлена
	// 2 - сертификат не найден
	// 3 - сертификат найден
	// 4 - нет криптопровайдера
	ВариантОформления = Параметры.ВариантОформления;
	ОтпечатокСертификата = Параметры.ОтпечатокСертификата;
	УчетнаяЗапись = Параметры.УчетнаяЗапись;
	ИскатьСертификат = Ложь;
	
	Если ВариантОформления = 0 Тогда
		Если Параметры.СертификатНайден = Неопределено Тогда
			ИскатьСертификат = Истина;
		ИначеЕсли Параметры.СертификатНайден = Ложь Тогда
			ВариантОформления = 2;
		Иначе	
			ВариантОформления = 3;
		КонецЕсли;
	КонецЕсли;	
	
	КлючСохраненияПоложенияОкна = "Размеры" + ВариантОформления;
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура Отмена(Команда)
	
	ЗакрытьФорму("Отмена");
	
КонецПроцедуры

&НаКлиенте
Процедура ПродолжитьОтправку(Команда)
	
	ЗакрытьФорму("Продолжить");
	
КонецПроцедуры

&НаКлиенте
Процедура Обновить(Команда)
	
	ЗакрытьФорму("Обновить");
	
КонецПроцедуры

&НаКлиенте
Процедура ТребуетсяПомощьНажатие(Элемент)
	
	ОбработкаЗаявленийАбонентаКлиент.ОткрытьФормуПомощи(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ПредупредитьОПереходеПослеПоискаСертификата(Результат, ДополнительныеПараметры) Экспорт
	
	СертификатНайден = Результат.Выполнено И Результат.СертификатНайден;
	Если НЕ Результат.Выполнено Тогда
		ВариантОформления = 1;
	ИначеЕсли НЕ Результат.СертификатНайден Тогда
		ВариантОформления = 2;
	Иначе
		ВариантОформления = 3;
	КонецЕсли;
	
	ПодготовитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьФорму(РезультатВыбора = "")
	
	Закрыть(РезультатВыбора);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_ОбновитьРазмерыФормы()
	
	Элементы.ВариантОформления.Видимость = НЕ Элементы.ВариантОформления.Видимость;
	Элементы.ВариантОформления.Видимость = НЕ Элементы.ВариантОформления.Видимость;
	
КонецПроцедуры

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

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