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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

&НаКлиенте
Процедура РежимРаботыСКлючамиЛокальноПриИзменении(Элемент)
	
	ПереместитьПодсказкиПодТокенИлиЛокальноеХранение();
	РежимРаботыСКлючамиПриИзменении(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура РежимРаботыСКлючамиНаТокенеПриИзменении(Элемент)
	
	ПереместитьПодсказкиПодТокенИлиЛокальноеХранение();
	РежимРаботыСКлючамиПриИзменении(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ТелефонДляПаролейПриИзменении(Элемент)
	
	ТелефонДляПаролейИзменениеТекстаРедактирования(Элемент, Элемент.ТекстРедактирования, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура РежимРаботыСКлючамиПриИзменении(Элемент)
	
	УправлениеФормой(ЭтотОбъект);
	ПроверитьНаличиеСервера();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ТелефонДляПаролейИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
	
	ОбработкаЗаявленийАбонентаКлиент.ТелефонДляПаролейИзменениеТекстаРедактирования(ЭтотОбъект, Текст);
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура УчетнаяЗаписьОблачнойПодписиСоздание(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	СоздатьУчетнуюЗаписьОблачнойПодписи();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ВосстановитьУчетнуюЗаписьОблачнойПодписи(Команда)
	
	СоздатьУчетнуюЗаписьОблачнойПодписи();
	
КонецПроцедуры

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ВыбранТокен(Форма)

	Возврат Форма.РежимРаботыСКлючами = 4;

КонецФункции

&НаСервере
Функция УдалосьПолучитьСертификаты()

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

КонецФункции

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

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

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

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

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

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

&НаКлиенте
Процедура ПриОткрытии_ПослеПолученияКонтекста(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДОКлиент = Результат.КонтекстЭДО;
	
	ПроверитьНаличиеСервера();
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьНаличиеСервера()

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПроверитьНомерНаСервере(Телефон, Идентификатор) Экспорт
	
	Возврат МенеджерСервисаКриптографии.ПолучитьКодПроверкиТелефона(Телефон, Идентификатор);
	
КонецФункции

&НаКлиенте
Процедура Подключаемый_АктивироватьПолеКодПодтверждения() Экспорт
	
	ТекущийЭлемент = Элементы.КодПодтверждения;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбработчикОбратногоОтсчета() Экспорт
	
	ОбработкаЗаявленийАбонентаКлиент.Подключаемый_ОбработчикОбратногоОтсчета(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма) Экспорт
	
	Элементы = Форма.Элементы;
	
	ДоступностьГруппы = Форма.РежимРаботыСКлючами = 1 И НЕ Форма.ТолькоПросмотр И Форма.ДоступнаПодписьМоделиСервиса;
	Элементы.ГруппаВОблакеВертикальная.Доступность = ДоступностьГруппы;
	Элементы.ГруппаВОблакеВыбор.Доступность = ДоступностьГруппы;

	ИзменитьОформлениеЭПВОблаке(Форма);
	ИзменитьОформлениеОблачнаяПодпись(Форма);
	ИзменитьОформлениеЛокальнаяПодпись(Форма);
	ИзменитьОформлениеОшибкаВключенияСертификата(Форма);
	
	Элементы.РежимРаботыСКлючамиЛокально.Доступность = НЕ Форма.ТолькоПросмотр;
	Элементы.РежимРаботыСКлючамиВМоделиСервиса.Доступность = НЕ Форма.ТолькоПросмотр;
	Элементы.РежимРаботыСКлючамиОблачнаяПодпись.Доступность = НЕ Форма.ТолькоПросмотр;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеЭПВОблаке(Форма) Экспорт
	
	Элементы = Форма.Элементы;
		
	ДоступностьГруппы = Форма.РежимРаботыСКлючами = 1 И НЕ Форма.ТолькоПросмотр И Форма.ДоступнаПодписьМоделиСервиса;
	Элементы.ГруппаВОблакеВертикальная.Доступность = ДоступностьГруппы;
	Элементы.ГруппаВОблакеВыбор.Доступность = ДоступностьГруппы;
	Элементы.РежимРаботыСКлючамиВМоделиСервиса.Видимость = Форма.ДоступнаПодписьМоделиСервиса;

	ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеЭПВОблаке(Форма);
		
КонецПроцедуры

&НаСервере
Процедура ПереместитьПодсказкиПодТокенИлиЛокальноеХранение()
	
	Если ВыбранТокен(ЭтотОбъект) Тогда
		МестоРасположения = Элементы.РежимРаботыСКлючамиЛокально;
	Иначе
		МестоРасположения = Элементы.ГруппаЛокальныеКлючиЛицензия;
	КонецЕсли;
	
	Элементы.Переместить(
		Элементы.ГруппаЛокальныеКлючиГоризонтальная,
		Элементы.ГруппаЛокальныеКлючи,
		МестоРасположения);
		
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеПодсказкиПоЛокальномуКлючу(
		Форма, 
		ЕстьОшибкаЛокальногоХраненияКлючей)
	
	Элементы = Форма.Элементы;
	
	ПодсказкаПоЛокальномуКлючу = "";
	Если НЕ ЕстьОшибкаЛокальногоХраненияКлючей Тогда
		ПодсказкаПоЛокальномуКлючу = НСтр("ru = 'Ключ электронной подписи будет храниться на этом компьютере при помощи %1'");
		Если Форма.CryptoProCSPУстановлен Тогда
			ПодсказкаПоЛокальномуКлючу = СтрШаблон(ПодсказкаПоЛокальномуКлючу, НСтр("ru = 'CryptoPro CSP'"));
		Иначе
			ПодсказкаПоЛокальномуКлючу = СтрШаблон(ПодсказкаПоЛокальномуКлючу, НСтр("ru = 'ViPNet CSP'"));
		КонецЕсли;
		Элементы.РежимРаботыСКлючамиЛокально.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
	Иначе
		Элементы.РежимРаботыСКлючамиЛокально.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
	КонецЕсли;	
	Элементы.РежимРаботыСКлючамиЛокально.РасширеннаяПодсказка.Заголовок = ПодсказкаПоЛокальномуКлючу;
	
	Если Элементы.ГруппаЛокальныеКлючиВарианты.ТекущаяСтраница = Элементы.ЛокальныйКлючКриптопровайдеры 
		И Элементы.ВыбранноеМестоХраненияКлюча.СписокВыбора.Количество() < 2 Тогда
		Элементы.ГруппаЛокальныеКлючиГоризонтальная.Видимость = Ложь;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПроверитьТелефонПоКодуНаСервере(Идентификатор, КодПодтверждения) Экспорт 
	
	Возврат МенеджерСервисаКриптографии.ПроверитьТелефонПоКоду(Идентификатор, КодПодтверждения);
	
КонецФункции

&НаКлиенте
Процедура Подключаемый_ОбновитьТелефонДляПаролей() Экспорт
	
	ОбработкаЗаявленийАбонентаКлиент.Подключаемый_ОбновитьТелефонДляПаролей(ЭтотОбъект);
	
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_АктивироватьКнопкуПроверитьНомер()
	
	ТекущийЭлемент = Элементы.ПроверитьНомер;	
	
КонецПроцедуры

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

	Если ViPNetCSPУстановлен ИЛИ ПоказыватьОбаКриптопровайдера Тогда
		СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.VipNet"),
			НСтр("ru = 'На рабочем компьютере (ViPNet CSP)'"));
	КонецЕсли;
		
	Если CryptoProCSPУстановлен ИЛИ ПоказыватьОбаКриптопровайдера Тогда
		СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoPro"),
			НСтр("ru = 'На рабочем компьютере (CryptoPro CSP)'"));
	КонецЕсли;
	
	Если СписокВыбора.Количество() = 1 Тогда
		ВыбранноеМестоХраненияКлюча = СписокВыбора[0].Значение;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Логин) Тогда
		Логин = ИНН;
	КонецЕсли;
	
	ДоступнаПодписьМоделиСервиса = ЭлектроннаяПодписьВМоделиСервиса.ИспользованиеВозможно();
	ДоступнаОблачнаяПодпись = ОбработкаЗаявленийАбонента.ИспользованиеОблачнойПодписиВЗаявленииВозможно(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УправлениеФормойКлиент() Экспорт
	
	УправлениеФормой(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура УправлениеФормойСервер() Экспорт
	
	УправлениеФормой(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьДействияПриПравильномКоде() Экспорт
	
	ЭтоЗаглушка = Истина;
	
КонецПроцедуры

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

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