#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Инициализация(Параметры);
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ТелефонДляПаролейИзменениеТекстаРедактирования(
Неопределено,
ТелефонМобильныйДляПаролей,
Истина,
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='Выполните проверку адреса электронной почты'"),, "ЭлектроннаяПочтаДляПаролей");
МастерДалее = Ложь;
КонецЕсли;
КонецЕсли;
Если МастерДалее Тогда
ДополнительныеПараметры.Вставить("ПроверкаЭлектроннаяПочтаДляПаролей", ПроверкаЭлектроннаяПочтаДляПаролей);
ДополнительныеПараметры.Вставить("ЭлектроннаяПочтаДляПаролей", ЭлектроннаяПочтаДляПаролей);
КонецЕсли;
КонецЕсли;
Если МастерДалее Тогда
ДополнительныеПараметры.Вставить("ПолучатьСМСУведомления", ПолучатьСМСУведомления);
ДополнительныеПараметры.Вставить("ТелефонМобильный", ТелефонМобильный);
Модифицированность = Ложь;
Закрыть(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
#КонецОбласти