Зачастую перед специалистами встает задача расширения аппаратного обеспечения на торговых точках, например, когда к уже имеющемуся стационарному сканеру требуется добавить ручной сканер штрихкода. В среде 1С 7.7 такая задача требует особого подхода, так как стандартная компонента ScanOPOS.dll изначально не была рассчитана на одновременную работу с несколькими устройствами одного типа.
Давайте разберем, как реализовать это решение, не конфликтуя с платформой и обеспечивая стабильную работу оборудования.
Первое, с чего необходимо начать — это выбор драйвера. Опыт показывает, что современные версии драйверов торгового оборудования могут накладывать ограничения в виде демо-режима (задержка до 10-20 секунд), поэтому для 1С 7.7 оптимальным решением является использование проверенных временем версий, например, драйверов АТОЛ версии 5.7.1. Эти версии стабильны и не требуют сложной процедуры активации лицензий.
Пошаговый план настройки:
После того как драйвер «видит» оба сканера, необходимо настроить 1С. Основная работа ведется в глобальном модуле конфигурации, в процедуре ВнешнееСобытие().
Поскольку 1С получает данные через единый объект драйвера, нам нужно научиться различать, от какого именно сканера пришел сигнал. Для этого в процедуре обработки внешнего события мы анализируем параметры, передаваемые компонентой.
Рассмотрим структуру обработки события:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Источник — имя устройства, заданное в настройках драйвера
// Данные — считанный штрихкод
Если Источник = "Сканер1" Тогда
// Логика обработки для настольного сканера
ОбработатьТовар(Данные);
ИначеЕсли Источник = "Сканер2" Тогда
// Логика обработки для ручного сканера
ОбработатьТовар(Данные);
КонецЕсли;
КонецПроцедуры
Если использование специализированных драйверов вызывает сложности, можно рассмотреть альтернативные варианты:
1. Использование «COM-джойнеров»
Существуют специальные программные прослойки, которые перехватывают потоки данных от нескольких COM-портов и объединяют их в один виртуальный поток. В этом случае 1С воспринимает оба сканера как одно логическое устройство, что исключает необходимость сложной доработки конфигурации под каждое устройство.
2. Метод префиксов
Вы можете настроить сканеры на уровне их внутренней прошивки (через управляющие штрихкоды из руководства пользователя) так, чтобы они добавляли уникальный префикс к передаваемому коду. Например, настольный сканер добавляет префикс S1, а ручной — S2.
Тогда код в ВнешнееСобытие() будет выглядеть следующим образом:
Если Лев(Данные, 2) = "S1" Тогда
КодТовара = Прав(Данные, СтрДлина(Данные) - 2);
// Добавляем в табличную часть как обычно
КонецЕсли;
При настройке обязательно учитывайте следующие моменты:
ScanOPOS.dll (или её аналоги для АТОЛ) должна быть зарегистрирована в системе. В большинстве случаев инсталлятор делает это автоматически, однако при возникновении ошибок с инициализацией проверьте корректность регистрации библиотеки через regsvr32.Реализация одновременной работы двух сканеров в 1С 7.7 — задача вполне решаемая. Главное — правильно разграничить потоки данных на уровне драйвера и грамотно обработать их в процедуре ВнешнееСобытие внутри вашей конфигурации. Используя предложенный подход с анализом источника данных, вы сможете обеспечить комфортную работу пользователей без необходимости замены устаревшего оборудования.