Эта статья — небольшая справка о том, как работает сканер штрихкода в связке с 1С версии 8.2 в режиме управляемого приложения. Для того, чтобы в 1С «словить» событие получения штрихкода со сканера, в системе, на которой запущен клиент 1С должен быть установлен драйвер сканера. Тут я расскажу как настроить работу сканера, когда 1С работает в режиме толстого или тонкого клиента. Работа веб-клиента пока мной не изучена.
Итак, первое, что нужно сделать — установить драйвер. Мне нравятся драйверы АТОЛ — легко настраиваются, стабильно работают, старые версии бесплатны. Для работы со сканером подойдет драйвер, который можно найти на диске ИТС, его версия: 5.8.3.262. Интересной особенностью восьмой платформы 1С является то, что теперь файлы дистрибутива драйвера можно хранить в составе конфигурации, программно проверить, установлены ли они в системе и при необходимости запустить их установку.
Проверить наличие установленного драйвера можно с помощью попытки подключения компоненты и обращения к свойствам драйвера (код можно исполнять на клиенте):
Если обнаружено, что драйвер не установлен, можно переходить к запуску дистрибутива. Файлы дистрибутива должны быть вставлены в конфигурацию как макет с типом «двоичные данные», можно использовать Общие макеты. У себя я сделал общий макет с именем ДрайверАТОЛСканерШтрихкода, в него загрузил упакованный в zip дистрибутив с именем Scaner.zip, в составе дистрибутива два файла, один из которых Setup.exe, который и нужно запустить. Порядок простой — распаковываем архив во временный каталог, запускаем установку, после установки подчищаем файлы. Для получения файла из макета на клиенте понадобится серверная процедура, в моем примере это процедура ПолучитьМакетССервера(), вот ее текст:
А вот код, который выполнит запуск инсталятора драйвера:
При исполнении этого кода файлы дистрибутива будут загружены на машину клиента и там будет запущена установка — пользователь увидит окно программы установки драйвера штрихкода.
После того, как установка выполнена, нужно настроить свойства сканера, в Windows 7 и 8 для этого нужно использовать утилиту, которая поставляется в в составе драйвера, ее можно найти в меню по слову «драйвер», пример для Windows 8:
Запускать утилиту нужно от имени администратора, также важно, чтобы в этот момент не были запущены другие программы, использующие объекты драйвера. Например, если приведенным выше кодом проведена установка драйвера и выполнено подключение компоненты в 1С, драйвер будет уже запущен и его свойства нельзя будет изменить. Поэтому 1С-ку лучше закрыть. После запуска утилиты настройки видим такое окно:
В этом окне нужно нажать кнопку «Настройка свойств», откроется следующее:
Здесь нужно выбрать порт подключения, обычно это «Клавиатура», последняя в списке портов, затем установить флажки «Устройство включено», «Включать устройство при старте». Установить префикс и/или суффикс — это символы, которые сканер при считывании кода добавляет к блоку данных, как правило это «Enter» или «Tab» (табулятор). Чтобы увидеть строку, получаемую драйвером со сканера нужно зайти в окно «Поиск оборудования» и считать любой штрихкод — «лишние» символы в полученной строке и будут искомыми префиксами или суффиксами. Символы префикса и суффикса запрограммированы в памяти сканера, их можно изменить, пример описан тут: ссылка.
Теперь вернемся к 1С. Для того, чтобы сканер работал, перед его использованием на клиенте необходимо выполнить команду ПодключитьВнешнююКомпоненту(«AddIn.Scaner45»). Её лучше выполнять в конструкции Попытка/Исключение, если драйвер установлен некорректно или не установлен вовсе, можно будет обработать исключение и сообщить пользователю об ошибке. После этой команды можно вызвать объект драйвера и установить нужные свойства:
Обычно этот код я вставляю в модуль, исполняемый при запуске клиента, а необходимость использования драйвера проверяю через соответствующие настройки пользователя или рабочего места.
После того, как драйвер установлен и запущен, в нужных формах можно обрабатывать ВнешнееСобытие(), пример процедуры из формы элемента справочника товаров, при считывании штрихкода его значение вставляется в реквизит формы «Штрихкод»:
По параметру Источник можно установить, что процедура сработала из-за события в драйвере сканера штрихкода, а параметр Данные содержит считанный штрихкод. В приведенном примере функция ПроверитьШтрихкод() выполняет запрос для проверки, используется ли этот штрихкод в другом элементе и возвращает ЛОЖЬ, если это так, т.е. использовать полученный код нельзя.