При оформлении и печати этикеток или ценников в программных продуктах «1С:Предприятие» разработчики и пользователи часто сталкиваются с необходимостью кастомизации штрихкода. Стандартный штрихкод формата EAN-13 по умолчанию содержит числовое представление кода в нижней части под вертикальными полосами. Однако при уменьшении размеров штрихкода в макете этикетки эти цифры начинают накладываться друг на друга, сжиматься и печататься крайне нечетко. Единственным верным решением в такой ситуации является полное отключение вывода цифр под штрихкодом.
В этой статье мы подробно разберем, почему в некоторых конфигурациях (например, «1С:Управление нашей фирмой» или «1С:Управление торговлей») не удается легко найти свойства штрихкода по правой кнопке мыши, выясним технологическую разницу между старыми и новыми компонентами печати, а также рассмотрим несколько детальных способов решения этой задачи как интерактивно, так и программно.
Для начала проанализируем, почему у разных пользователей в разных конфигурациях интерфейс настройки штрихкодов выглядит совершенно по-разному. Дело в смене технологий платформы «1С:Предприятие»:
1CBarCode.exe. Она регистрировалась в операционной системе Windows как ActiveX-объект. При добавлении штрихкода в макет он встраивался туда как полноценный OLE-объект. В этом случае по клику правой кнопкой мыши действительно доступно контекстное меню «Свойства», в котором можно визуально управлять параметрами отображения.AddIn.КартинкаШтрихкода.Barcode, входящую в состав Библиотеки подключаемого оборудования (БПО). В самом макете штрихкод представляет собой обычную статичную картинку-рисунок. В момент вывода на печать система программно генерирует штрихкод, превращает его в изображение формата PNG или BMP и подставляет в этот рисунок. Именно поэтому при редактировании макета в конфигураторе или в режиме пользователя контекстное меню свойств ActiveX отсутствует — настраивать параметры генерации нужно программно или через специальный пользовательский интерфейс БПО.Давайте рассмотрим детальные варианты решения проблемы для обоих технологических стеков.
Если мы работаем в управляемом приложении (например, УНФ 1.4 или более новых редакциях), управление отображением штрихкода осуществляется непосредственно в коде модуля, который отвечает за формирование печатной формы этикетки. Нам необходимо принудительно установить свойство ОтображатьТекст (или его аналог) в значение Ложь перед генерацией картинки штрихкода.
Рассмотрим пример кода, когда внешняя компонента вызывается напрямую в процедуре печати:
// Инициализируем внешнюю компоненту генерации штрихкода
Попытка
ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
КомпонентаШК = Новый("AddIn.КартинкаШтрихкода.Barcode");
Исключение
ВызватьИсключение "Не удалось подключить компоненту печати штрихкодов!";
КонецПопытки;
// Настраиваем обязательные свойства штрихкода
КомпонентаШК.ТипКода = 1; // Указываем тип EAN-13
КомпонентаШК.Сообщение = "4601234567890"; // Наш штрихкод для генерации
// Отключаем вывод цифр под вертикальными линиями штрихкода
КомпонентаШК.ОтображатьТекст = Ложь;
// Генерируем картинку штрихкода и помещаем её в макет
КартинкаШК = КомпонентаШК.ПолучитьШтрихкодКартинкой();
ОбластьМакета.Рисунки.Штрихкод.Картинка = КартинкаШК;
Если в вашей конфигурации штрихкод выводится через стандартные механизмы БСП (Библиотеки стандартных подсистем), генерация обычно происходит через передачу структуры параметров в общую функцию. Проанализируем структуру параметров и добавим туда соответствующую настройку отключения текста:
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 150);
ПараметрыШтрихкода.Вставить("Высота", 50);
ПараметрыШтрихкода.Вставить("ТипКода", 1); // Соответствует EAN-13
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Ложь); // Ключевое свойство для скрытия цифр
ПараметрыШтрихкода.Вставить("РазмерШрифта", 10); // На случай, если текст все же нужен, но меньше
// Вызываем функцию генерации картинки из общего модуля БСП
КартинкаШтрихкода = ГенерацияШтрихкода.ПолучитьИзображениеШтрихкода(ПараметрыШтрихкода);
ОбластьМакета.Рисунки.Штрихкод.Картинка = КартинкаШтрихкода;
Использование свойства ОтображатьТекст = Ложь полностью решает проблему: на печать будет выводиться чистое графическое представление штрихкода без цифр снизу. Это позволяет масштабировать картинку штрихкода до минимально допустимых размеров, не боясь искажения шрифтов.
В случае, если вы работаете со старой версией конфигурации (например, «Управление торговлей 10.3»), где штрихкод встроен в макет как элемент управления ActiveX 1CBarCode, вы можете убрать цифры интерактивно без внесения изменений в программный код.
Выполним следующие шаги для изменения свойств элемента управления:
0, если настройка представлена числовым полем).После выполнения этих шагов элемент управления ActiveX перестанет отрисовывать цифры под штрихами, отображая только саму графическую сетку.
В актуальных версиях программ 1С (УНФ 1.6/3.0, УТ 11, Розница 3.0) пользователи настраивают этикетки непосредственно в режиме «1С:Предприятие» при помощи встроенного визуального редактора шаблонов. В этом случае изменять программный код конфигурации не требуется.
Рассмотрим алгоритм настройки шаблона без программирования:
При выводе на печать графический редактор 1С автоматически передаст признак отключения текста во внутреннюю Native-компоненту генерации, и штрихкод распечатается без цифр.
Если на вашем сервере или рабочих местах возникают постоянные проблемы с регистрацией внешних компонент 1С (например, при работе на операционных системах Linux без графического окружения или в x64-клиентах, где старые библиотеки не регистрируются), отличной альтернативой станет использование специализированных шрифтов штрихкодов.
Для реализации этого метода проанализируем следующие шаги:
EanGnivc или Code39). Этот шрифт должен быть установлен как на сервере «1С», так и на всех клиентских компьютерах, с которых производится печать.EanGnivc).Использование шрифтов позволяет полностью отказаться от внешних библиотек 1CBarCode и гарантирует быструю и стабильную печать даже на слабых принтерах этикеток.
Мы подробно проанализировали причины возникновения проблемы со скрытием текста под штрихкодом EAN-13 в различных поколениях платформы «1С:Предприятие 8». Выбрав подходящий для вашей конфигурации метод — визуальный, программный или альтернативный с использованием системных шрифтов — вы сможете добиться идеального качества печати этикеток любого размера.