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