Как использовать внешнюю компоненту Штрих-М в веб-клиенте 1С?

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

При разработке и адаптации конфигураций на управляемых формах часто возникает необходимость подключения торгового оборудования. Рассмотрим типичную ситуацию: в самописной конфигурации в тонком клиенте успешно используется компонента печати на фискальные регистраторы «Штрих-М». Код инициализации выглядит предельно просто:

КомпонентаПечати = Новый COMОбъект("AddIn.DrvFR");

Однако при попытке запустить этот же код в веб-клиенте (например, в браузере Firefox), система выдает ошибку, а метод НачатьУстановкуВнешнейКомпоненты не отрабатывает должным образом. Проанализируем, почему это происходит, и разберем по шагам, как заставить оборудование работать в веб-среде.

Почему COM-объект не работает в браузере

Использование метода Новый COMОбъект и файла DrvFR.dll в веб-клиенте изначально обречено на провал. Выясним причину: современные браузеры жестко изолированы от операционной системы пользователя в целях безопасности. Они не поддерживают инициализацию и прямую работу с COM- или ActiveX-объектами на стороне клиента. Любая попытка создать COM-объект в контексте веб-браузера будет заблокирована и приведет к ошибке.

Решение 1: Использование стандарта Native API

Для того чтобы торговое оборудование могло работать во всех типах клиентов, включая веб-клиент и операционные системы Linux, фирма «1С» разработала стандарт создания внешних компонент Native API. Рассмотрим подробнее, что нужно сделать для перехода:

  1. Откажитесь от старого COM-вызова в клиентском коде.
  2. Используйте актуальные драйверы от компании «Штрих-М», написанные по стандарту Native API (например, драйверы серии «ШТРИХ-М:ККТ с передачей данных в ОФД»). Обычно файлы таких компонент имеют названия формата smDrvFR1CLib*.dll.
  3. Сформируйте правильный XML-манифест для загрузки ZIP-архива с компонентой, указав тип компоненты как Native.

Решение 2: Настройка расширения для веб-браузера

Даже если вы используете правильную Native-компоненту, методы ПодключитьВнешнююКомпоненту или НачатьУстановкуВнешнейКомпоненты не сработают в браузере «из коробки». Посмотрим на обязательное условие:

Для взаимодействия браузера с локальным оборудованием, таким как COM-порты или USB-устройства, на компьютере пользователя обязательно должно быть установлено Расширение для работы с 1С:Предприятием (1C:Enterprise Extension). Без активированного плагина браузер не позволит платформе 1С обратиться к аппаратной части ПК.

Особенности архитектуры современных драйверов

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

Альтернативное решение: Серверная печать

Если вы не хотите дорабатывать самописную конфигурацию под Native API и решать проблемы с установкой расширений в браузерах пользователей, разберем альтернативный путь — перенос логики на сервер.

Вместо создания COM-объекта на клиенте, его инициализацию можно выполнить на стороне сервера 1С:


&НаСервере
Процедура НапечататьЧекНаСервере()
    КомпонентаПечати = Новый COMОбъект("AddIn.DrvFR");
    // Отправка команд на фискальный регистратор
КонецПроцедуры

В этом случае логика работы выглядит так:

  1. Пользователь в веб-клиенте нажимает кнопку пробития чека.
  2. Управление передается на сервер 1С.
  3. Сервер самостоятельно связывается с фискальным регистратором и отправляет на него команды.

Важное условие: для реализации этого метода кассовый аппарат должен быть доступен серверу. Он должен быть либо подключен непосредственно к серверному оборудованию, либо иметь сетевой интерфейс (Ethernet/Wi-Fi) и находиться в одной локальной сети с сервером 1С, чтобы сервер мог отправлять команды по IP-адресу.

← На главную