Панель администрирования УТ / Настроить интеграцию смартвей / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ОбновитьИнтерфейс;

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	СоставНабораКонстантФормы    = ОбщегоНазначенияУТ.ПолучитьСтруктуруНабораКонстант(НаборКонстант);
	ВнешниеРодительскиеКонстанты = НастройкиСистемыПовтИсп.ПолучитьСтруктуруРодительскихКонстант(СоставНабораКонстантФормы);
	
	РежимРаботы = Новый Структура;
	РежимРаботы.Вставить("СоставНабораКонстантФормы",    Новый ФиксированнаяСтруктура(СоставНабораКонстантФормы));
	РежимРаботы.Вставить("ВнешниеРодительскиеКонстанты", Новый ФиксированнаяСтруктура(ВнешниеРодительскиеКонстанты));
	РежимРаботы = Новый ФиксированнаяСтруктура(РежимРаботы);
	
	УстановитьДоступность();
	
	Настройки = ИнтеграцияСмартвей.НастройкиПодключения();
	Логин = Настройки.Логин;
	Пароль = Настройки.Пароль;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	
	ОбновитьИнтерфейсПрограммы();
	СохранитьИзменения();
	ОписаниеОповещенияОЗакрытии.ДополнительныеПараметры.Вставить(
		"ИспользоватьИнтеграциюСоСмартвей", НаборКонстант.ИспользоватьИнтеграциюСоСмартвей);
	
КонецПроцедуры

&НаКлиенте
// Обработчик оповещения формы.
//
// Параметры:
//	ИмяСобытия - Строка - обрабатывается только событие Запись_НаборКонстант, генерируемое панелями администрирования.
//	Параметр   - Структура - содержит имена констант, подчиненных измененной константе, "вызвавшей" оповещение.
//	Источник   - Строка - имя измененной константы, "вызвавшей" оповещение.
//
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если ИмяСобытия <> "Запись_НаборКонстант" Тогда
		Возврат; // такие событие не обрабатываются
	КонецЕсли;
	
	// Если это изменена константа, расположенная в другой форме и влияющая на значения констант этой формы,
	// то прочитаем значения констант и обновим элементы этой формы.
	Если РежимРаботы.ВнешниеРодительскиеКонстанты.Свойство(Источник)
		Или (ТипЗнч(Параметр) = Тип("Структура")
		И ОбщегоНазначенияУТКлиентСервер.ПолучитьОбщиеКлючиСтруктур(
			Параметр, РежимРаботы.ВнешниеРодительскиеКонстанты).Количество() > 0) Тогда
		
		Прочитать();
		УстановитьДоступность();
	КонецЕсли;
	
КонецПроцедуры


#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ИспользоватьИнтеграциюСоСмартвейПриИзменении(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиПриИзменении(Элемент)
	
	НастройкиИзменены = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ЛоготипНажатие(Элемент)
	
	ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://smartway.today");
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ПоказатьСкрытьПароль(Команда)
	
	ПарольВиден = Не ПарольВиден;
	Элементы.Пароль.РежимПароля = Не ПарольВиден;
	Если ПарольВиден Тогда
		Элементы.ПоказатьСкрытьПароль.Заголовок = НСтр("ru = 'Скрыть'");
	Иначе
		Элементы.ПоказатьСкрытьПароль.Заголовок = НСтр("ru = 'Показать'");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Проверить(Команда)
	
	ПроверитьПодключение();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Клиент

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент, ОбновлятьИнтерфейс = Истина)
	
	НастройкиИзменены = Истина;
	
	КонстантаИмя = ПриИзмененииРеквизитаСервер(Элемент.Имя);
	
	Если ОбновлятьИнтерфейс Тогда
		ОбновитьИнтерфейс = Истина;
		ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПрограммы", 2, Истина);
	КонецЕсли;
	
	Если КонстантаИмя <> "" Тогда
		Оповестить("Запись_НаборКонстант", Новый Структура, КонстантаИмя);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьИнтерфейсПрограммы()
	
	Если ОбновитьИнтерфейс = Истина Тогда
		ОбновитьИнтерфейс = Ложь;
		ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ВызовСервера

&НаСервере
Функция ПриИзмененииРеквизитаСервер(ИмяЭлемента)
	
	РеквизитПутьКДанным = Элементы[ИмяЭлемента].ПутьКДанным;
	КонстантаИмя = СохранитьЗначениеРеквизита(РеквизитПутьКДанным,  Новый Структура);
	УстановитьДоступность(РеквизитПутьКДанным);
	ОбновитьПовторноИспользуемыеЗначения();
	
	Возврат КонстантаИмя;
	
КонецФункции

#КонецОбласти

#Область Сервер

&НаСервере
Функция СохранитьЗначениеРеквизита(РеквизитПутьКДанным, Результат)
	
	// Сохранение значений реквизитов, не связанных с константами напрямую (в отношении один-к-одному).
	Если РеквизитПутьКДанным = "" Тогда
		Возврат "";
	КонецЕсли;
	
	// Определение имени константы.
	КонстантаИмя = "";
	Если СтрНачинаетсяС(НРег(РеквизитПутьКДанным), НРег("НаборКонстант.")) Тогда
		// Если путь к данным реквизита указан через "НаборКонстант".
		ЧастиИмени = СтрРазделить(РеквизитПутьКДанным, ".");
		КонстантаИмя = ЧастиИмени[1];
	КонецЕсли;
	
	// Сохранения значения константы.
	Если КонстантаИмя <> "" Тогда
		КонстантаМенеджер = Константы[КонстантаИмя];
		КонстантаЗначение = НаборКонстант[КонстантаИмя];
		
		Если КонстантаМенеджер.Получить() <> КонстантаЗначение Тогда
			КонстантаМенеджер.Установить(КонстантаЗначение);
		КонецЕсли;
		
		Если НастройкиСистемыПовтИсп.ЕстьПодчиненныеКонстанты(КонстантаИмя, КонстантаЗначение) Тогда
			Прочитать();
		КонецЕсли;
	КонецЕсли;
	
	Возврат КонстантаИмя;
	
КонецФункции

&НаСервере
Процедура УстановитьДоступность(РеквизитПутьКДанным = "")
	
	ИнтеграцияВключена = НаборКонстант.ИспользоватьИнтеграциюСоСмартвей;
	
	Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьИнтеграциюСоСмартвей" Или РеквизитПутьКДанным = "" Тогда
		Элементы.Логин.Доступность                = ИнтеграцияВключена;
		Элементы.Пароль.Доступность               = ИнтеграцияВключена;
		Элементы.ПоказатьСкрытьПароль.Доступность = ИнтеграцияВключена;
		Элементы.Проверить.Доступность            = ИнтеграцияВключена;
		Элементы.Логин.АвтоОтметкаНезаполненного  = ИнтеграцияВключена;
		Элементы.Пароль.АвтоОтметкаНезаполненного = ИнтеграцияВключена;
	КонецЕсли;
	
	ОбменДаннымиУТУП.УстановитьДоступностьНастроекУзлаИнформационнойБазы(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура СохранитьИзменения()
	
	Если Не НастройкиИзменены Тогда
		Возврат;
	КонецЕсли;
	
	Если Не НаборКонстант.ИспользоватьИнтеграциюСоСмартвей Тогда
		Логин = "";
		Пароль = "";
	КонецЕсли;
	
	НастройкиПодключения = ИнтеграцияСмартвей.ИнициализироватьНастройкиПодключения();
	НастройкиПодключения.Логин = Логин;
	НастройкиПодключения.Пароль = Пароль;
	
	ИнтеграцияСмартвей.СохранитьНастройкиПодключения(НастройкиПодключения);
	
	ПараметрыЗадания = Новый Структура;
	ПараметрыЗадания.Вставить("Использование", НаборКонстант.ИспользоватьИнтеграциюСоСмартвей);
	РегламентныеЗаданияСервер.ИзменитьЗадание(
		РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Метаданные.РегламентныеЗадания.ПолучениеДанныхСмартвей), ПараметрыЗадания);
	
	НастройкиИзменены = Ложь;
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьПодключение()
	
	Элементы.ДекорацияСоединениеУспешно.Видимость = Ложь;
	Элементы.ДекорацияСоединениеНеуспешно.Видимость = Ложь;
	
	НастройкиПодключения = ИнтеграцияСмартвей.ИнициализироватьНастройкиПодключения();
	НастройкиПодключения.Логин = Логин;
	НастройкиПодключения.Пароль = Пароль;
	
	Если ИнтеграцияСмартвей.ПроверитьПодключение(НастройкиПодключения) Тогда
		Элементы.ДекорацияСоединениеУспешно.Видимость = Истина;
	Иначе
		Элементы.ДекорацияСоединениеНеуспешно.Видимость = Истина;
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

Связанные материалы