При переходе с 32-битной платформы 1С на 64-битную многие пользователи и администраторы сталкиваются с тем, что ранее работавшее торговое оборудование (сканеры штрихкодов, фискальные регистраторы, эквайринговые терминалы) перестает функционировать. В настройках статус драйверов меняется на «Не установлен». Проанализируем эту ситуацию и разберем по шагам, почему это происходит и как восстановить работу оборудования.
Выясним причину ошибки. Главная техническая особенность заключается в том, что 32-битные COM-компоненты (DLL-файлы драйверов) архитектурно не могут быть загружены в адресное пространство 64-битного клиентского приложения 1С. Разрядность важна не самому серверу 1С, а именно процессу клиента, который пытается загрузить внешнюю компоненту. Например, в конфигурации «Управление торговлей 10.3» оборудование подключается непосредственно на клиентском рабочем месте.
Кроме того, в 64-битных версиях операционных систем Windows системные каталоги строго разделены: 64-битные библиотеки хранятся в папке System32, а 32-битные — в SysWOW64. Ошибка «Не установлен» часто возникает из-за того, что компонента зарегистрирована некорректной версией системной утилиты. Рассмотрим подробнее способы решения этой проблемы.
Самый правильный и надежный путь — найти и установить драйверы разрядности x64.
Если быстро найти или установить 64-битные драйверы невозможно, разберем альтернативный вариант. Можно оставить на рабочих местах с торговым оборудованием 32-битный толстый или тонкий клиент 1С. 32-битный клиент абсолютно нормально и стабильно подключается к 64-битному серверу 1С. В этом случае все старое оборудование продолжит работать без изменений и дополнительных настроек.
Если у вас есть только 32-битная DLL компоненты, а работать нужно строго через 64-битный клиент 1С, настроим COM+ обертку.
В результате этих действий компонента будет изолированно запускаться в отдельном 32-битном системном процессе dllhost.exe. 64-битный клиент 1С сможет прозрачно обращаться к этому процессу и работать с оборудованием. Скорость отклика может незначительно снизиться, но работоспособность будет восстановлена.
Посмотрим на частую ошибку регистрации. Ручную регистрацию 32-битных DLL на 64-битной Windows нужно выполнять строго утилитой, запущенной из правильной папки. Откройте командную строку от имени администратора и перейдите в папку C:\Windows\SysWOW64\. Перед регистрацией нового файла настоятельно рекомендуется удалить из реестра старые пути:
regsvr32 /u sbrfcom.dll
После успешного удаления зарегистрируйте компоненту заново командой без ключа отмены.
Проанализируем специфику конкретных устройств:
sbrf.dll и sbrfcom.dll), помните, что существуют альтернативные варианты. Например, утилита sb_pilot.exe или библиотека pilot_nt.dll. Также существуют сторонние локальные HTTP-обертки, которые принимают команды от 64-битной 1С и передают их напрямую в исполняемый файл Сбербанка, обходя любые проблемы с разрядностью.