Не удалось загрузить драйвер устройства
Добрый день!
Дано:
- пользователь 1 с определенным набором прав без RLS;
- пользователь 2 с меньшим набором прав c RLS;
- набор прав в части работы с подключаемым оборудованием идентичный;
- под пользователем 1 ошибок нет, под пользователем 2 возникает ошибка.
Ошибка:
- При подключении устройства произошла ошибка. Не удалось загрузить драйвер устройства. Проверьте, что драйвер корректно установлен и зарегистрирован в системе.
Вопрос:
- полагаю, что недостаточно каких-то прав на уровне 1С, какие права проверить?
Комментарий:
- после входа пользователя 1 у пользователя 2 ошибка не возникает;
- конфигурация "Медицина.Поликлиника".
Дано:
- пользователь 1 с определенным набором прав без RLS;
- пользователь 2 с меньшим набором прав c RLS;
- набор прав в части работы с подключаемым оборудованием идентичный;
- под пользователем 1 ошибок нет, под пользователем 2 возникает ошибка.
Ошибка:
- При подключении устройства произошла ошибка. Не удалось загрузить драйвер устройства. Проверьте, что драйвер корректно установлен и зарегистрирован в системе.
Вопрос:
- полагаю, что недостаточно каких-то прав на уровне 1С, какие права проверить?
Комментарий:
- после входа пользователя 1 у пользователя 2 ошибка не возникает;
- конфигурация "Медицина.Поликлиника".
По теме из базы знаний
- 1С8:борьба - личный опыт работы с платформой 1с8
- 1C + Arduino + сканер отпечатков пальцев + RFID считыватель
- Быстрая настройка ККМ из 1С с использованием драйвера от Атол без тест-драйвера
- ЕГАИС от А до Я
- Использование старой версии драйвера "1С: Эквайринговые терминалы Сбербанк" в последних версиях "Розница 2.3"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Странно, такая ошибка обычно не связана с правами. Она связана с блокировкой драйвера оборудования. Те если Вы зашли под пользователем1 и он уже использует драйвер данного оборудования, а Вы (не завершая сеанс 1 пользователя) пытаетесь запустить второй сеанс под пользователем 2.
Или, как вариант, у Вас в этот момент запущен драйвер сторонней программой, не 1с.
ПС: что за оборудование?
Или, как вариант, у Вас в этот момент запущен драйвер сторонней программой, не 1с.
ПС: что за оборудование?
Так, ну допустим, почему после входа пользователя 1, у пользователя 2 ошибка отсутствует понятно из этого кода:
// Проверим, не подключено ли устройство ранее.
ПодключенноеУстройство = ПолучитьПодключенноеУстройство(глПодключаемоеОборудование.ПараметрыПодключенияПО, Устройство.Ссылка);
Если ПодключенноеУстройство = Неопределено Тогда // Если устройство не было подключено ранее.
// программный код.........
Иначе // Устройство было подключено ранее.
// Увеличим количество пользователей данного соединения.
ПодключенноеУстройство.Клиенты.Добавить(ИдентификаторКлиента);
ПодключенноеУстройство.КоличествоПодключенных = ПодключенноеУстройство.КоличествоПодключенных + 1;
Если ОповещениеПриПодключении <> Неопределено Тогда
ОписаниеОшибки = НСтр("ru='Ошибок нет.'");
РезультатВыполнения = Новый Структура("Результат, ОписаниеОшибки, ПараметрыПодключения", Истина, ОписаниеОшибки, ПодключенноеУстройство.ПараметрыПодключения);
ВыполнитьОбработкуОповещения(ОповещениеПриПодключении, РезультатВыполнения);
КонецЕсли;
КонецЕсли;
Показать
У пользователя 2, видимо, неверно отрабатывает вот эта функция:
Функция ПолучитьОбъектДрайвера(ДанныеДрайвера, ТекстОшибки = Неопределено)
ОбъектДрайвера = Неопределено;
Для Каждого ДрайверПО Из глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования Цикл
Если ДрайверПО.Ключ = ДанныеДрайвера.ДрайверОборудования Тогда
ОбъектДрайвера = ДрайверПО.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
Если ОбъектДрайвера = Неопределено Тогда
Попытка
ProgID = ДанныеДрайвера.ИдентификаторОбъекта;
Если ПустаяСтрока(ProgID) Тогда
ОбъектДрайвера = ""; // Драйвер не требуется
Иначе
ProgID1 = ?(Найти(ProgID, "|") > 0, Сред(ProgID, 1, Найти(ProgID, "|")-1), ProgID);
ProgID2 = ?(Найти(ProgID, "|") > 0, Сред(ProgID, Найти(ProgID, "|")+1), ProgID);
Если ДанныеДрайвера.ПоставляетсяДистрибутивом Тогда
ПодключитьВнешнююКомпоненту(ProgID1);
Иначе
ИмяОбъекта = Сред(ProgID1, Найти(ProgID1, ".") + 1);
Префикс = Сред(ProgID1, 1, Найти(ProgID1, "."));
ProgID2 = Префикс + СтрЗаменить(ИмяОбъекта, ".", "_") + "." + ИмяОбъекта;
Если ДанныеДрайвера.ВСоставеКонфигурации Тогда
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет." + ДанныеДрайвера.ИмяМакетаДрайвера, СтрЗаменить(ИмяОбъекта, ".", "_"));
Иначе
СсылкаНаДрайвер = ПолучитьНавигационнуюСсылку(ДанныеДрайвера.ДрайверОборудования, "ЗагруженныйДрайвер");
Результат = ПодключитьВнешнююКомпоненту(СсылкаНаДрайвер, СтрЗаменить(ИмяОбъекта, ".", "_"));
КонецЕсли;
КонецЕсли;
ОбъектДрайвера = Новый (ProgID2);
КонецЕсли;
Исключение
Инфо = ИнформацияОбОшибке();
ТекстОшибки = Инфо.Описание;
КонецПопытки;
Если ОбъектДрайвера <> Неопределено Тогда
глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования.Вставить(ДанныеДрайвера.ДрайверОборудования, ОбъектДрайвера);
ОбъектДрайвера = глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования[ДанныеДрайвера.ДрайверОборудования];
КонецЕсли;
КонецЕсли;
Возврат ОбъектДрайвера;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот