Компонента 1C:Печать штрихкодов: Установка, настройка и решение проблем (Native API)
Архитектура внешних компонент (Add-ins) 1С
Компонента 1C:Печать штрихкодов (используется для генерации EAN-13, QR-кодов, DataMatrix) исторически существовала в виде COM-объекта (ActiveX, файл 1cbarcode.dll). Ошибки «Компонента не установлена» или «Тип не определен (AddIn.1CBarcode)» возникают из-за архитектурного конфликта: старая DLL является 32-битной (x86), а сервер 1С:Предприятия или Толстый клиент часто работают в 64-битном (x64) адресном пространстве. 64-битный процесс не может напрямую загрузить 32-битную DLL. Бизнес-риски: остановка отгрузок со склада (не печатаются ТТН, этикетки и маркировка Честный ЗНАК).
Сравнение технологий генерации штрихкодов в 1С
| Технология | Файлы (ID) | Совместимость | Риски |
|---|---|---|---|
| COM / ActiveX (Устарело) | 1cbarcode.dll | Только x86 (32-bit) Windows. | Ломается на x64 серверах. Требует админских прав для regsvr32. |
| Native API (Современный метод) | Встроено в БСП / Макеты 1С (Barcode.dll, Barcode.so) | Кроссплатформенно (x86/x64, Win/Linux). | Минимальные. Загружается через ПодключитьВнешнююКомпоненту() без реестра ОС. |
Алгоритм установки и решения конфликтов разрядности
Сценарий 1: Переход на Native API компоненту (Рекомендуется)
Во всех современных типовых конфигурациях (УТ 11, ERP, БП 3.0) встроена Native API компонента. Вам НЕ нужно устанавливать MSI-инсталляторы. Компонента хранится внутри конфигурации (в Общих Макетах).
Пример программного подключения Native-компоненты (Код 1С)
ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "Barcode", ТипВнешнейКомпоненты.Native);
Генератор = Новый("AddIn.Barcode.Barcode2D");
Генератор.ТипШтрихкода = 1; // QR-код
Генератор.Значение = "Данные маркировки...";
КартинкаШК = Генератор.ПолучитьКартинкуШтрихкода();Сценарий 2: Регистрация старой COM-компоненты на x64 ОС (Legacy)
Если используется самописная или старая конфигурация (УТ 10.3), требующая именно COM-объект, регистрируйте DLL через подсистему эмуляции SysWOW64.
- Скачайте и установите инсталлятор "1С:Печать штрихкодов". Файл
1cbarcode.dllокажется в системной папке. - Откройте командную строку (cmd) строго от имени Администратора.
- Выполните команду для 64-битной Windows:
%systemroot%\SysWoW64\regsvr32.exe "C:\Program Files (x86)\1C\1CBarCode\1cbarcode.dll" - В 1С подключение выполняется через:
Попытка ПодключитьВнешнююКомпоненту("AddIn.1CBarcode") Исключение...
Типовые ошибки администраторов
- Вызов генерации штрихкода на сервере (x64) через COM: Даже если вы зарегистрировали 32-битную
1cbarcode.dllна сервере, 64-битный процессrphost.exeне сможет ее использовать. Генерацию через старую COM-компоненту нужно делать строго на Клиенте (директива&НаКлиенте) в 32-битном приложении, либо использовать NativeAPI. - Забыли про Linux-серверы: COM/ActiveX технологии не работают в Linux в принципе. NativeAPI компоненты содержат в себе скомпилированные
.soбиблиотеки для Linux x64, что делает код кроссплатформенным.
Интеграция с оборудованием (ТДС, Принтеры этикеток, Сканеры) — самая хрупкая часть 1С. Эксперты ITSTM проведут рефакторинг старого кода генерации штрихкодов, переведут вашу систему на технологию NativeAPI (или БПО) и обеспечат бесперебойную работу складов на любой ОС.
Частые вопросы (FAQ)
Почему штрихкод печатается в виде цифр без полосок?
В старом механизме ActiveX компонента зависела от наличия специальных шрифтов (например, EAN-13.ttf), установленных в системе. Если шрифта нет, выводятся только символы. NativeAPI компонента лишена этого недостатка — она генерирует картинку на лету, без использования системных шрифтов.
Где скачать NativeAPI компоненту?
Она распространяется в составе 'Библиотеки подключаемого оборудования' (БПО) от 1С или в составе типовых конфигураций. Если у вас самописка, вы можете выгрузить ОбщийМакет с компонентой из любой демо-базы УТ 11 и загрузить в свою конфигурацию.
Можно ли заставить 64-битный rphost работать с 32-битной COM-DLL?
Напрямую — нет. Существуют 'костыли' через COM-Surrogate (dllhost.exe), настраиваемые через Component Services (DCOMCNFG), но для 1С это решение крайне нестабильно и вызывает утечки памяти. Однозначно переходите на Native.
Поддерживает ли компонента 1С печать DataMatrix (Честный Знак)?
Да, актуальные версии компоненты NativeAPI (начиная с 9.x) полностью поддерживают формат GS1 DataMatrix, включая спецсимволы FNC1, необходимые для валидной маркировки ЦРПТ.