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