Как найти и установить компоненту «1С:Печать штрихкодов» для УТ 10.3 на 64-битной платформе?

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

При работе с актуальными релизами конфигурации «Управление торговлей 10.3» (включая печать счетов и УПД с QR кодом — для этого есть обработка добавления QR-кодов на печатные формы) на современной платформе 1С:Предприятие 8.3 (особенно при использовании 64-битных версий клиента) пользователи и разработчики часто сталкиваются с проблемой: старый инсталлятор компоненты печати штрихкодов, который раньше был доступен на сайте поддержки, больше не актуален или не работает. В данной статье мы подробно разберем, где взять актуальную библиотеку, как ее правильно извлечь из конфигурации и как обеспечить ее работоспособность в современных условиях.

Где искать компоненту, если ее нет на сайте 1С?

Ранее компонента 1CBarCode распространялась в виде отдельного дистрибутива (ActiveX). Однако в современных реалиях стратегия 1С изменилась. Теперь актуальные версии библиотек печати штрихкодов включены непосредственно в состав конфигураций, использующих БПО (Библиотеку подключаемого оборудования), например, для заказа поставщику со штрихкодом. Даже в такой классической конфигурации, как УТ 10.3, эта компонента встроена в виде общего макета.

Рассмотрим пошагово процесс поиска и извлечения компоненты из вашей базы данных (чтобы создать счет на оплату с QR кодом):

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

После распаковки этого архива мы увидим набор файлов. Проанализируем их содержимое. Если наша задача — работа на 64-битной версии Windows с 64-битным клиентом 1С, нам потребуется файл с соответствующим названием, например, BarcodeLibNativeWin64_10_0_2_4.dll. Индексы в конце могут отличаться в зависимости от версии вашей конфигурации (например, 10.0.6.х).

Различие между ActiveX и Native технологиями

Это критически важный момент для понимания стабильной работы системы. Разберем, почему старый метод регистрации через regsvr32 больше не является предпочтительным:

Технология ActiveX (COM): Это старая библиотека 1CBarCode.dll. Она требует обязательной регистрации в реестре Windows под правами администратора. Главный ее минус — она 32-битная. Если вы установите 64-битную платформу 1С:Предприятие, этот объект просто не сможет быть создан в памяти процесса, так как 64-битный процесс не может загружать 32-битные DLL.

Технология Native API: Современные версии компоненты используют Native-технологию. Такие библиотеки (как те, что мы извлекли из макета) не требуют регистрации в реестре системы. Платформа 1С умеет загружать их динамически «на лету» прямо из макета или из временной папки профиля пользователя. Именно Native-компоненты поддерживают архитектуру x64.

Программное подключение компоненты (Native API)

Проанализируем пример кода, который позволяет правильно инициализировать компоненту без привязки к ее регистрации в Windows. Это особенно полезно, когда у пользователей ограничены права на запись в системный реестр или программные папки. Основной метод, который мы будем использовать — ПодключитьВнешнююКомпоненту.

Рассмотрим фрагмент кода, который можно использовать в модуле печати ценников или этикеток:


// Попытка подключения компоненты из общего макета конфигурации
Подключено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);

Если Подключено Тогда
    // Создание объекта внешней компоненты
    Компонента_Barcode = Новый("AddIn.КартинкаШтрихкода.Barcode");
Иначе
    // Если подключение не удалось, выводим сообщение или используем альтернативный метод
    Сообщить("Не удалось загрузить компоненту печати штрихкодов!");
    Возврат Неопределено;
КонецЕсли;

Если НЕ Компонента_Barcode.ГрафикаУстановлена Тогда
    // Если по каким-то причинам графическая подсистема компоненты не инициализирована
    Возврат Неопределено;
Иначе
    // Установка параметров отображения (шрифты, размеры)
    Если Компонента_Barcode.НайтиШрифт("Tahoma") Тогда
        Компонента_Barcode.Шрифт = "Tahoma";
    Иначе
        // Перебор доступных в системе шрифтов, если Tahoma не найден
        Для Сч = 0 По Компонента_Barcode.КоличествоШрифтов - 1 Цикл
            ТекущийШрифтШК = Компонента_Barcode.ШрифтПоИндексу(Сч);
            Если ТекущийШрифтШК <> Неопределено Тогда
                Компонента_Barcode.Шрифт = ТекущийШрифтШК;
                Прервать;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    Компонента_Barcode.РазмерШрифта = 14;
    Возврат Компонента_Barcode;
КонецЕсли;

В данном примере мы используем параметр ТипВнешнейКомпоненты.Native. Это говорит платформе, что нужно искать внутри архива макета библиотеку, соответствующую текущей разрядности запущенного клиента 1С. Если вы работаете в x86 клиенте, платформа возьмет 32-битную DLL, если в x64 — 64-битную.

Нюансы отображения: Шрифты и права доступа

Выясним причину, по которой штрихкод может не печататься, даже если компонента успешно подключена. Часто проблема кроется в шрифтах. Компонента 1С формирует картинку штрихкода (объект Картинка), и для прорисовки цифр под полосками ей требуются системные шрифты (например, Arial или Tahoma). Если код выполняется на стороне сервера, убедитесь, что необходимые шрифты установлены на сервере. Если на клиенте — проверьте наличие шрифтов в Windows.

Еще один важный момент — права доступа к папке профиля пользователя. При вызове ПодключитьВнешнююКомпоненту из макета, платформа 1С распаковывает DLL во временный каталог (обычно это %AppData%\Roaming\1C\1cv8\ExtCompDir). Проверьте, что антивирусное ПО или политики безопасности не блокируют выполнение DLL-файлов из этого каталога.

Альтернативные методы решения

Если по каким-то причинам использование Native-компоненты невозможно (например, на очень старых версиях платформы или специфических ОС), рассмотрим альтернативный вариант — шрифты штрихкода. Существуют специальные шрифты (например, EAN13.ttf, Code39.ttf), которые превращают обычную текстовую строку в штрихкод. В этом случае вам не нужны никакие DLL, достаточно установить шрифт в Windows и выбрать его в свойствах ячейки табличного документа 1С. Однако помните, что для формирования контрольного символа EAN-13 вам все равно потребуется небольшая функция на языке 1С, чтобы преобразовать цифры в специальную последовательность символов шрифта.

Подводя итог, отметим: для УТ 10.3 на современных платформах 8.3 использование Native-версии из общего макета является самым надежным и «чистым» способом, избавляющим от необходимости ручной регистрации библиотек в системе.

← На главную