При работе в системе 1С:Предприятие 7.7 через терминальный доступ (RDP или RemoteApp) системные администраторы часто сталкиваются со следующей проблемой: при попытке настроить торговое оборудование через меню Сервис — Параметры вкладка, отвечающая за параметры сканера штрихкода, оказывается полностью заблокированной. Все флажки, выпадающие списки выбора портов и скоростей отображаются серым цветом (не активны), хотя на форме настройки торгового оборудования система выдает обнадеживающее сообщение о том, что сканер успешно подключен.
В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем внутренние механизмы взаимодействия компоненты ScanOPOS.dll с операционной системой и рассмотрим по шагам несколько надежных способов решения проблемы.
Прежде чем переходить к действиям, давайте поймем логику работы платформы 1С 7.7. Когда мы открываем вкладку настроек сканера в меню «Параметры», 1С загружает в память внешнюю компоненту ScanOPOS.dll и пытается инициализировать ее. В этот момент драйвер пытается открыть COM-порт, который указан в его настройках по умолчанию (или сохранен в реестре с предыдущей конфигурации).
Если этот порт:
COM1 до COM9),то драйвер возвращает ошибку инициализации. В результате, чтобы пользователь не мог записать некорректные параметры, форма настроек 1С переводит все элементы управления в неактивное состояние. Получается замкнутый круг: мы не можем изменить порт, потому что настройки не активны, а настройки не активны, потому что указан неверный или недоступный порт.
Рассмотрим рабочие методы решения этой проблемы.
Поскольку диалоговое окно в самой 1С заблокировано, мы можем обойти этот запрет и настроить параметры драйвера напрямую через реестр операционной системы Windows на терминальном сервере. Для этого выполним следующие действия:
regedit и нажмем клавишу ввода.
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Options\RScanner Profile
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя_Вашей_Базы>\Profiles\<Имя_Пользователя_1С>\Settings\TradeWare\ScanOpos
Port. Этот параметр имеет числовой тип данных и указывает номер COM-порта (например, значение 1 соответствует COM1, значение 3 — COM3).Port, переключим систему исчисления в Десятичную и введем номер того виртуального COM-порта, на который у нас проброшен физический сканер в сессии RDP.BaudRate), биты данных (DataBits) и стоповые биты. Убедимся, что они соответствуют настройкам самого сканера (обычно скорость составляет 9600 или 115200).При использовании RemoteApp или классического RDP-подключения очень важно убедиться, что физический порт локального компьютера правильно транслируется в терминальную сессию. Рассмотрим, как это проверить и настроить.
mstsc). Перейдем на вкладку Локальные ресурсы, в разделе «Локальные устройства и ресурсы» нажмем кнопку Подробнее... и обязательно установим флажок напротив пункта Порты. Без этого проброс COM-портов работать не будет.
change port /query
AUX = \Device\RdpDrPort\;COM3:3\tsclient\COM3
Это означает, что локальный порт COM3 успешно проброшен на сервер под тем же именем.
change port COM3: \Device\RdpDrPort\;COM3:3\tsclient\COM3
Важное ограничение: Стандартная библиотека ScanOPOS.dll старых версий не умеет работать с портами, чьи номера больше 9. Если ваш виртуальный порт эмуляции сканера определился в системе как COM11 или выше, обязательно зайдите в Диспетчер устройств на локальном компьютере, откройте свойства вашего COM-порта и в дополнительных параметрах принудительно измените его номер на свободный порт из диапазона от COM1 до COM9.
Часто проблема кроется в самой внешней компоненте. Фирма 1С выпускала множество версий библиотеки ScanOPOS.dll. Некоторые старые релизы нестабильно вели себя в операционных системах начиная с Windows Server 2008 R2 и выше, теряя связь при малейших задержках в сети RDP.
Опытным путем на практике доказано, что наиболее стабильной и беспроблемной для платформы 7.7 является версия драйвера от 23.06.2008 (или более поздние версии линейки 8.0.x, например, 8.0.8.4). Если у вас установлена слишком старая версия (например, версии 1.x), настоятельно рекомендуется заменить файл ScanOPOS.dll в каталоге базы данных или в папке платформы Bin, предварительно зарегистрировав новую библиотеку в системе через утилиту:
regsvr32 "[ПутьКФайлу]\ScanOPOS.dll"
Если стандартный механизм 1С продолжает выдавать ошибки, рассмотрим кардинальный, но самый надежный способ решения — использование старого бесплатного драйвера устройств ввода от компании АТОЛ (версии до 2009 года, например, релиз 6.x).
Этот драйвер обладает колоссальным преимуществом перед стандартным решением от 1С:
Для настройки интеграции выполним следующие шаги:
Scaner1C.dll скопирована в каталог базы данных 1С или в каталог Bin платформы.vcl30.dpl. Скопируем его в папку C:\Windows\System32 (для 32-разрядных ОС) или в C:\Windows\SysWOW64 (для 64-разрядных серверных ОС) и зарегистрируем компоненту.Scaner1C.dll.Используя приведенные инструкции по работе с реестром, терминальными портами и подбором внешних компонент, вы гарантированно сможете разблокировать настройки торгового оборудования и обеспечить стабильное сканирование штрихкодов вашими пользователями в среде RemoteApp.