При формировании печатных форм, этикеток или ценников в конфигурациях на платформе 1С:Предприятие (в частности, в «Управление производственным предприятием», «Управление торговлей 10.3» и других типовых решениях) пользователи часто сталкиваются с ошибкой: «Компонента 1С:Печать штрихкодов не установлена на данном компьютере!». При этом драйвер штрихкода может быть физически установлен в операционной системе и отображаться в списке установленных программ. Разберем детально, почему возникает эта ошибка и какими способами её можно устранить.
Проанализируем архитектурную причину сбоя. Классическая компонента печати штрихкодов (версии 8.0.16.4 и аналогичные) представляет собой 32-разрядную библиотеку 1CBarCod.dll с ProgID V8.Barcod.1. Если на рабочем месте или сервере терминалов запущен 64-разрядный клиент 1С (1cv8.exe x64), он физически не может загрузить 32-битную динамическую библиотеку в свое адресное пространство внутри процесса (in-process). В результате при попытке инициализировать объект через Новый COMОбъект("V8.Barcod.1") или при обращении к внедренному в макет элементу ActiveX платформа возвращает сообщение об отсутствии компоненты.
Самое простое и надежное решение для рабочих мест, где требуется формирование и печать штрихкодов через устаревшие COM-объекты, — это явное переключение разрядности клиентского приложения на x86 (32 бита). Разберем по шагам, как это настроить:
Теперь клиентская сессия запустится в 32-битном адресном пространстве и сможет корректно обращаться к библиотеке 1CBarCod.dll.
Если на компьютере используется 64-битная операционная система Windows, стандартная регистрация через системную утилиту по умолчанию может использовать 64-битный регистратор из каталога System32, что приводит к сбоям. Выполним правильную регистрацию через 32-битную утилиту:
SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1C\1CBarCode\1CBarCod.dll"
Обратим внимание, что фактический путь к файлу библиотеки может отличаться в зависимости от каталога установки. После выполнения команды должно появиться системное сообщение об успешной регистрации модуля.
Если специфика рабочих процессов жестко требует запуска именно 64-битного клиента 1С, но при этом необходимо использовать 32-битную библиотеку, настроим DCOM-обертку. Рассмотрим порядок действий:
dcomcnfg и нажмем Enter.1CBarCodeProxy) и укажем способ активации Серверное приложение.1CBarCod.dll.В результате 64-битный процесс 1cv8.exe будет взаимодействовать с компонентой через системный суррогатный процесс dllhost.exe, что полностью снимает проблему несовместимости разрядностей.
Рассмотрим также современные архитектурные решения, которые позволяют полностью отказаться от старых COM/ActiveX-объектов:
ПодключитьВнешнююКомпоненту(), поддерживает как 32-битные, так и 64-битные клиенты, и вставляет готовое изображение в табличный документ через объект Картинка.