Как выбрать и настроить 2D-сканер штрихкодов для «1С:Медицина. Больничная аптека» при работе с МДЛП?

Системный администратор 1С v8.3 (Управляемые формы) Сфера услуг, туризм и социальный сектор
← На главную

Интеграция конфигурации «1С:Медицина. Больничная аптека» с государственной информационной системой мониторинга движения лекарственных препаратов (ИС МДЛП, она же «Честный Знак») выдвигает жесткие требования к торговому оборудованию. В отличие от обычного линейного штрихкодирования, учет маркированных лекарств строится на считывании двумерных кодов формата DataMatrix. На практике многие технические специалисты и фармацевты сталкиваются со сложностями: сканеры не распознают мелкие коды на ампулах, «склеивают» данные в одну строку или вовсе отказываются передавать информацию в 1С.

В этой статье мы подробно разберем, как правильно подобрать 2D-сканер штрихкодов, какие подводные камни ожидают вас при настройке оборудования в 1С и как решить главную проблему маркировки — передачу скрытого спецсимвола GS в информационную базу.

---

Основные критерии выбора 2D-сканера для маркировки лекарств

При подборе оборудования для больничной аптеки недостаточно ориентироваться только на цену устройства. Специфика маркировки лекарственных препаратов накладывает несколько ограничений, которые необходимо учитывать:

  1. Плотность сканирующего модуля (High Density — HD): Коды DataMatrix на лекарствах (особенно на ампулах, флаконах или мелких пачках типа глазных капель) могут иметь физический размер всего 10х10 мм или 12х12 мм. Бюджетные сканеры общего назначения со стандартным фокусом (SR — Standard Range) физически не способны сфокусироваться на таком мелком коде. Выбирайте модели с оптикой высокого разрешения (HD).
  2. Подавление бликов и отражений: Лекарства часто упаковываются в блистерную фольгу, глянцевый картон или прозрачное стекло. При сканировании обычный светодиод подсветки создает засветку (блик), из-за чего сканер «слепнет». Качественные сканеры оснащаются поляризационными фильтрами или технологиями рассеивания подсветки для компенсации бликов.
  3. Медицинское исполнение корпуса (Healthcare — HC): Для использования непосредственно в отделениях больницы или рецептурно-производственных отделах рекомендуется выбирать сканеры в специальном исполнении. Их корпус изготавливается из пластика, устойчивого к агрессивным дезинфицирующим средствам и спиртосодержащим растворам, что предотвращает помутнение защитного стекла и разрушение корпуса со временем.
  4. Способ подключения (проводной или беспроводной): Для стационарного рабочего места в аптеке достаточно проводного USB-сканера. Однако, если требуется принимать крупногабаритные коробки на складе, лучшим выбором станет беспроводная модель (Bluetooth с USB-донглом или коммуникационной подставкой), например, из линейки Mercury CL или Honeywell.

---

Список протестированных моделей 2D-сканеров для МДЛП

Для минимизации рисков при внедрении маркировки рекомендуется выбирать устройства, прошедшие официальное тестирование системы «Честный Знак». Рассмотрим список оборудования, показавшего наилучшую совместимость:

Выбрав одну из этих моделей, вы гарантируете себе наличие актуальных прошивок от производителя, разработанных специально под российские стандарты маркировки лекарств.

---

Техническая сложность 2D-сканирования: Передача символа GS (Group Separator)

Проанализируем главную причину, по которой 1С выдает ошибку «Некорректный серийный номер» или «Штрихкод не найден в базе» при считывании DataMatrix кодов. Структура кода маркировки лекарства включает в себя несколько идентификаторов применения (AI). Внутри кода используется непечатный управляющий символ GS (символ разделения групп данных с кодом ASCII 29). Он указывает системе, где заканчивается поле переменной длины (например, серийный номер) и начинается следующее поле (например, ключ проверки).

Если сканер работает в стандартном режиме эмуляции клавиатуры (HID):

  1. Сканер передает данные в операционную систему так, словно их последовательно нажимают на клавиатуре.
  2. Операционная система Windows игнорирует или искажает непечатный управляющий символ GS (ASCII 29).
  3. В 1С поступает «склеенная» строка данных без разделителей. Алгоритм разбора КИЗ (контрольно-идентификационного знака) внутри 1С ломается, и программа не может распознать структуру штрихкода.

Для решения этой проблемы мы рассмотрим два основных метода настройки сканера.

---

Вариант 1. Настройка сканера в режиме виртуального COM-порта (Рекомендуется)

Использование режима эмуляции COM-порта (USB-to-Serial / Virtual COM) является «золотым стандартом» интеграции с 1С. В этом режиме данные передаются напрямую через драйвер торгового оборудования в виде байтового потока, что гарантирует 100% сохранность управляющего символа GS (ASCII 29) без искажений со стороны Windows.

Разберем процесс настройки по шагам:

  1. Перевод сканера в режим эмуляции COM-порта: Найдите в инструкции к вашему сканеру управляющий штрихкод с названием «Enable USB-COM Emulation» или «USB Serial Emulation» и считайте его сканером. Устройство издаст специфический звуковой сигнал и перезагрузится.
  2. Установка драйвера производителя: Для операционной системы Windows может потребоваться установка специального драйвера виртуального COM-порта от производителя сканера (например, Honeywell Virtual COM Port Driver или драйвер виртуального порта от Mertech). После установки в Диспетчере устройств Windows в разделе «Порты (COM и LPT)» должен появиться новый виртуальный COM-порт (например, COM3).
  3. Настройка в «1С:Медицина. Больничная аптека»:
    • Перейдите в раздел Администрирование -> Подключаемое оборудование.
    • Установите флажок «Использовать подключаемое оборудование» и откройте справочник «Подключаемое оборудование».
    • Создайте новый элемент с типом оборудования «Сканеры штрихкода».
    • Выберите драйвер устройства: «1С:Сканеры штрихкода (NativeApi)».
    • Нажмите кнопку «Настроить». В открывшемся окне укажите порт (тот самый COM-порт из Диспетчера устройств, например, COM3) и скорость передачи данных (обычно 9600).
    • Нажмите кнопку «Тест устройства» и считайте тестовый DataMatrix код с упаковки лекарства. В окне теста вы должны увидеть считанную строку, в которой символ GS будет явно отображаться в виде спецсимвола <GS> или байта #29.

---

Вариант 2. Настройка сканера в режиме эмуляции клавиатуры с преобразованием GS

Если по каким-то причинам перевести сканер в режим COM-порта невозможно (например, из-за ограничений терминального сервера RDP или отсутствия драйверов под вашу версию ОС), можно настроить сканер на преобразование символа GS в печатную последовательность клавиш. Этот метод сложнее и требует программирования самого сканера штрихкодами из инструкции пользователя.

Рассмотрим алгоритм настройки:

  1. Сканер программируется на замену символа GS (ASCII 29) на определенный префикс или комбинацию клавиш. Наиболее распространенный вариант — настроить передачу символа GS через Alt-коды (эмуляция последовательного нажатия клавиш Alt + 029 на цифровой клавиатуре Numpad).
  2. Другой вариант — программирование сканера на замену символа ASCII 29 на текстовую строку (например, замена на символ решетки # или сочетание _GS_). Но в этом случае вам придется дорабатывать обработку получения штрихкода в 1С, чтобы программа умела распознавать этот заменитель и перекодировать его обратно в GS.

Для наглядности посмотрим, как выглядит примерный обработчик внешнего события в коде 1С, если сканер настроен корректно и передает данные:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Событие = "Barcode" Тогда
        Штрихкод = Данные;
        
        // Символ GS имеет код ASCII 29. Проверим его наличие в кодовой строке:
        СимволGS = Символ(29);
        Если Найти(Штрихкод, СимволGS) > 0 Тогда
            // Запускаем штатный механизм разбора маркировки МДЛП в 1С
            СтруктураКодаМаркировки = МДЛПКлиентСервер.РазобратьКодМаркировки(Штрихкод);
            Если СтруктураКодаМаркировки.Результат Тогда
                ЗаписатьЛог("Код DataMatrix успешно распознан. GTIN: " + СтруктураКодаМаркировки.GTIN);
            Иначе
                ВызватьИсключение "Ошибка разбора структуры маркированного кода!";
            КонецЕсли;
        Иначе
            Предупреждение("Считанный код не содержит обязательного разделителя GS. Проверьте настройки сканера!");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

---

Интеграция с Регистраторами выбытия (РВ) в Больничной аптеке

Для медицинских организаций критически важно разделять понятия обычного сканера штрихкодов и Регистратора выбытия (РВ). Регистратор выбытия — это специализированный терминал с криптографическим модулем безопасности, выдаваемый оператором ЦРПТ бесплатно для фиксации выбытия медикаментов (при бесплатной выдаче по льготным рецептам или для оказания медицинской помощи).

Выясним, как эти устройства взаимодействуют в рамках «1С:Медицина. Больничная аптека»:

Таким образом, наличие Регистратора выбытия не отменяет необходимости качественной настройки обычных 2D-сканеров на каждом рабочем месте провизора и фармацевта в больничной аптеке.

---

Тестирование сканера в «Песочнице» МДЛП

Перед тем как запускать работу с маркированными препаратами в продуктивном режиме, обязательно протестируйте оборудование в тестовом контуре («Песочнице») МДЛП. Это позволит вам убедиться в правильности настроек без риска заблокировать реальные лекарственные средства в системе.

Для проведения тестирования выполните следующие шаги:

  1. Зарегистрируйте личный кабинет вашей медицинской организации в тестовом контуре МДЛП.
  2. Сгенерируйте и распечатайте на обычном принтере тестовые коды маркировки (эмуляторы КИЗ), предоставляемые в личном кабинете тестирования.
  3. Попробуйте отсканировать распечатанные коды в документы поступления или списания в тестовой базе «1С:Медицина. Больничная аптека». Если КИЗы успешно разбираются на составляющие элементы (GTIN, серийный номер), значит, ваш сканер настроен правильно и готов к промышленной эксплуатации.
← На главную