При попытке печати этикеток или ценников в программах «1С:Предприятие» пользователи часто сталкиваются со служебным сообщением: «Компонента 1С:Печать штрихкодов не установлена на данном компьютере!». Даже многократная переустановка дистрибутива 1CBarCode не приносит результата. Рассмотрим подробнее, почему возникают подобные сбои при обновлении платформы и какими способами можно решить эту проблему.
Проанализируем ситуацию, которая чаще всего приводит к этой ошибке. Традиционный модуль 1CBarCode представляет собой 32-разрядный ActiveX/COM-объект (DLL-библиотеку). Если на компьютере установлена и запущена 64-битная версия тонкого или толстого клиента «1С:Предприятие» (x86-64), платформа физически не может загрузить 32-битную DLL-библиотеку в свой 64-битный процесс.
Даже если сервер «1С:Предприятие» работает в 64-разрядном режиме, а внешняя компонента вызывается непосредственно на стороне клиента, разрядность клиентского приложения играет решающую роль.
Если для работы в организации используется старый механизм печати через ActiveX 1CBarCode, разберем по шагам, как заставить 1С запускать 32-битную версию платформы:
Windows x86).Иногда при установке компоненты обычным пользователем в терминальном режиме COM-объект регистрируется только в ветке реестра текущего пользователя HKCU. Из-за этого другие сеансы не видят установленный модуль. Посмотрим, как корректно зарегистрировать библиотеку:
cmd.exe) от имени Администратора.
regsvr32 "C:\Program Files (x86)\1C\1CBarCode\1CBarCode.dll"
Наиболее современным и надежным решением является отказ от устаревшего ActiveX-модуля 1CBarCode в пользу нативной компоненты из Библиотеки подключаемого оборудования (БПО). Нативная компонента Native одинаково хорошо работает как в 32-битных, так и в 64-битных клиентах, а также на стороне сервера 1С и в веб-клиенте.
Посмотрим на пример кода, который позволяет подключить компоненту печати штрихкодов из общего макета конфигурации КомпонентаПечатиШтрихкодов и сгенерировать изображение штрихкода на сервере:
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
Если ПодключениеВыполнено Тогда
Компонента = Новый("AddIn.КартинкаШтрихкода.Barcode");
// Настройка параметров штрихкода (тип, текст, размеры)
Компонента.ТипКода = 16; // EAN-13
Компонента.Текст = "4600000000000";
Компонента.Ширина = 300;
Компонента.Высота = 150;
// Получение картинки в формате двоичных данных
КартинкаДвоичныеДанные = Компонента.ПолучитьШтрихкод();
КонецЕсли;
При таком подходе сгенерированная картинка легко передается с сервера на клиент и выводится в табличный документ без необходимости устанавливать сторонние ActiveX-компоненты на каждый рабочий компьютер.