Драйверы оборудования / Форма списка / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ОтображатьДопЭлементы = НЕ ОбщегоНазначенияБПО.ЭтоМобильнаяПлатформа();
	
	// АПК: 484-выкл не используется БСП
	Список.ТекстЗапроса = СтрШаблон(Список.ТекстЗапроса, 
		НСтр("ru = 'Поставляемый в составе конфигурации'"),
		НСтр("ru = 'Подключаемый по стандарту """"1С:Совместимо""""'"));
	// АПК: 484-вкл
	
	ДобавлениеНовыхДрайверов = МенеджерОборудования.ДоступноДобавлениеНовыхДрайверов();
	
	ПравоДоступаДобавление = ПравоДоступа("Добавление", Метаданные.Справочники.ДрайверыОборудования);
	
	Элементы.ДрайверыОборудования.КоманднаяПанель.Видимость = ПравоДоступаДобавление;

	Элементы.ДрайверыОборудования.ИзменятьСоставСтрок = ДобавлениеНовыхДрайверов;
	ЭлементГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ЭлементГруппировки.Поле = Новый ПолеКомпоновкиДанных("ВариантПоставки");
	ЭлементГруппировки.Использование = Истина;
	
	Элементы.ДрайверыОборудования.ИзменятьСоставСтрок = ДобавлениеНовыхДрайверов;
	ЭлементГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ЭлементГруппировки.Поле = Новый ПолеКомпоновкиДанных("ТипОборудования");
	ЭлементГруппировки.Использование = Истина;
	
	Элементы.ДрайверыОборудования.Шапка = ОтображатьДопЭлементы;     
	Элементы.ПодключитьНовый.Видимость = ОтображатьДопЭлементы;    
	Элементы.СпособПодключения.Видимость = ОтображатьДопЭлементы;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура УстановленныйНаЛокальномКомпьютере(Команда)
	
	Элементы.ДрайверыОборудования.ДобавитьСтроку();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьНовыйДрайверИзФайла(Команда)
	
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Ключ", "Значение");
	
	ПараметрыПоискаТипаКомпонентыПодключения = ВнешниеКомпонентыБПОКлиент.ПараметрыПоискаДополнительнойИнформации();
	ПараметрыПоискаТипаКомпонентыПодключения.ИмяФайлаXML = "INFO.XML";
	ПараметрыПоискаТипаКомпонентыПодключения.ВыражениеXPath = "//drivers/component/@type";
	
	ПараметрыЗагрузки = ВнешниеКомпонентыБПОКлиент.ПараметрыЗагрузки();
	ПараметрыЗагрузки.ПараметрыПоискаДополнительнойИнформации.Вставить("ТипКомпонентыПодключения", ПараметрыПоискаТипаКомпонентыПодключения);
	
	Оповещение = Новый ОписаниеОповещения("ЗагрузитьНовыйДрайверИзФайла_Завершение", ЭтотОбъект, ДополнительныеПараметры);
	
	ВнешниеКомпонентыБПОКлиент.ЗагрузитьКомпонентуИзФайла(Оповещение, ПараметрыЗагрузки);
	
КонецПроцедуры

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

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

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

&НаСервереБезКонтекста
// Выполняет создание драйверов оборудования
// 
// Параметры:
//   РезультатЗагрузки - Структура:
//     * Идентификатор - Строка
//     * Наименование - Строка
//     * Версия - Строка
//   МассивТиповОборудования - Массив из ПеречислениеСсылка.ТипыПодключаемогоОборудования
// 
// Возвращаемое значение:
//   Массив из Структура
Функция СоздатьДрайверыОборудованияНаСервере(РезультатЗагрузки, МассивТиповОборудования)
	
	МассивДрайверов = Новый Массив();
	Для Каждого ТипОборудования Из МассивТиповОборудования Цикл 
		ПараметрыСоздания = МенеджерОборудованияКлиентСервер.ПараметрыСозданияНовогоДрайвера();
		ПараметрыСоздания.Вставить("Загружена", Истина);
		ПараметрыСоздания.ТипОборудования = ТипОборудования;
		Результат = РезультатЗагрузки; // Структура
		ПараметрыСоздания.ИдентификаторОбъекта = Результат.Идентификатор;
		ПараметрыСоздания.Наименование         = Результат.Наименование;
		ПараметрыСоздания.СпособПодключения    = Перечисления.СпособПодключенияДрайвера.ИзИнформационнойБазы;
		НовыйЭлемент = МенеджерОборудования.СоздатьДрайверОборудования(ПараметрыСоздания);
		МассивДрайверов.Добавить(НовыйЭлемент);
	КонецЦикла;
	Возврат МассивДрайверов;
	
КонецФункции

&НаКлиенте
Процедура ЗагрузитьНовыйДрайверИзФайла_Завершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат.Загружена Тогда  
		
		ТипОборудования = Результат.ДополнительнаяИнформация.Получить("ТипКомпонентыПодключения");
		Если ПустаяСтрока(ТипОборудования) Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Не указан тип оборудования загружаемого драйвера.'") );
			Возврат;
		КонецЕсли;
		
		МассивТиповОборудования = СтрРазделить(СтрЗаменить(ТипОборудования, ";", ","), ",");
		МассивДрайверов = СоздатьДрайверыОборудованияНаСервере(Результат, МассивТиповОборудования);
		Если МассивДрайверов.Количество()>0 Тогда
			Элементы.ДрайверыОборудования.Обновить();
			Элементы.ДрайверыОборудования.ТекущаяСтрока = МассивДрайверов[МассивДрайверов.ВГраница()];
		КонецЕсли;
		
		УстановитьДрайверОборудования(Неопределено);
	Иначе 
		ПоказатьПредупреждение(, НСтр("ru = 'Ошибка загрузки нового драйвера.'") );
	КонецЕсли;
	
КонецПроцедуры

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

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