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