Где взять и как настроить компоненту Barcode для 64-битной версии 1С:Предприятие

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

Переход на 64-битную архитектуру платформы «1С:Предприятие» — это важный шаг для повышения производительности системы, однако он часто сопровождается техническими сложностями. Одной из самых распространенных проблем является прекращение работы старых библиотек печати штрихкодов. Старая компонента 1CBarCode.dll, выполненная по технологии ActiveX, существует только в 32-битном варианте и физически не может быть загружена в 64-битный процесс сервера или тонкого клиента.

В данной статье мы подробно разберем, как решить проблему отсутствия штрихкодов на 64-битных системах, где найти нужные файлы и как правильно изменить программный код для их подключения.

Почему старая компонента не работает в x64

Разберем ситуацию: когда вы запускаете 64-битный клиент или сервер 1С, операционная система создает процесс, который может работать только с библиотеками аналогичной разрядности. Если в коде встречается вызов Новый COMОбъект("V8.BarCode"), система пытается найти зарегистрированный в реестре Windows 32-битный компонент. Даже если он установлен, 64-битная 1С не сможет к нему обратиться. Это приводит к ошибкам при формировании печатных форм в фоновых заданиях на сервере или непосредственно в интерфейсе пользователя.

Решение 1: Использование нативной компоненты из типовых конфигураций

Как совершенно верно подмечено в обсуждении, современная платформа 1С уже давно перешла на использование технологии Native API. Фирма «1С» поставляет актуальную компоненту «1С:Печать штрихкодов», которая является универсальной и поддерживает как x86, так и x64 архитектуры.

Где найти компоненту?

Вам не нужно искать инсталляторы в интернете. Рассмотрим алгоритм извлечения компоненты из любой современной типовой конфигурации (например, «Бухгалтерия предприятия 3.0», «Управление торговлей 11» или «ERP 2»):

  1. Откройте типовую конфигурацию в режиме Конфигуратора.
  2. Перейдите в ветку Общие -> Общие макеты.
  3. Найдите макет с идентификатором КомпонентаПечатиШтрихкодов.
  4. Нажмите правой кнопкой мыши на макет и выберите пункт «Сохранить в файл...».
  5. Сохраните его как zip-архив. Внутри этого архива находятся библиотеки для всех платформ (Windows x86/x64, Linux x86/x64).

Как внедрить компоненту в свою базу?

После того как вы получили файл, проанализируем процесс его интеграции в вашу разработку. Вам необходимо создать аналогичный общий макет в своей конфигурации с типом «Внешняя компонента» и загрузить туда сохраненный архив.

Теперь рассмотрим пример кода для подключения этой компоненты. Вместо использования COM-объектов, мы будем использовать методы платформы для работы с внешними компонентами:


&НаСервере
Функция ПодключитьКомпонентуПечатиШтрихкода()
    ИмяМакета = "ОбщийМакет.КомпонентаПечатиШтрихкодов";
    Результат = УстановитьВнешнююКомпоненту(ИмяМакета);
    
    Если Результат Тогда
        ОбъектШтрихкода = Новый("AddIn.SymbolBarcode.Barcode");
        Возврат ОбъектШтрихкода;
    Иначе
        ЗаписьЖурналаРегистрации("Печать", УровеньЖурналаРегистрации.Ошибка, , , "Не удалось загрузить компоненту штрихкода.");
        Возврат Неопределено;
    КонецЕсли;
КонецФункции

Использование Native API избавляет вас от необходимости регистрации библиотек через regsvr32 на каждом рабочем месте. Платформа сама распакует нужную библиотеку из макета во временную папку пользователя при первом вызове.

Решение 2: Использование шрифтов штрихкода

Проанализируем альтернативный метод, который вообще не зависит от разрядности системы. Это использование специальных символьных шрифтов (например, EAN13.ttf или Code128.ttf). Суть метода заключается в том, что вместо картинки в табличный документ выводится обычная текстовая строка, к которой применен соответствующий шрифт.

Преимущества данного метода:

Однако помните, что для работы этого метода шрифт должен быть установлен на сервере (для формирования на стороне сервера) и на всех клиентских машинах, где происходит просмотр или печать документа.

Решение 3: Программная генерация через Zint

Если вам требуется поддержка специфических или очень сложных типов штрихкодов (например, Aztec, высокоплотные DataMatrix или специфические почтовые коды), рассмотрим использование открытой библиотеки Zint. Это мощный инструмент, который также имеет реализацию в виде внешней компоненты для 1С.

Выясним причину, почему это решение популярно: оно позволяет генерировать штрихкоды без использования графического интерфейса, возвращая картинку в виде двоичных данных, которые легко поместить в ОбластьМакета.Рисунки. Библиотека Zint скомпилирована под 64-битные системы и отлично работает в серверных фоновых заданиях.

Сравнение методов и рекомендации

Подведем итог и выберем оптимальный путь. Если вы работаете в рамках стандартных бизнес-задач (печать ценников, этикеток, счетов с QR-кодом), наилучшим решением будет использование нативной компоненты от 1С версии 9.0 или выше.

Рассмотрим пошагово, что нужно проверить, если штрихкод все равно не выводится:

  1. Разрядность сервера: Убедитесь, что если печать идет на сервере, компонента загружена в макет именно как "Внешняя компонента", а не как двоичные данные.
  2. Метод подключения: Проверьте, что в коде используется ПодключитьВнешнююКомпоненту с указанием правильного типа (AddIn).
  3. Права доступа: У пользователя, под которым работает служба сервера 1С, должны быть права на запись в папку временных файлов (%TEMP%), так как именно туда платформа извлекает DLL из макета.

Таким образом, переход на 64-битную платформу требует лишь обновления подхода к работе с библиотеками. Отказ от устаревших ActiveX в пользу Native API сделает вашу систему более стабильной и кроссплатформенной.

← На главную