При разработке и адаптации конфигураций на управляемых формах часто возникает необходимость подключения торгового оборудования. Рассмотрим типичную ситуацию: в самописной конфигурации в тонком клиенте успешно используется компонента печати на фискальные регистраторы «Штрих-М». Код инициализации выглядит предельно просто:
КомпонентаПечати = Новый COMОбъект("AddIn.DrvFR");
Однако при попытке запустить этот же код в веб-клиенте (например, в браузере Firefox), система выдает ошибку, а метод НачатьУстановкуВнешнейКомпоненты не отрабатывает должным образом. Проанализируем, почему это происходит, и разберем по шагам, как заставить оборудование работать в веб-среде.
Использование метода Новый COMОбъект и файла DrvFR.dll в веб-клиенте изначально обречено на провал. Выясним причину: современные браузеры жестко изолированы от операционной системы пользователя в целях безопасности. Они не поддерживают инициализацию и прямую работу с COM- или ActiveX-объектами на стороне клиента. Любая попытка создать COM-объект в контексте веб-браузера будет заблокирована и приведет к ошибке.
Для того чтобы торговое оборудование могло работать во всех типах клиентов, включая веб-клиент и операционные системы Linux, фирма «1С» разработала стандарт создания внешних компонент Native API. Рассмотрим подробнее, что нужно сделать для перехода:
smDrvFR1CLib*.dll.Даже если вы используете правильную Native-компоненту, методы ПодключитьВнешнююКомпоненту или НачатьУстановкуВнешнейКомпоненты не сработают в браузере «из коробки». Посмотрим на обязательное условие:
Для взаимодействия браузера с локальным оборудованием, таким как COM-порты или USB-устройства, на компьютере пользователя обязательно должно быть установлено Расширение для работы с 1С:Предприятием (1C:Enterprise Extension). Без активированного плагина браузер не позволит платформе 1С обратиться к аппаратной части ПК.
Проанализируем современный подход к драйверам. При использовании «Библиотеки подключаемого оборудования» (БПО), драйверы «Штрих-М» работают по двухкомпонентной архитектуре. Это означает, что нельзя просто запаковать одну библиотеку в архив и раздавать ее через базу 1С. Основная поставка драйвера должна быть предварительно установлена в операционной системе средствами дистрибутива от самого производителя, а внешняя компонента в 1С выступает лишь связующим мостом (адаптером) между платформой и основным драйвером ОС.
Если вы не хотите дорабатывать самописную конфигурацию под Native API и решать проблемы с установкой расширений в браузерах пользователей, разберем альтернативный путь — перенос логики на сервер.
Вместо создания COM-объекта на клиенте, его инициализацию можно выполнить на стороне сервера 1С:
&НаСервере
Процедура НапечататьЧекНаСервере()
КомпонентаПечати = Новый COMОбъект("AddIn.DrvFR");
// Отправка команд на фискальный регистратор
КонецПроцедуры
В этом случае логика работы выглядит так:
Важное условие: для реализации этого метода кассовый аппарат должен быть доступен серверу. Он должен быть либо подключен непосредственно к серверному оборудованию, либо иметь сетевой интерфейс (Ethernet/Wi-Fi) и находиться в одной локальной сети с сервером 1С, чтобы сервер мог отправлять команды по IP-адресу.