Процедура ЗагрузитьСхемуНажатие(Элемент)
	
	ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ВыборФайла.Фильтр = "(*.zip)|*.zip";
	Если Не ВыборФайла.Выбрать() Тогда
		Возврат;
	КонецЕсли;   
	НоваяСхема = Неопределено;
	Попытка
		ЧтениеZip = Новый ЧтениеZipФайла(ВыборФайла.ПолноеИмяФайла);
		ЧтениеZip.Извлечь(ЧтениеZip.Элементы[0], КаталогВременныхФайлов());
		ИмяВременногоФайла = КаталогВременныхФайлов() + "\" + ЧтениеZip.Элементы[0].Имя;
		Чтение = Новый ЧтениеXML;
		Чтение.ОткрытьФайл(ИмяВременногоФайла);
		Структура = СериализаторXDTO.ПрочитатьXML(Чтение);
		Чтение.Закрыть();
		УдалитьФайлы(ИмяВременногоФайла);
		Если Структура.Свойство("SDBL") И Структура.Свойство("СУБД") Тогда
			НоваяСхема = Структура;
		КонецЕсли; 
	Исключение
		Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
	КонецПопытки;
	Если НоваяСхема = Неопределено Тогда
		Сообщить("Неверный формат файла", СтатусСообщения.Внимание);
	Иначе
		УстановитьНовуюСхему(НоваяСхема);
	КонецЕсли; 
	
КонецПроцедуры

Процедура ОбновитьДоступность()
	
	ЧужаяСхемаБД = ирОбщий.ПолучитьЧужуюСхемуБДЛкс(мАдресЧужойСхемыБД);
	ЭтаФорма.ИспользоватьЧужуюСхему = ЧужаяСхемаБД <> Неопределено;
	ЭлементыФормы.ИспользоватьЧужуюСхему.Доступность = ИспользоватьЧужуюСхему;
	Если ЧужаяСхемаБД <> Неопределено Тогда
		ЭтаФорма.СтрокаСоединенияБазы = ЧужаяСхемаБД.СтрокаСоединения;
	КонецЕсли; 
	
КонецПроцедуры

Процедура ИспользоватьЧужуюСхемуПриИзменении(Элемент)
	
	УстановитьНовуюСхему(Неопределено);
	
КонецПроцедуры

Процедура УстановитьНовуюСхему(НоваяСхема)
	
	Если НоваяСхема = Неопределено Тогда
		мАдресЧужойСхемыБД = "";
	Иначе
		мАдресЧужойСхемыБД = ПоместитьВоВременноеХранилище(НоваяСхема, Новый УникальныйИдентификатор("bbcb1c79-cda3-4d69-a57a-0f46e4e12f5f"));
	КонецЕсли; 
	Если НоваяСхема = Неопределено Тогда
		ЭтаФорма.СтрокаСоединенияБазы = Неопределено;
		ирОбщий.ОбновитьПовторноИспользуемыеЗначенияЛкс();
	Иначе
		ЭтаФорма.СтрокаСоединенияБазы = НоваяСхема.СтрокаСоединения;
	КонецЕсли; 
	ВыбранныеСтроки = ТаблицаЖурнала.НайтиСтроки(Новый Структура("СвойстваСИменамиМетаданныхАктуальны", Истина));
	Для Каждого ВыбраннаяСтрока Из ВыбранныеСтроки Цикл
		ВыбраннаяСтрока.СвойстваСИменамиМетаданныхАктуальны = Ложь;
	КонецЦикла;
	ОбновитьДоступность();
	
КонецПроцедуры

Процедура ПриОткрытии()
	
	ОбновитьДоступность();
	
КонецПроцедуры

Процедура СохранитьВФайлНажатие(Элемент)
	
	ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	Если Не ВыборФайла.Выбрать() Тогда
		Возврат;
	КонецЕсли;
	ИмяФайла = ВыборФайла.Каталог + "\Сохранение схемы БД в файл.epf";
	ПолучитьМакет("ОбработкаВыгрузкиСхемыБД").Записать(ИмяФайла);
	Сообщить("Обработка сохранена в файл """ + ИмяФайла + """");
	
КонецПроцедуры

Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
	
	ирКлиент.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);

КонецПроцедуры

Процедура СтрокаСоединенияБазыОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Если ЗначениеЗаполнено(СтрокаСоединенияБазы) Тогда
		ирКлиент.ОткрытьЗначениеЛкс(ПолучитьИзВременногоХранилища(мАдресЧужойСхемыБД), Ложь);
	КонецЕсли;
	
КонецПроцедуры

ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирАнализТехножурнала.Форма.СхемаБД");
