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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	 // Чтобы присвоить значение
	ТелефонДляПаролейИзменениеТекстаРедактирования(
		Неопределено, 
		ТелефонМобильныйДляПаролей, 
		Истина, 
		0.1);
		
	ЭлектроннаяПочтаДляПаролейИзменениеТекстаРедактирования(
		Неопределено, 
		ЭлектроннаяПочтаДляПаролей, 
		Истина, 
		0.1);
	
	УправлениеФормой(ЭтаФорма);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПолучатьУведомленияПриИзменении(Элемент)
	
	Если ПолучатьСМСУведомления И ЗначениеЗаполнено(ТелефонМобильныйДляПаролей) Тогда
		ТелефонМобильный = ТелефонМобильныйДляПаролей;
	Иначе
		ТелефонМобильный = "";
	КонецЕсли;

	ИзменитьОформлениеПодсказкиОбУведомлениях(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОтправитьКодПодтвержденияТелефонДляПаролей();	
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПолучатьУведомленияРасширеннаяПодсказкаОбработкаНавигационнойСсылкиПослеВводаТелефона(Результат, ВходящийКонтекст) Экспорт
	
	Телефон = ТелефонМобильныйБезРазделителей(Результат);
	Если СтрДлина(Телефон) = 11 Тогда
		ТелефонМобильный = СтрШаблон("+7 %1 %2-%3-%4", Сред(Телефон, 2, 3), Сред(Телефон, 5, 3), Сред(Телефон, 8, 2), Сред(Телефон, 10, 2));
		УправлениеФормой(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ЗапуститьОбратныйОтсчет()
	
	ПодключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчета", 1, Истина);
	
КонецПроцедуры

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

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

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

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

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

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

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

		Иначе
			ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.ОписаниеОшибки,, "КодПодтвержденияТелефон");
		КонецЕсли;
			
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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