При настройке торгового оборудования «ШТРИХ-М» в среде 1С:Предприятие (особенно в классической версии 7.7) системные администраторы часто сталкиваются с ошибкой: «Ошибка при загрузке компоненты DrvFR.dll. Компонента не загружена». Ситуация осложняется тем, что стандартные методы регистрации через regsvr32 могут выдавать сообщение «Не найден указанный модуль», даже если файл физически присутствует на диске. Рассмотрим подробно, почему это происходит и как обеспечить стабильную работу драйвера фискального регистратора в современных 64-битных операционных системах.
Проблема «Не найден указанный модуль» при попытке регистрации библиотеки чаще всего вводит в заблуждение. В 90% случаев операционная система сообщает не о потере самого файла DrvFR.dll, а об отсутствии его зависимостей — других динамических библиотек, к которым обращается основная компонента. Для корректной работы драйвера «ШТРИХ-М» версии 4.14, 4.15 и выше требуется целый набор вспомогательных файлов, которые должны находиться «под рукой» у системы в момент регистрации и запуска.
Также важно понимать архитектурные особенности Windows 10 x64. 1С:Предприятие 7.7 — это 32-битное приложение, и все внешние компоненты для него также должны быть 32-битными. Попытка использовать системные инструменты, настроенные по умолчанию на 64-битный режим, приводит к закономерным отказам.
В 64-битных версиях Windows существует два инструмента регистрации: один для 64-битных библиотек (находится в System32), другой для 32-битных (находится в SysWOW64). Проанализируем правильный порядок действий:
regsvr32 будем использовать явный путь к 32-битному регистратору.Пример правильной команды для регистрации:
%systemroot%\SysWOW64\regsvr32.exe "C:\Program Files (x86)\SHTRIH-M\DrvFR 4.15\Samples\1C\1C 7.7\DrvFR.dll"
Если регистрация прошла успешно, но 1С все равно выдает ошибку при загрузке, или если regsvr32 по-прежнему ругается на отсутствие модуля, выясним причину в составе файлов. Для работы DrvFR.dll последних версий критически важны следующие библиотеки:
Проанализируем ситуацию с размещением: лучше всего скопировать DrvFR.dll, sqlite3.dll и drvfr.lic непосредственно в каталог, где установлена платформа 1С (папка BIN, где находится 1cv7s.exe), либо в каталог информационной базы. Это гарантирует, что 1С найдет все связанные файлы в момент вызова команды ЗагрузитьВнешнююКомпоненту().
Посмотрим на пример кода, который правильно инициализирует драйвер. В 1С 7.7 это обычно делается в глобальном модуле или в специализированной обработке обслуживания торгового оборудования.
// Пример инициализации компоненты ШТРИХ-М
Если ЗагрузитьВнешнююКомпоненту("DrvFR.dll") <> 0 Тогда
Попытка
Драйвер = СоздатьОбъект("AddIn.DrvFR");
Сообщить("Компонента DrvFR.dll успешно загружена!");
Исключение
Предупреждение("Объект AddIn.DrvFR не создан. Проверьте регистрацию DLL.");
КонецПопытки;
Иначе
Предупреждение("Файл DrvFR.dll не найден или не загружен. Проверьте наличие sqlite3.dll.");
КонецЕсли;
Windows 10 обладает усиленными механизмами безопасности, которые могут блокировать работу старых DLL. Рассмотрим дополнительные настройки:
DrvFR.dll и sqlite3.dll, выберите «Свойства». Если внизу вы видите надпись «Этот файл был получен с другого компьютера...», нажмите кнопку «Разблокировать» и «ОК».1cv7s.exe в исключения DEP (Свойства системы -> Дополнительно -> Быстродействие -> Параметры -> Предотвращение выполнения данных).HKEY_CLASSES_ROOT).Перед тем как искать проблему в коде 1С, обязательно проверим работоспособность через штатную утилиту «Тест драйвера ФР», которая идет в комплекте с драйвером ШТРИХ-М. Если в этой утилите связь устанавливается и таблицы ФР считываются, значит, сама DLL исправна и зарегистрирована, а проблему следует искать в путях доступа 1С или в отсутствии файла sqlite3.dll в рабочей директории программы.
Резюмируем: Основной секрет успеха при работе с DrvFR.dll на Windows 10 заключается в использовании 32-битного regsvr32 из папки SysWOW64 и обязательном наличии библиотеки sqlite3.dll в одной папке с основной компонентой. Следуя этим шагам, вы обеспечите стабильное взаимодействие 1С с фискальным регистратором.