Как подключить и настроить сканер штрихкодов в 1С:Предприятие 7.7 на Windows 10?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

При переходе рабочих мест с 1С:Предприятие 7.7 «Торговля и склад» на современную операционную систему Windows 10 (x64) часто возникает проблема подключения торгового оборудования. Попытка зарегистрировать привычные внешние компоненты, такие как ScanOPOS.dll или scaner1c.dll (драйвер устройств ввода АТОЛ), завершается ошибками regsvr32, а сканеры в режиме клавиатуры (USB HID) перестают генерировать предопределенное событие ОбработкаВнешнегоСобытия.

Разберем детально, почему возникают эти сложности, как правильно зарегистрировать библиотеки в 64-битной системе и какие варианты подключения сканера обеспечивают стабильную работу в 1С 7.7.

Причины проблем с регистрацией старых библиотек в Windows 10

Платформа 1С 7.7 является исключительно 32-битным (x86) приложением. При работе в 64-разрядной Windows 10 возникают две ключевые проблемы:

  1. Неверная утилита регистрации: стандартный запуск команды regsvr32 из строки «Выполнить» или обычной консоли вызывает 64-битную версию утилиты из каталога System32, которая не может зарегистрировать 32-битную внешнюю компоненту.
  2. Отсутствие устаревших библиотек среды выполнения (Runtime): компоненты эпохи 1С 7.7 (включая бесплатные сборки АТОЛ 6.x и оригинальный ScanOPOS.dll) скомпилированы в старых версиях Visual C++ и требуют наличия системных файлов msvcr71.dll, mfc71.dll, msvcp71.dll. В Windows 10 эти библиотеки по умолчанию отсутствуют, из-за чего regsvr32 выдает ошибку с кодом 0x80020009 или 0x8007007e (модуль не найден).

Шаг 1. Подготовка и правильная регистрация 32-битных компонент

Рассмотрим по шагам, как корректно зарегистрировать библиотеку в 64-битной Windows 10:

  1. Найдем или загрузим системные библиотеки msvcr71.dll и mfc71.dll (версии x86).
  2. Скопируем эти файлы в системный каталог C:\Windows\SysWOW64 либо поместим их в одну папку рядом с регистрируемой библиотекой (например, в C:\1C_Drivers\ или каталог базы).
  3. Запустим командную строку от имени Администратора.
  4. Выполним регистрацию, явно указав путь к 32-битной версии regsvr32.exe:

C:\Windows\SysWOW64\regsvr32.exe "C:\1C_Drivers\scaner1c.dll"

или для компоненты ScanOPOS:

C:\Windows\SysWOW64\regsvr32.exe "C:\1C_Drivers\ScanOPOS.dll"

После этого операционная система выдаст сообщение об успешной регистрации модуля в реестре.

Шаг 2. Выбор способа работы: виртуальный COM-порт против эмуляции клавиатуры

Проанализируем специфику передачи данных со сканера. Сканер, работающий как обычная клавиатура (HID Keyboard), просто посылает символы в то поле ввода, где в текущий момент находится курсор. Если фокус стоит не в поле поиска, данные попадут в случайное место или вызовут ошибку интерфейса. Чтобы в 1С 7.7 срабатывала процедура ОбработкаВнешнегоСобытия(), оборудованию требуется генерировать системное внешнее событие.

Для реализации этой логики есть два проверенных пути:

Вариант 1. Перевод сканера в режим эмуляции виртуального COM-порта (USB-VCOM) — Рекомендуемый способ

Это самый стабильный и надежный вариант работы в современных ОС:

  1. Отсканируем управляющий штрихкод из инструкции к вашей модели сканера для перевода его в режим USB Serial Emulation (Virtual COM Port / CDC).
  2. Установим виртуальный COM-драйвер от производителя сканера (Honeywell, Zebra/Motorola, Datalogic, Newland, Mertech и др.).
  3. В «Диспетчере устройств» Windows появится виртуальный последовательный порт (например, COM3).
  4. В 1С 7.7 в настройках торгового оборудования подключим стандартную компоненту ScanOPOS.dll (рекомендуется взять обновленную версию библиотеки из дистрибутивов 1С 8.x, например версию 8.1.x.x, так как она полностью обратно совместима и стабильнее работает в Windows 10) и укажем номер созданного COM-порта и скорость передачи данных.

В этом режиме 1С будет перехватывать штрихкод в любом открытом окне программы через процедуру модуля:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Источник = "Scaner" Тогда
        Штрихкод = СокрЛП(Данные);
        // Обработка полученного штрихкода
    КонецЕсли;
КонецПроцедуры

Вариант 2. Использование драйвера устройств ввода АТОЛ (версия 6.5.3)

Если модель сканера не поддерживает эмуляцию COM-порта, используем бесплатную версию драйвера АТОЛ: Драйвер устройств ввода 6.5.3:

  1. Установим драйвер или зарегистрируем scaner1c.dll вместе с библиотеками mfc71.dll через SysWOW64\regsvr32.exe, как описано выше.
  2. В конфигурации «Торговля и склад» в настройках торгового оборудования укажем внешнюю компоненту АТОЛ.
  3. В свойствах драйвера выберем тип подключения «Клавиатура».
  4. В самом сканере настроим префикс (например, F7 или непечатный символ) и суффикс (Enter или #13).
  5. Драйвер АТОЛ перехватывает глобальный поток клавиатурного ввода на уровне системы по заданным префиксам/суффиксам и генерирует штатное внешнее событие в 1С.

Вариант 3. Использование внешней компоненты FormEx

Если нет возможности устанавливать сторонние драйверы торгового оборудования, перехват клавиатурного сканера можно реализовать с помощью универсальной библиотеки FormEx (formex.dll):

  1. Загрузим formex.dll в каталог информационной базы или платформы BIN.
  2. Загрузим компоненту при старте системы в процедуре ПриНачалеРаботыСистемы() через ЗагрузитьВнешнююКомпоненту().
  3. Включим перехват событий клавиатуры методами компоненты FormEx, настроив обработку нажатий по суффиксу сканера, что позволит передавать отсканированный штрихкод сразу в нужные алгоритмы поиска номенклатуры.
← На главную