Как убрать цифры со штрихкода EAN-13 в 1С:Предприятие

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

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

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

Выясняем причину: ActiveX против Native API

Для начала проанализируем, почему у разных пользователей в разных конфигурациях интерфейс настройки штрихкодов выглядит совершенно по-разному. Дело в смене технологий платформы «1С:Предприятие»:

  1. Старый подход (ActiveX / COM): В старых конфигурациях на обычных формах (таких как «Управление торговлей 10.3») использовалась внешняя компонента 1CBarCode.exe. Она регистрировалась в операционной системе Windows как ActiveX-объект. При добавлении штрихкода в макет он встраивался туда как полноценный OLE-объект. В этом случае по клику правой кнопкой мыши действительно доступно контекстное меню «Свойства», в котором можно визуально управлять параметрами отображения.
  2. Новый подход (Native API): В современных конфигурациях на управляемых формах (например, «Управление нашей фирмой», «Управление торговлей 11», «Розница 3.0») технология ActiveX не применяется из-за требований кроссплатформенности (работа под Linux, macOS, в веб-клиентах). Платформа использует современную Native-компоненту AddIn.КартинкаШтрихкода.Barcode, входящую в состав Библиотеки подключаемого оборудования (БПО). В самом макете штрихкод представляет собой обычную статичную картинку-рисунок. В момент вывода на печать система программно генерирует штрихкод, превращает его в изображение формата PNG или BMP и подставляет в этот рисунок. Именно поэтому при редактировании макета в конфигураторе или в режиме пользователя контекстное меню свойств ActiveX отсутствует — настраивать параметры генерации нужно программно или через специальный пользовательский интерфейс БПО.

Давайте рассмотрим детальные варианты решения проблемы для обоих технологических стеков.

Решение №1: Программное управление в управляемых формах (Native API)

Если мы работаем в управляемом приложении (например, УНФ 1.4 или более новых редакциях), управление отображением штрихкода осуществляется непосредственно в коде модуля, который отвечает за формирование печатной формы этикетки. Нам необходимо принудительно установить свойство ОтображатьТекст (или его аналог) в значение Ложь перед генерацией картинки штрихкода.

Рассмотрим пример кода, когда внешняя компонента вызывается напрямую в процедуре печати:


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

// Настраиваем обязательные свойства штрихкода
КомпонентаШК.ТипКода = 1; // Указываем тип EAN-13
КомпонентаШК.Сообщение = "4601234567890"; // Наш штрихкод для генерации

// Отключаем вывод цифр под вертикальными линиями штрихкода
КомпонентаШК.ОтображатьТекст = Ложь;

// Генерируем картинку штрихкода и помещаем её в макет
КартинкаШК = КомпонентаШК.ПолучитьШтрихкодКартинкой();
ОбластьМакета.Рисунки.Штрихкод.Картинка = КартинкаШК;

Если в вашей конфигурации штрихкод выводится через стандартные механизмы БСП (Библиотеки стандартных подсистем), генерация обычно происходит через передачу структуры параметров в общую функцию. Проанализируем структуру параметров и добавим туда соответствующую настройку отключения текста:


ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 150);
ПараметрыШтрихкода.Вставить("Высота", 50);
ПараметрыШтрихкода.Вставить("ТипКода", 1); // Соответствует EAN-13
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Ложь); // Ключевое свойство для скрытия цифр
ПараметрыШтрихкода.Вставить("РазмерШрифта", 10); // На случай, если текст все же нужен, но меньше

// Вызываем функцию генерации картинки из общего модуля БСП
КартинкаШтрихкода = ГенерацияШтрихкода.ПолучитьИзображениеШтрихкода(ПараметрыШтрихкода);
ОбластьМакета.Рисунки.Штрихкод.Картинка = КартинкаШтрихкода;

Использование свойства ОтображатьТекст = Ложь полностью решает проблему: на печать будет выводиться чистое графическое представление штрихкода без цифр снизу. Это позволяет масштабировать картинку штрихкода до минимально допустимых размеров, не боясь искажения шрифтов.

Решение №2: Интерактивная настройка в режиме обычного приложения (ActiveX)

В случае, если вы работаете со старой версией конфигурации (например, «Управление торговлей 10.3»), где штрихкод встроен в макет как элемент управления ActiveX 1CBarCode, вы можете убрать цифры интерактивно без внесения изменений в программный код.

Выполним следующие шаги для изменения свойств элемента управления:

  1. Откройте конфигурацию «1С:Предприятие» и перейдите в режим редактирования нужного макета этикетки.
  2. Найдите область со штрихкодом. Наведите курсор мыши на рисунок штрихкода и нажмите правую кнопку мыши (ПКМ).
  3. В появившемся контекстном меню выберите пункт «Элемент управления "1С:Печать штрихкодов"», а затем перейдите в подпункт «Свойства».
  4. В открывшемся окне свойств перейдите на вкладку «Оформление» (в некоторых версиях — вкладка «Параметры»).
  5. Найдите свойство «Положение текста» и установите его значение в «Нет» (или установите числовое значение 0, если настройка представлена числовым полем).
  6. Нажмите кнопку «Применить» и сохраните макет этикетки.

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

Решение №3: Изменение настроек в современном «Редакторе шаблонов этикеток»

В актуальных версиях программ 1С (УНФ 1.6/3.0, УТ 11, Розница 3.0) пользователи настраивают этикетки непосредственно в режиме «1С:Предприятие» при помощи встроенного визуального редактора шаблонов. В этом случае изменять программный код конфигурации не требуется.

Рассмотрим алгоритм настройки шаблона без программирования:

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

При выводе на печать графический редактор 1С автоматически передаст признак отключения текста во внутреннюю Native-компоненту генерации, и штрихкод распечатается без цифр.

Решение №4: Альтернативный обходной путь с использованием шрифтов штрихкодов

Если на вашем сервере или рабочих местах возникают постоянные проблемы с регистрацией внешних компонент 1С (например, при работе на операционных системах Linux без графического окружения или в x64-клиентах, где старые библиотеки не регистрируются), отличной альтернативой станет использование специализированных шрифтов штрихкодов.

Для реализации этого метода проанализируем следующие шаги:

  1. Установите в операционную систему специализированный шрифт штрихкода (например, популярный шрифт семейства EanGnivc или Code39). Этот шрифт должен быть установлен как на сервере «1С», так и на всех клиентских компьютерах, с которых производится печать.
  2. В макете этикетки выделите обычную текстовую ячейку, куда выводится код товара (строковое представление EAN-13).
  3. В свойствах ячейки макета в поле «Шрифт» укажите установленный шрифт штрихкода (например, EanGnivc).
  4. Поскольку этот шрифт преобразует любые символы текста непосредственно в штрихи, на печать будет выводиться только графический штрихкод. Сами цифры под штрихкодом отображаться не будут, поскольку ячейка отображает только символы шрифта.
  5. Если цифры на этикетке все же нужны отдельно от штрихкода, просто выведите их обычной текстовой строкой (шрифтом Arial или Calibri) в соседней ячейке макета чуть ниже штрихкода.

Использование шрифтов позволяет полностью отказаться от внешних библиотек 1CBarCode и гарантирует быструю и стабильную печать даже на слабых принтерах этикеток.

Мы подробно проанализировали причины возникновения проблемы со скрытием текста под штрихкодом EAN-13 в различных поколениях платформы «1С:Предприятие 8». Выбрав подходящий для вашей конфигурации метод — визуальный, программный или альтернативный с использованием системных шрифтов — вы сможете добиться идеального качества печати этикеток любого размера.

← На главную