#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ПравоДобавленияКлассификатораОрганизаций = ПравоДоступа("Добавление", Метаданные.Справочники.КлассификаторОрганизацийЕГАИС);
Если Не Записано Тогда
ЗагружатьВходящиеДокументы = Запись.ЗагружатьВходящиеДокументы;
ПриСозданииЧтенииНаСервере();
КонецЕсли;
Элементы.Подсказка.Видимость = НЕ ОбщегоНазначения.РазделениеВключено();
Элементы.ПолучитьКодФСРАР.Видимость = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.НастройкиОбменаЕГАИС);
ОбщегоНазначенияСобытияФормИСПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не Записано
И Не ЗначениеЗаполнено(Запись.РабочееМесто) Тогда
МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента();
МодульМенеджерОборудованияВызовСервера = ОбщегоНазначенияКлиент.ОбщийМодуль("МенеджерОборудованияВызовСервера");
Если МенеджерОборудованияИСКлиентПовтИсп.ИспользуетсяПодсистемаБиблиотекиБПО3() Тогда
Запись.РабочееМесто = МодульМенеджерОборудованияВызовСервера.РабочееМестоКлиента();
Иначе
Запись.РабочееМесто = МодульМенеджерОборудованияВызовСервера.ПолучитьРабочееМестоКлиента();
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Запись.АдресУТМ)
И ЗначениеЗаполнено(Запись.ПортУТМ)
И ЗначениеЗаполнено(Запись.ИдентификаторФСРАР) Тогда
ПодключениеНастроеноКорректно = Ложь;
УказанПравильныйКодФСРАР = Ложь;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ВыполняетсяПроверкаПодключенияКУТМ;
ПодключитьОбработчикОжидания("ПроверитьПодключениеКУТМ", 3, Истина);
Иначе
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ПроверкаНеПодключенияНеВыполнялась;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_КлассификаторОрганизацийЕГАИС" Тогда
ЗаполнитьДанные();
КонецЕсли;
ОбщегоНазначенияСобытияФормИСКлиентПереопределяемый.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
Записано = Истина;
Запись.РабочееМесто = ТекущийОбъект.РабочееМесто;
РабочееМестоКеш = ТекущийОбъект.РабочееМесто;
ИдентификаторФСРАРКеш = ТекущийОбъект.ИдентификаторФСРАР;
ОбменНаСервере = ТекущийОбъект.ОбменНаСервере;
ЗагружатьВходящиеДокументы = ТекущийОбъект.ЗагружатьВходящиеДокументы;
Если Не ОбменНаСервере Тогда
ОбменПоРасписанию = ТекущийОбъект.ОбменНаКлиентеПоРасписанию;
РасписаниеОбмена = ТекущийОбъект.ОбменНаКлиентеРасписание.Получить();
Иначе
ОбменПоРасписанию = Ложь;
РасписаниеОбмена = Неопределено;
КонецЕсли;
ПриСозданииЧтенииНаСервере();
ОбщегоНазначенияСобытияФормИСПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ОбщегоНазначенияСобытияФормИСКлиентПереопределяемый.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.ОбменНаСервере = ОбменНаСервере;
ТекущийОбъект.ЗагружатьВходящиеДокументы = ЗагружатьВходящиеДокументы;
Если Не ОбменНаСервере Тогда
ТекущийОбъект.ОбменНаКлиентеПоРасписанию = ОбменПоРасписанию;
ТекущийОбъект.ОбменНаКлиентеРасписание = Новый ХранилищеЗначения(РасписаниеОбмена);
Иначе
ТекущийОбъект.ОбменНаКлиентеПоРасписанию = Ложь;
ТекущийОбъект.ОбменНаКлиентеРасписание = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
РабочееМестоКеш = Запись.РабочееМесто;
ИдентификаторФСРАРКеш = Запись.ИдентификаторФСРАР;
Записано = Истина;
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("ИдентификаторФСРАР", Запись.ИдентификаторФСРАР);
Оповестить("Запись_ПараметрыПодключенияЕГАИС", ПараметрыОповещения, ЭтотОбъект);
ОбменДаннымиЕГАИСКлиент.УстановитьПризнакНеобходимостиОбновленияНастроекОбменаПоРасписанию();
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ТребуетсяПроверкаНаДубли = (РабочееМестоКеш <> Запись.РабочееМесто)
Или (ИдентификаторФСРАРКеш <> Запись.ИдентификаторФСРАР)
Или Не Записано;
Если ТребуетсяПроверкаНаДубли Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1 КАК Поле1
|ИЗ
| РегистрСведений.НастройкиОбменаЕГАИС КАК НастройкиОбменаЕГАИС
|ГДЕ
| НастройкиОбменаЕГАИС.ИдентификаторФСРАР = &ИдентификаторФСРАР
| И НастройкиОбменаЕГАИС.РабочееМесто = &РабочееМесто");
Запрос.УстановитьПараметр("ИдентификаторФСРАР", Запись.ИдентификаторФСРАР);
Запрос.УстановитьПараметр("РабочееМесто", Запись.РабочееМесто);
Если НЕ Запрос.Выполнить().Пустой() Тогда
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон(
НСтр("ru = 'Настройка обмена для организации с кодом ФСРАР %1 уже существует'"),
Запись.ИдентификаторФСРАР),,
"Запись.ИдентификаторФСРАР",,
Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
Если ПринудительноЗакрытьФорму Тогда
Возврат;
КонецЕсли;
Если ПодключениеНастроеноКорректно
И УказанПравильныйКодФСРАР
И ТребуетсяЗапроситьДанныеОрганизацииЕГАИС
И ПравоДобавленияКлассификатораОрганизаций Тогда
Отказ = Истина;
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru='Запросить данные'"));
Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru='Закрыть форму'"));
Кнопки.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru='Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("ОбработатьОтветНаВопросОЗапросеДанныхОрганизацииЕГАИСПередЗаписью", ЭтотОбъект),
СтрШаблон(
НСтр("ru='Перед выполнением обмена данными с ЕГАИС рекомендуется
|запросить данные организации с кодом ФСРАР %1.'"),
Запись.ИдентификаторФСРАР),
Кнопки,,
КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ИдентификаторФСРАРПриИзменении(Элемент)
ЗаполнитьДанные();
ПодключениеНастроеноКорректно = Ложь;
УказанПравильныйКодФСРАР = Ложь;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ВыполняетсяПроверкаПодключенияКУТМ;
ПодключитьОбработчикОжидания("ПроверитьПодключениеКУТМ", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОбменНаСервереПриИзменении(Элемент)
ПриИзмененииВариантаПодключения(ЭтотОбъект);
Если ОбменНаСервере = 1 Тогда
Если ОбменНаКлиентеРасписаниеКеш <> РасписаниеОбмена
И РасписаниеОбмена <> Неопределено Тогда
ОбменНаКлиентеПоРасписаниюКеш = ОбменПоРасписанию;
ОбменНаКлиентеРасписаниеКеш = РасписаниеОбмена;
КонецЕсли;
ПрочитатьРасписаниеОбменаНаСервере();
Иначе
Если ОбменНаКлиентеРасписаниеКеш <> Неопределено Тогда
ОбменПоРасписанию = ОбменНаКлиентеПоРасписаниюКеш;
РасписаниеОбмена = ОбменНаКлиентеРасписаниеКеш;
ОбменНаКлиентеПоРасписаниюКеш = Неопределено;
ОбменНаКлиентеРасписаниеКеш = Неопределено;
КонецЕсли;
ИзменитьРасписаниеОбменаНаКлиенте(ЭтотОбъект, РасписаниеОбмена);
КонецЕсли;
ПодключениеНастроеноКорректно = Ложь;
УказанПравильныйКодФСРАР = Ложь;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ВыполняетсяПроверкаПодключенияКУТМ;
ПодключитьОбработчикОжидания("ПроверитьПодключениеКУТМ", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура АдресУТМПриИзменении(Элемент)
ПодключениеНастроеноКорректно = Ложь;
УказанПравильныйКодФСРАР = Ложь;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ВыполняетсяПроверкаПодключенияКУТМ;
ПодключитьОбработчикОжидания("ПроверитьПодключениеКУТМ", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПортУТМПриИзменении(Элемент)
ПодключениеНастроеноКорректно = Ложь;
УказанПравильныйКодФСРАР = Ложь;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ВыполняетсяПроверкаПодключенияКУТМ;
ПодключитьОбработчикОжидания("ПроверитьПодключениеКУТМ", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТаймаутПриИзменении(Элемент)
ПодключениеНастроеноКорректно = Ложь;
УказанПравильныйКодФСРАР = Ложь;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ВыполняетсяПроверкаПодключенияКУТМ;
ПодключитьОбработчикОжидания("ПроверитьПодключениеКУТМ", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОбменПоРасписаниюПриИзменении(Элемент)
Если ОбменНаСервере = 1 Тогда
ИзменитьРасписаниеОбменаНаСервере();
Иначе
ИзменитьРасписаниеОбменаНаКлиенте(ЭтотОбъект, РасписаниеОбмена);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГруппаВыполняетсяПроверкаПодключенияКУТМНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОбработатьНавигационнуюСсылку(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаНетСвязиСУТМНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОбработатьНавигационнуюСсылку(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаПодключениеНастроеноКорректноНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОбработатьНавигационнуюСсылку(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаГруппаПроверкаНеПодключенияНеВыполняласьНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОбработатьНавигационнуюСсылку(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура РабочееМестоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
СтандартнаяОбработка = Ложь;
МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента();
МодульМенеджерОборудованияВызовСервера = ОбщегоНазначенияКлиент.ОбщийМодуль("МенеджерОборудованияВызовСервера");
Если МенеджерОборудованияИСКлиентПовтИсп.ИспользуетсяПодсистемаБиблиотекиБПО3() Тогда
Запись.РабочееМесто = МодульМенеджерОборудованияВызовСервера.РабочееМестоКлиента();
Иначе
Запись.РабочееМесто = МодульМенеджерОборудованияВызовСервера.ПолучитьРабочееМестоКлиента();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТекстСопоставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "КомандаОткрытьОрганизацию" Тогда
ПоказатьЗначение(, ОрганизацияКонтрагент);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "КомандаОткрытьТорговыйОбъект" Тогда
ПоказатьЗначение(, ТорговыйОбъект);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "КомандаОткрытьОрганизациюЕГАИС" Тогда
ПоказатьЗначение(, ОрганизацияЕГАИС);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "КомандаЗапроситьОрганизациюЕГАИС" Тогда
Если Модифицированность Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru='Записать и продолжить'"));
Кнопки.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru='Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("ОбработатьОтветНаВопросОЗаписиНастроекПередЗапросомОрганизацииЕГАИС", ЭтотОбъект),
НСтр("ru='Перед запросом данных организации ЕГАИС
|по коду ФСРАР текущая настройка обмена должна быть записана.'"),
Кнопки,,
КодВозвратаДиалога.Да);
Иначе
Если Не ЗначениеЗаполнено(ОрганизацияЕГАИС)
И Не ЗаписатьНастройкуОбмена(Ложь) Тогда
Возврат;
КонецЕсли;
НачатьФормированиеЗапросаНаЗагрузкуОрганизации();
КонецЕсли;
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "КомандаЗапроситьКодФСРАР" Тогда
ПроверитьЗаполнениеПолучитьКодФСРАРИзУТМ();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда) Экспорт
Если ОбщегоНазначенияЕГАИСКлиент.ЭтоРасширеннаяВерсияГосИС() Тогда
МодульСобытияФормИСКлиентПереопределяемый = ОбщегоНазначенияКлиент.ОбщийМодуль("СобытияФормИСКлиентПереопределяемый");
МодульСобытияФормИСКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьКодФСРАР(Команда)
ПроверитьЗаполнениеПолучитьКодФСРАРИзУТМ();
КонецПроцедуры
&НаКлиенте
Процедура НастроитьРасписание(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ИзменитьРасписаниеОбмена", ЭтотОбъект);
ОткрытьНастройкуРасписанияОбмена(ОписаниеОповещения, РасписаниеОбмена);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ЗаполнитьДанные()
ДанныеСопоставления = Неопределено;
ТребуетсяЗапроситьДанныеОрганизацииЕГАИС = Истина;
ОрганизацияЕГАИС = Справочники.КлассификаторОрганизацийЕГАИС.ПустаяСсылка();
Если ЗначениеЗаполнено(СокрЛП(Запись.ИдентификаторФСРАР)) Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Код", СокрЛП(Запись.ИдентификаторФСРАР));
Запрос.Текст =
"ВЫБРАТЬ
| КлассификаторОрганизацийЕГАИС.Ссылка КАК Ссылка,
| КлассификаторОрганизацийЕГАИС.Контрагент КАК Контрагент,
| КлассификаторОрганизацийЕГАИС.ТорговыйОбъект КАК ТорговыйОбъект,
| КлассификаторОрганизацийЕГАИС.СоответствуетОрганизации КАК СоответствуетОрганизации
|ИЗ
| Справочник.КлассификаторОрганизацийЕГАИС КАК КлассификаторОрганизацийЕГАИС
|ГДЕ
| КлассификаторОрганизацийЕГАИС.Код = &Код";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ДанныеСопоставления = Новый Структура;
ДанныеСопоставления.Вставить("ОрганизацияЕГАИС", Выборка.Ссылка);
ДанныеСопоставления.Вставить("Организация", Выборка.Контрагент);
ДанныеСопоставления.Вставить("ТорговыйОбъект", Выборка.ТорговыйОбъект);
ДанныеСопоставления.Вставить("СоответствуетОрганизации", Выборка.СоответствуетОрганизации);
КонецЕсли;
КонецЕсли;
Если ДанныеСопоставления <> Неопределено Тогда
ОрганизацияКонтрагент = ДанныеСопоставления.Организация;
ТорговыйОбъект = ДанныеСопоставления.ТорговыйОбъект;
ОрганизацияЕГАИС = ДанныеСопоставления.ОрганизацияЕГАИС;
СоответствуетОрганизации = ДанныеСопоставления.СоответствуетОрганизации;
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЕГАИСПрисоединенныеФайлы.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЕГАИСПрисоединенныеФайлы КАК ЕГАИСПрисоединенныеФайлы
|ГДЕ
| ЕГАИСПрисоединенныеФайлы.Операция = ЗНАЧЕНИЕ(Перечисление.ВидыДокументовЕГАИС.ЗапросДанныхОрганизации)
| И ЕГАИСПрисоединенныеФайлы.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовИС.Исходящий)
| И ЕГАИСПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
|
|УПОРЯДОЧИТЬ ПО
| ЕГАИСПрисоединенныеФайлы.ДатаМодификацииУниверсальная УБЫВ");
Запрос.УстановитьПараметр("ВладелецФайла", ОрганизацияЕГАИС);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ТекстСообщенияXML = ПротоколОбменаИС.ТекстСообщенияXMLИзПротокола(Выборка.Ссылка);
Если СтрНайти(ТекстСообщенияXML, СокрЛП(Запись.ИдентификаторФСРАР)) > 0 Тогда
ТребуетсяЗапроситьДанныеОрганизацииЕГАИС = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОбновитьТекстСопоставления(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьТекстСопоставления(Форма)
МассивСтрок = Новый Массив;
Если ЗначениеЗаполнено(Форма.ОрганизацияЕГАИС) Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Организация ЕГАИС:'")));
МассивСтрок.Добавить(" ");
Если ЗначениеЗаполнено(Форма.ОрганизацияЕГАИС) Тогда
ПредставлениеОрганизацииЕГАИС = Строка(Форма.ОрганизацияЕГАИС);
Если ПредставлениеОрганизацииЕГАИС = "<>" Тогда
ПредставлениеОрганизацииЕГАИС = НСтр("ru = '<Новая организация>'");
КонецЕсли;
Иначе
ПредставлениеОрганизацииЕГАИС = НСтр("ru = '<не загружена из ЕГАИС>'");
КонецЕсли;
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
ПредставлениеОрганизацииЕГАИС,
Новый Шрифт(,,,,Истина),
?(ЗначениеЗаполнено(Форма.ОрганизацияЕГАИС),
Форма.ЦветаСтиляКлиент.ЦветГиперссылкиГосИС,
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС),,
"КомандаОткрытьОрганизациюЕГАИС"));
МассивСтрок.Добавить(Символы.ПС);
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Организация:'")));
МассивСтрок.Добавить(" ");
Если Не ЗначениеЗаполнено(Форма.ОрганизацияКонтрагент) Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = '<не сопоставлено>'"),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС,,
"КомандаОткрытьОрганизациюЕГАИС"));
Иначе
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
Строка(Форма.ОрганизацияКонтрагент),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветГиперссылкиГосИС,,
"КомандаОткрытьОрганизацию"));
КонецЕсли;
МассивСтрок.Добавить(Символы.ПС);
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Торговый объект:'")));
МассивСтрок.Добавить(" ");
Если Не ЗначениеЗаполнено(Форма.ТорговыйОбъект) И Форма.СоответствуетОрганизации Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = '<не сопоставлено>'"),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС,,
"КомандаОткрытьОрганизациюЕГАИС"));
Иначе
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
Строка(Форма.ТорговыйОбъект),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветГиперссылкиГосИС,,
"КомандаОткрытьТорговыйОбъект"));
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(СокрЛП(Форма.Запись.ИдентификаторФСРАР))
И Не Форма.ПодключениеНастроеноКорректно Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Организация ЕГАИС не найдена по коду ФСРАР
|в классификаторе организаций.'"),,
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС));
ИначеЕсли ЗначениеЗаполнено(СокрЛП(Форма.Запись.ИдентификаторФСРАР))
И Форма.ПодключениеНастроеноКорректно Тогда
Если Форма.УказанПравильныйКодФСРАР Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Организация ЕГАИС не найдена по коду ФСРАР
|в классификаторе организаций.'"),,
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС));
МассивСтрок.Добавить(" ");
Если Форма.ПравоДобавленияКлассификатораОрганизаций Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Запросить из ЕГАИС'"),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветГиперссылкиГосИС,,
"КомандаЗапроситьОрганизациюЕГАИС"));
КонецЕсли;
Иначе
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Неверный код ФСРАР.'"),,
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС));
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
СтрШаблон(
НСтр("ru = 'Использовать код %1'"),
Форма.КодФСРАРИзУТМ),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветГиперссылкиГосИС,,
"КомандаЗапроситьКодФСРАР"));
КонецЕсли;
Иначе
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Не заполнен код ФСРАР'"),,
Форма.ЦветаСтиляКлиент.ЦветТекстаПроблемаГосИС));
Если Форма.ПодключениеНастроеноКорректно Тогда
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(
НСтр("ru = 'Запросить код ФСРАР из УТМ'"),
Новый Шрифт(,,,,Истина),
Форма.ЦветаСтиляКлиент.ЦветГиперссылкиГосИС,,
"КомандаЗапроситьКодФСРАР"));
КонецЕсли;
КонецЕсли;
Форма.ТекстСопоставление = Новый ФорматированнаяСтрока(МассивСтрок);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПриИзмененииВариантаПодключения(Форма)
Если Форма.ОбменНаСервере = 0 Тогда
Форма.Подсказка = Новый ФорматированнаяСтрока(
НСтр("ru = 'Подключение к УТМ будет осуществляться с компьютера пользователя'"));
ИначеЕсли Форма.ОбменНаСервере = 1 Тогда
Форма.Подсказка = Новый ФорматированнаяСтрока(
НСтр("ru = 'Подключение к УТМ будет осуществляться с компьютера, на котором установлен сервер 1С:Предприятия'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьОтветНаВопросОЗаписиНастроекПередЗапросомОрганизацииЕГАИС(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Если Не ЗаписатьНастройкуОбмена() Тогда
Возврат;
КонецЕсли;
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("ИдентификаторФСРАР", Запись.ИдентификаторФСРАР);
Оповестить("Запись_ПараметрыПодключенияЕГАИС", ПараметрыОповещения, ЭтотОбъект);
Прочитать();
НачатьФормированиеЗапросаНаЗагрузкуОрганизации();
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьОтветНаВопросОЗапросеДанныхОрганизацииЕГАИСПередЗаписью(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Нет Тогда
ПринудительноЗакрытьФорму = Истина;
Закрыть();
Возврат;
КонецЕсли;
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Если Не ЗаписатьНастройкуОбмена() Тогда
Возврат;
КонецЕсли;
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("ИдентификаторФСРАР", Запись.ИдентификаторФСРАР);
Оповестить("Запись_ПараметрыПодключенияЕГАИС", ПараметрыОповещения, ЭтотОбъект);
Прочитать();
НачатьФормированиеЗапросаНаЗагрузкуОрганизации(
Новый ОписаниеОповещения("ПослеЗакрытияФормыЗапросаДанныхОрганизацииПередЗаписью", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияФормыЗапросаДанныхОрганизацииПередЗаписью(Результат, ДополнительныеПараметры) Экспорт
ЗаполнитьДанные();
Если ПодключениеНастроеноКорректно
И УказанПравильныйКодФСРАР
И Не ТребуетсяЗапроситьДанныеОрганизацииЕГАИС Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьФормированиеЗапросаНаЗагрузкуОрганизации(ОповещениеПриЗакрытии = Неопределено)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Операция", ПредопределенноеЗначение("Перечисление.ВидыДокументовЕГАИС.ЗапросДанныхОрганизации"));
ПараметрыФормы.Вставить("ИмяПараметра", "СИО");
ПараметрыФормы.Вставить("ЗначениеПараметра", Запись.ИдентификаторФСРАР);
ПараметрыФормы.Вставить("ОрганизацияЕГАИС", ОрганизацияЕГАИС);
Если ЗначениеЗаполнено(ОрганизацияЕГАИС)
И Строка(ОрганизацияЕГАИС) <> "<>" Тогда
ПараметрыФормы.Вставить("ОрганизацияЕГАИСПредставление", ОрганизацияЕГАИС);
Иначе
ПараметрыФормы.Вставить("ОрганизацияЕГАИСПредставление", НСтр("ru = '<Новая организация>'"));
КонецЕсли;
ОткрытьФорму(
"ОбщаяФорма.ФормированиеИсходящегоЗапросаЕГАИС",
ПараметрыФормы,
ЭтотОбъект,,,,
ОповещениеПриЗакрытии,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Асинх Процедура ПолучениеКодаФСРАР_Завершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Обещание") Тогда
Результат = Ждать Результат;
КонецЕсли;
Если Результат.КодФСРАР <> Неопределено Тогда
Запись.ИдентификаторФСРАР = Результат.КодФСРАР;
Модифицированность = Истина;
ЗаполнитьДанные();
ПодключениеНастроеноКорректно = Истина;
УказанПравильныйКодФСРАР = Истина;
ОбновитьТекстСопоставления(ЭтотОбъект);
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ПроверкаПодключенияКорректно;
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(
СтрШаблон(
НСтр("ru = 'Внутренняя ошибка получения кода ФСРАР. Обратитесь к администратору.
|%1.'"),
Результат.ТекстОшибки));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииЧтенииНаСервере()
ЦветаСтиляКлиент = Новый Структура;
ЦветаСтиляКлиент.Вставить("ЦветГиперссылкиГосИС", ЦветаСтиля.ЦветГиперссылкиГосИС);
ЦветаСтиляКлиент.Вставить("ЦветТекстаПроблемаГосИС", ЦветаСтиля.ЦветТекстаПроблемаГосИС);
ЗаполнитьДанные();
ПриИзмененииВариантаПодключения(ЭтотОбъект);
Если ОбменНаСервере Тогда
ПрочитатьРасписаниеОбменаНаСервере();
Иначе
ИзменитьРасписаниеОбменаНаКлиенте(ЭтотОбъект, РасписаниеОбмена);
КонецЕсли;
Элементы.ГруппаРасписание.ТолькоПросмотр = ТолькоПросмотр;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьРасписаниеОбменаНаСервере()
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Метаданные", "ОбработкаОтветовЕГАИС");
ЗаданияОбмена = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыОтбора);
Если ЗаданияОбмена.Количество() <> 1 Тогда
ЗаписьЖурналаРегистрации(
ОбщегоНазначенияЕГАИСКлиентСервер.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,
Метаданные.РегламентныеЗадания.ОбработкаОтветовЕГАИС,,
НСтр("ru='Не найдено регламентное задание обработки ответов ЕГАИС'"));
ЗаданиеОбмена = Неопределено;
РасписаниеОбмена = Неопределено;
ОбменПоРасписанию = Ложь;
Иначе
ЗаданиеОбмена = ЗаданияОбмена[0];
РасписаниеОбмена = ЗаданиеОбмена.Расписание;
ОбменПоРасписанию = ЗаданиеОбмена.Использование;
КонецЕсли;
Элементы.ОбработкаОтветовЕГАИС.Доступность = ОбменПоРасписанию;
УстановитьТекстНадписиРегламентнойНастройки(ЗаданиеОбмена, Элементы.ОбработкаОтветовЕГАИС);
КонецПроцедуры
&НаСервере
Функция ЗаписатьНастройкуОбмена(ЗаписыватьНастройкуОбмена = Истина)
НачатьТранзакцию();
Попытка
СоздатьЭлементКлассификатораОрганизацийЕГАИС();
Если ЗаписыватьНастройкуОбмена Тогда
Результат = Записать();
Если Не Результат Тогда
ОтменитьТранзакцию();
Возврат Ложь;
КонецЕсли;
Иначе
Результат = Истина;
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(
НСтр("ru = 'ЕГАИС'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Ложь;
КонецПопытки;
ЗаполнитьДанные();
Возврат Результат;
КонецФункции
&НаСервере
Процедура СоздатьЭлементКлассификатораОрганизацийЕГАИС()
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КлассификаторОрганизацийЕГАИС.Ссылка КАК ОрганизацияЕГАИС
|ИЗ
| Справочник.КлассификаторОрганизацийЕГАИС КАК КлассификаторОрганизацийЕГАИС
|ГДЕ
| КлассификаторОрганизацийЕГАИС.Код = &КодВФСРАР");
Запрос.УстановитьПараметр("КодВФСРАР", Запись.ИдентификаторФСРАР);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
ОрганизацияОбъект = Справочники.КлассификаторОрганизацийЕГАИС.СоздатьЭлемент();
ОрганизацияОбъект.Код = Запись.ИдентификаторФСРАР;
ОрганизацияОбъект.ФорматОбмена = ОбменДаннымиЕГАИСКлиентСервер.ФорматОбмена();
ОрганизацияОбъект.СоответствуетОрганизации = Истина;
ОрганизацияОбъект.Записать();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьНастройкуРасписанияОбмена(ОписаниеОповещения, РасписаниеРегламентногоЗадания)
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
РасписаниеРегламентногоЗадания = Новый РасписаниеРегламентногоЗадания;
КонецЕсли;
Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеРегламентногоЗадания);
Диалог.Показать(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРасписаниеОбмена(РасписаниеЗадания, ДополнительныеПараметры) Экспорт
Если РасписаниеЗадания = Неопределено Тогда
Возврат;
КонецЕсли;
РасписаниеОбмена = РасписаниеЗадания;
Если ОбменНаСервере = 1 Тогда
ИзменитьРасписаниеОбменаНаСервере();
Иначе
ИзменитьРасписаниеОбменаНаКлиенте(ЭтотОбъект, РасписаниеОбмена);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьРасписаниеОбменаНаКлиенте(Форма, НовоеРасписание)
Если НовоеРасписание = Неопределено Тогда
ТекстРасписания = НСтр("ru = '<Расписание не задано>'");
Иначе
Если Форма.ОбменПоРасписанию Тогда
ТекстРасписания = СтрШаблон(НСтр("ru = 'Расписание: %1'"), Строка(НовоеРасписание));
Иначе
ТекстРасписания = СтрШаблон(НСтр("ru = 'Расписание (НЕ АКТИВНО): %1'"), Строка(НовоеРасписание));
КонецЕсли;
КонецЕсли;
Форма.Элементы.ОбработкаОтветовЕГАИС.Доступность = Форма.ОбменПоРасписанию;
Форма.Элементы.ОбработкаОтветовЕГАИС.Заголовок = ТекстРасписания;
КонецПроцедуры
&НаСервере
Процедура ИзменитьРасписаниеОбменаНаСервере()
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Метаданные", "ОбработкаОтветовЕГАИС");
ЗаданияОбмена = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыОтбора);
Если ЗаданияОбмена.Количество() <> 1 Тогда
ЗаписьЖурналаРегистрации(
ОбщегоНазначенияЕГАИСКлиентСервер.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,
Метаданные.РегламентныеЗадания.ОбработкаОтветовЕГАИС,,
НСтр("ru='Не найдено регламентное задание обработки ответов ЕГАИС'"));
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не найдено регламентное задание обработки ответов ЕГАИС'"));
ОбменПоРасписанию = Ложь;
Иначе
ИзменитьИспользованиеЗадания("ОбработкаОтветовЕГАИС", ОбменПоРасписанию);
ИзменитьРасписаниеЗадания("ОбработкаОтветовЕГАИС", РасписаниеОбмена);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьИспользованиеЗадания(ИмяЗадания, Использование)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Метаданные", ИмяЗадания);
РегЗадание = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыОтбора)[0];
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Использование", Использование);
РегламентныеЗаданияСервер.ИзменитьЗадание(РегЗадание.УникальныйИдентификатор, ПараметрыЗадания);
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Метаданные", ИмяЗадания);
РегЗадание = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыОтбора)[0];
Элемент = Элементы[ИмяЗадания];
УстановитьТекстНадписиРегламентнойНастройки(РегЗадание, Элемент);
КонецПроцедуры
&НаСервере
Процедура ИзменитьРасписаниеЗадания(ИмяЗадания, РасписаниеРегламентногоЗадания)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Метаданные", ИмяЗадания);
РегЗадание = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыОтбора)[0];
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Расписание", РасписаниеРегламентногоЗадания);
РегламентныеЗаданияСервер.ИзменитьЗадание(РегЗадание.УникальныйИдентификатор, ПараметрыЗадания);
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Метаданные", ИмяЗадания);
РегЗадание = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыОтбора)[0];
Элемент = Элементы[ИмяЗадания];
УстановитьТекстНадписиРегламентнойНастройки(РегЗадание, Элемент);
КонецПроцедуры
&НаСервере
Процедура УстановитьТекстНадписиРегламентнойНастройки(Задание, Элемент)
Перем ТекстРасписания;
ОбщегоНазначенияИС.ПолучитьТекстЗаголовкаИРасписанияРегламентнойНастройки(Задание, ТекстРасписания, ОбменПоРасписанию);
Элемент.Заголовок = ТекстРасписания;
Элемент.Доступность = ОбменПоРасписанию;
КонецПроцедуры
&НаСервереБезКонтекста
Функция КодФСРАРИзУТМНаСервере(НастройкаОбмена)
РезультатПолученияКодаФСРАР = ОбменДаннымиЕГАИСКлиентСервер.КодФСРАРv3(НастройкаОбмена);
Если РезультатПолученияКодаФСРАР.ПроверитьУТМv4 Тогда
РезультатПолученияКодаФСРАР = ОбменДаннымиЕГАИСКлиентСервер.КодФСРАРv4(НастройкаОбмена);
КонецЕсли;
Возврат РезультатПолученияКодаФСРАР;
КонецФункции
&НаКлиенте
Асинх Функция КодФСРАРИзУТМНаКлиенте(НастройкаОбмена)
#Если ВебКлиент Тогда
СистемнаяИнфо = Новый СистемнаяИнформация;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнфо.ВерсияПриложения, "8.3.21.0") < 0 Тогда
Результат = Новый Структура;
Результат.Вставить("КодФСРАРУТМ","");
Результат.Вставить("ТекстОшибки", НСтр("ru = 'Обмен с ЕГАИС из вебклиента недоступен для текущей версии платформы. Используйте тонкий клиент.'"));
Возврат Результат;
КонецЕсли;
РезультатПолученияКодаФСРАР = Ждать ОбменДаннымиЕГАИСВебКлиент.КодФСРАРv3(НастройкаОбмена);
Если РезультатПолученияКодаФСРАР.ПроверитьУТМv4 Тогда
РезультатПолученияКодаФСРАР = Ждать ОбменДаннымиЕГАИСВебКлиент.КодФСРАРv4(НастройкаОбмена);
КонецЕсли;
#Иначе
РезультатПолученияКодаФСРАР = ОбменДаннымиЕГАИСКлиентСервер.КодФСРАРv3(НастройкаОбмена);
Если РезультатПолученияКодаФСРАР.ПроверитьУТМv4 Тогда
РезультатПолученияКодаФСРАР = ОбменДаннымиЕГАИСКлиентСервер.КодФСРАРv4(НастройкаОбмена);
КонецЕсли;
#КонецЕсли
Возврат РезультатПолученияКодаФСРАР;
КонецФункции
&НаКлиенте
Процедура ПолучитьКодФСРАРИзУТМ(ОписаниеОповещения, Таймаут)
ОчиститьСообщения();
НастройкаОбмена = ОбменДаннымиЕГАИСКлиентСервер.НоваяНастройкаОбменаЕГАИС();
ЗаполнитьЗначенияСвойств(НастройкаОбмена,Запись);
НастройкаОбмена.Таймаут = Таймаут;
НастройкаОбмена.ПолучитьДвоичныеДанные = Истина;
Если ОбменНаСервере = 1 Тогда
Результат = КодФСРАРИзУТМНаСервере(НастройкаОбмена);
Иначе
Результат = КодФСРАРИзУТМНаКлиенте(НастройкаОбмена);
КонецЕсли;
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Результат);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьПодключениеКУТМ()
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтображатьСообщенияОбОшибках", Ложь);
ПолучитьКодФСРАРИзУТМ(
Новый ОписаниеОповещения("ПослеПроверкиПодключенияКУТМ", ЭтотОбъект, ДополнительныеПараметры), 1);
КонецПроцедуры
&НаКлиенте
Асинх Процедура ПослеПроверкиПодключенияКУТМ(РезультатПроверки, ДополнительныеПараметры = Неопределено) Экспорт
Если ТипЗнч(РезультатПроверки) = Тип("Обещание") Тогда
РезультатПроверки = Ждать РезультатПроверки;
КонецЕсли;
КодФСРАРИзУТМ = РезультатПроверки.КодФСРАР;
Если ЗначениеЗаполнено(КодФСРАРИзУТМ)
И КодФСРАРИзУТМ = Запись.ИдентификаторФСРАР Тогда
ПодключениеНастроеноКорректно = Истина;
УказанПравильныйКодФСРАР = Истина;
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ПроверкаПодключенияКорректно;
ИначеЕсли КодФСРАРИзУТМ = "WebClient" Тогда
ПодключениеНастроеноКорректно = Истина;
УказанПравильныйКодФСРАР = Истина;
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ПроверкаПодключенияНедоступна;
ИначеЕсли ЗначениеЗаполнено(КодФСРАРИзУТМ) Тогда
ПодключениеНастроеноКорректно = Истина;
УказанПравильныйКодФСРАР = Ложь;
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.ПереданНеверныйКодФСРАР;
Если ДополнительныеПараметры.ОтображатьСообщенияОбОшибках Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатПроверки.ТекстОшибки);
КонецЕсли;
Иначе
Если ДополнительныеПараметры.ОтображатьСообщенияОбОшибках Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатПроверки.ТекстОшибки);
КонецЕсли;
Элементы.СтраницыПроверкаПодключения.ТекущаяСтраница = Элементы.СтраницыПроверкаПодключения.ПодчиненныеЭлементы.НетСвязиСУТМ;
КонецЕсли;
ОбновитьТекстСопоставления(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеОткрытияWebИнтерфейсаУТМ(Результат, ДополнительныеПараметры) Экспорт
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьНавигационнуюСсылку(Знач НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтображатьСообщенияОбОшибках", Истина);
Если НавигационнаяСсылкаФорматированнойСтроки = "ПроверитьПодключениеКУТМ" Тогда
СтандартнаяОбработка = Ложь;
ПолучитьКодФСРАРИзУТМ(
Новый ОписаниеОповещения("ПослеПроверкиПодключенияКУТМ", ЭтотОбъект, ДополнительныеПараметры), Запись.Таймаут)
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьWebИнтерфейсУТМ" Тогда
СтандартнаяОбработка = Ложь;
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(
"http://" + Запись.АдресУТМ + ":" + Формат(Запись.ПортУТМ, "ЧГ=0") + "/",
Новый ОписаниеОповещения("ПослеОткрытияWebИнтерфейсаУТМ", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Повторить" Тогда
СтандартнаяОбработка = Ложь;
ПолучитьКодФСРАРИзУТМ(
Новый ОписаниеОповещения("ПослеПроверкиПодключенияКУТМ", ЭтотОбъект, ДополнительныеПараметры), Запись.Таймаут);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьЗаполнениеПолучитьКодФСРАРИзУТМ()
ОчиститьСообщения();
Если ПустаяСтрока(Запись.АдресУТМ) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru='Не указан IP-адрес (или доменное имя) компьютера с установленной службой УТМ.'"),,
"АдресУТМ",
"Запись");
Возврат;
КонецЕсли;
Если Запись.ПортУТМ = 0 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru='Не указан порт доступа к УТМ.'"),,
"ПортУТМ",
"Запись");
Возврат;
КонецЕсли;
ПолучитьКодФСРАРИзУТМ(
Новый ОписаниеОповещения("ПолучениеКодаФСРАР_Завершение", ЭтотОбъект),
Запись.Таймаут);
КонецПроцедуры
#КонецОбласти