Как подключить магнитный считыватель карт Bravo к 1С и настроить работу со СКУД?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Подключение специализированного оборудования, такого как магнитные ридеры или системы контроля и управления доступом (СКУД), часто вызывает вопросы у начинающих разработчиков 1С. В данной статье мы подробно разберем процесс интеграции считывателей производства «Система-Браво» и затронем аспекты взаимодействия с сетевыми системами типа «Лавина». Мы пройдем путь от физического подключения устройства до написания программного кода для обработки считанных данных.

Понимание режимов работы ридера Bravo

Прежде чем приступать к настройке в самой 1С, нам необходимо проанализировать, в каком режиме работает ваше устройство. Ридеры Bravo (обычно серии MSR) могут функционировать в двух основных режимах:

  1. USB-HID (эмуляция клавиатуры): В этом режиме устройство ведет себя как обычная клавиатура. При считывании карты данные «вбрасываются» в то поле ввода, где в данный момент установлен курсор. Для 1С это не самый удобный вариант, так как пользователю придется всегда следить за фокусом ввода.
  2. USB-Virtual COM (эмуляция последовательного порта): Это профессиональный стандарт подключения. Устройство создает в системе виртуальный COM-порт. 1С «слушает» этот порт в фоновом режиме, и как только карта проведена, срабатывает программное прерывание (внешнее событие), независимо от того, где находится курсор.

Если ваше устройство определилось как COM-порт (как указано в Сообщении 9), это отличная новость. Мы можем использовать стандартные механизмы 1С для работы с торговым оборудованием.

Настройка 1С через Библиотеку подключаемого оборудования (БПО)

Рассмотрим по шагам процесс подключения ридера в типовых конфигурациях на платформе 1С:Предприятие 8.3. Большинство современных решений используют «Библиотеку подключаемого оборудования» (БПО). Нам не нужно искать специфические «самописные» обработки, достаточно штатных средств.

  1. Перейдем в раздел Администрирование — Подключаемое оборудование.
  2. Выберем тип оборудования Считыватели магнитных карт и нажмем «Создать».
  3. В качестве драйвера устройства выберем стандартный «1С:Устройства ввода (клавиатуры и сканеры штрихкода)». Несмотря на название, протоколы работы сканеров и ридеров практически идентичны.
  4. В окне настройки параметров выберем созданный системой COM-порт (например, COM3), укажем скорость (по умолчанию обычно 9600) и таймаут.

Важный нюанс: Обратите внимание на настройки префиксов и суффиксов. Магнитные карты часто передают служебные символы в начале и в конце данных дорожки. Например, для второй дорожки стандартным префиксом является символ ;, а суффиксом — ?. Если их не указать в настройках оборудования 1С, система может некорректно идентифицировать код.

Программная обработка события считывания

После того как оборудование настроено в справочнике, проанализируем, как получить данные в коде. Когда ридер считывает карту, он генерирует внешнее событие. Нам нужно перехватить его в модуле формы или в модуле управляемого приложения.

Для перехвата события в форме документа или справочника используется процедура ВнешнееСобытие. Рассмотрим пример кода:


&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    // Источник — это имя подключенного устройства
    // Событие — тип события (обычно "ScanData" или "MagneticCardData")
    // Данные — считанная строка с магнитной дорожки
    
    Если Событие = "MagneticCardData" Тогда
        ОбработатьДанныеКарты(Данные);
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьДанныеКарты(СчитаннаяСтрока)
    // Проанализируем полученные данные
    // Часто данные приходят в формате: ;1234567890?
    // Нам нужно очистить их от префиксов и суффиксов
    
    ЧистыйКод = СтрЗаменить(СчитаннаяСтрока, ";", "");
    ЧистыйКод = СтрЗаменить(ЧистыйКод, "?", "");
    
    Сообщить("Считан код карты: " + ЧистыйКод);
    
    // Далее можно запустить поиск клиента или сотрудника в базе
КонецПроцедуры

Интеграция со СКУД «Лавина»

Ситуация усложняется, когда нам нужно не просто считать карту, но и управлять исполнительными устройствами (открывать двери, турникеты) или получать логи проходов из внешней системы СКУД, такой как «Лавина». Выясним, как это реализовать.

СКУД «Лавина» обычно хранит свои данные в СУБД (например, Firebird). Выделим два основных сценария интеграции:

Сценарий 1: Чтение событий прохода

Для фиксации входов и выходов в 1С мы можем напрямую подключаться к базе данных СКУД через технологию ADO. Разберем пример инициализации подключения:


&НаСервере
Процедура ПолучитьСобытияИзЛавины()
    Connection = Новый COMОбъект("ADODB.Connection");
    ConnectionString = "Driver={Firebird/InterBase(r) driver};Dbname=IP_СЕРВЕРА:C:\Lavina\BASE.FDB;User=SYSDBA;Password=masterkey;";
    
    Попытка
        Connection.Open(ConnectionString);
        RecordSet = Connection.Execute("SELECT * FROM EVENTS WHERE EVENT_TIME > '2023-01-01'");
        // Обработка данных
        Connection.Close();
    Исключение
        Сообщить("Ошибка подключения к СКУД: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Сценарий 2: Управление дверями (открытие по кнопке)

Если производитель автоматики предоставляет SDK в виде DLL-библиотеки или COM-объекта, мы можем управлять контроллерами напрямую. Как упоминалось в обсуждении, если оборудование работает по IP, можно проанализировать возможность использования HTTP-запросов или специализированных команд драйвера.

Проанализируем пример использования COM-объекта драйвера (если он зарегистрирован в системе):


&НаКлиенте
Процедура ОткрытьДверьНажать()
    Попытка
        ДрайверСКУД = Новый COMОбъект("Lavina.Automation");
        ДрайверСКУД.Connect("192.168.1.100"); // IP контроллера
        ДрайверСКУД.OpenDoor(1); // Номер двери/реле
    Исключение
        Предупреждение("Не удалось связаться с контроллером доступа.");
    КонецПопытки;
КонецПроцедуры

Особенности лицензирования и практические советы

При продаже готовых решений, включающих 1С и стороннее железо, часто возникает вопрос лицензирования. Важно помнить, что для работы внутренних механизмов (подключение COM-порта, работа с SQL) дополнительные лицензии 1С не требуются — достаточно стандартных рабочих мест. Однако, если вы планируете тиражировать решение, стоит ознакомиться с правилами программы «1С:Совместимо».

Практические рекомендации:

Таким образом, подключение магнитного ридера к 1С — это стандартная задача, которая решается через использование БПО и правильную обработку внешних событий. Интеграция же со сложными системами СКУД требует понимания протоколов взаимодействия с базами данных или использования API производителя оборудования.

← На главную