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