При открытии кассовой смены или попытке пробить чек на фискальном регистраторе (например, АТОЛ FPrint-22ПТК) пользователи и разработчики могут столкнуться с сообщением: «Не удалось загрузить драйвер устройства. Проверьте, что драйвер корректно установлен и зарегистрирован в системе». При этом утилиты производителя могут корректно видеть кассу, а в реестре операционной системы присутствуют необходимые записи.
Разберем, почему возникает данная ситуация, проанализируем программный код инициализации драйвера и рассмотрим пошаговые методы устранения проблемы.
Посмотрим на типичный фрагмент кода 1С, вызывающий данную ошибку:
ProgID = "AddIn.ATOL_KKM_1C82_54FZ";
Подключено = ПодключитьВнешнююКомпоненту(ProgID);
Если Подключено Тогда
ОбъектДрайвера = Новый (ProgID);
Иначе
ВызватьИсключение "Не удалось загрузить драйвер устройства.";
КонецЕсли;
В этом сценарии метод ПодключитьВнешнююКомпоненту возвращает значение Ложь, а переменная ОбъектДрайвера принимает значение Неопределено. При вызове по системному идентификатору (ProgID) платформа 1С пытается найти зарегистрированный в реестре Windows COM-объект и загрузить соответствующую динамическую библиотеку (DLL). Если файл отсутствует по зарегистрированному пути, заблокирован правами доступа или не зарегистрирован в нужной подсистеме разрядности, загрузка завершается неудачей.
Основной причиной сбоя при использовании классических ДТО 8 (Драйверов торгового оборудования) является отсутствие или повреждение регистрации библиотеки внешней компоненты FPRNM1C82_54FZ.DLL в операционной системе. Разберем по шагам процесс ручной регистрации:
FPRNM1C82_54FZ.DLL. Обычно он находится в каталоге установки драйверов АТОЛ (например, в подпапках Bin или 1Cv82 каталога установки драйвера) либо в каталоге шаблона конфигурации.FPRNM1C82_54FZ.DLL в системные директории Windows:
C:\Windows\System32;C:\Windows\SysWOW64 (и при необходимости продублируем в C:\Windows\System32).regsvr32. Обратим особое внимание на разрядность: библиотека драйвера ККТ является 32-разрядной (x86), поэтому на 64-битной ОС регистрацию необходимо выполнять через утилиту из папки SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "C:\Windows\SysWOW64\FPRNM1C82_54FZ.DLL"
После появления системного сообщения об успешной регистрации COM-сервера перезапустим клиентский сеанс «1С:Предприятие» и повторим попытку подключения кассы.
Если ручная регистрация прошла успешно, но метод ПодключитьВнешнююКомпоненту по-прежнему возвращает Ложь, проанализируем следующие системные факторы:
FPRNM1C82_54FZ.DLL скомпилирована под 32-разрядную архитектуру (x86). Если запущен 64-разрядный толстый или тонкий клиент «1С:Предприятие» (1cv8.exe или 1cv8c.exe из папки C:\Program Files\1cv8\...), процесс 64-бит не сможет загрузить 32-битную DLL в свое адресное пространство. Запускайте конфигурацию исключительно через 32-разрядный клиент (расположенный в C:\Program Files (x86)\1cv8\...).MSVCR*.dll) операционная система молча блокирует загрузку компоненты.&НаКлиенте), так как серверный процесс 1С не имеет доступа к локальным устройствам и системному окружению пользователя.Рассмотрим программный способ подключения, который не зависит от глобальной регистрации библиотеки утилитой regsvr32 в реестре Windows. Платформа 1С позволяет загружать внешние компоненты напрямую по пути к файлу:
ПутьКФайлу = "C:\КассовыйДрайвер\FPRNM1C82_54FZ.DLL";
ИмяПодключения = "ATOL_KKM";
// Загрузка компоненты напрямую из файла через Native или COM интерфейс
Если ПодключитьВнешнююКомпоненту(ПутьКФайлу, ИмяПодключения, ТипВнешнейКомпоненты.COM) Тогда
ОбъектДрайвера = Новый ("AddIn." + ИмяПодключения + ".ATOL_KKM_1C82_54FZ_Object");
// Дальнейшая работа с объектом драйвера
Иначе
ВызватьИсключение "Не удалось инициализировать внешнюю компоненту по указанному пути.";
КонецЕсли;
Такой подход позволяет хранить файл драйвера внутри каталога базы или в макете конфигурации (в виде двоичных данных) и извлекать его во временный каталог пользователя методом УстановитьВнешнююКомпоненту, исключая зависимость от прав администратора на рабочей станции.