Разработка и Конфигурация · 11 мин
Как добавить штрихкод в макет 1С
Пошаговая инструкция по добавлению штрихкода в макет 1С: компонента печати, картинка штрихкода в табличном документе, типовые ошибки и проверка результата.
Штрихкоды на печатных формах 1С нужны для накладных, этикеток, счетов и складских документов: сканер считывает код, и документ находится в базе за секунду. В типовых конфигурациях механизм уже встроен — чаще всего задача сводится к тому, чтобы вывести картинку штрихкода в нужную область табличного документа и подключить компоненту формирования изображения.
Есть два основных пути: использовать готовую функцию из модуля менеджера печати (в конфигурациях на БСП это «МенеджерОборудованияВызовСервера» или модуль печати штрихкодов) либо сформировать штрихкод внешней компонентой «1С:Библиотека штрихкодов» (Barcode) и вставить результат как картинку в макет. Оба способа дают одинаковый визуальный результат, но различаются требованиями к установке компоненты на сервере и клиенте.
Ниже разобрано, как проверить наличие компоненты, добавить область для штрихкода в макет, вывести код программно и убедиться, что печатная форма читается сканером. Примеры приведены для управляемых форм и типового табличного документа — они работают в большинстве конфигураций на платформе 8.3.
Проверьте, доступна ли компонента печати штрихкодов
Формирование картинки штрихкода в 1С выполняет внешняя компонента — обычно «1С:Библиотека штрихкодов» (Barcode), которая поставляется в составе конфигураций на БСП или дистрибутива платформы. Если компонента не установлена на сервере (при серверном вызове) или на клиенте (при клиентском), вместо картинки вы получите пустую область или ошибку «Не удалось подключить внешнюю компоненту».
Быстрая проверка: откройте любую типовую печатную форму, где штрихкод уже предусмотрен (например, этикетку в «Управлении торговлей» или «ERP»). Если код выводится — компонента работает, и вам остаётся только добавить её вызов в свой макет. Если типовых форм со штрихкодом в вашей конфигурации нет, проверьте наличие общего макета с компонентой: Конфигуратор → Общие → Общие макеты → ищите макет с именем вроде «КомпонентаПечатиШтрихкодов».
В файловой базе компонента регистрируется при первом обращении автоматически, если она хранится в макете конфигурации. В клиент-серверном варианте убедитесь, что у пользователя сервера 1С есть права на запись во временный каталог — иначе компонента не сможет распаковаться и зарегистрироваться.
Добавьте область для штрихкода в макет
Откройте макет печатной формы (обычно это макет типа «Табличный документ» в ветке документа или в Общие → Макеты). Определите место, где должен располагаться штрихкод: чаще всего это верхний или нижний колонтитул области «Шапка», либо отдельная область в конце документа.
Для вставки штрихкода в табличный документ используется объект «Рисунок». В конфигураторе: выделите ячейки, где будет код, затем меню Таблица → Рисунки → Вставить рисунок. В свойствах рисунка задайте имя, например «Штрихкод» — по этому имени вы будете обращаться к нему из кода. Размер рисунка задайте с запасом: для EAN-13 обычно достаточно области шириной около 40–50 мм и высотой 20–30 мм, но точные размеры подбираются под конкретный сканер и принтер.
Важный нюанс: у рисунка в табличном документе есть свойство «Линия» (рамка) и параметры отображения. Уберите рамку, чтобы она не мешала сканированию, и убедитесь, что рисунок не перекрывается текстом соседних ячеек.
- 1Откройте макет печатной формы в конфигураторе
- 2Добавьте рисунок с именем «Штрихкод» в нужную область
- 3В модуле менеджера печати сформируйте картинку штрихкода
- 4Присвойте картинку свойству рисунка в табличном документе
- 5Выведите область и проверьте печатную форму сканером
Сформируйте картинку штрихкода программно
В конфигурациях на базе БСП формирование картинки обычно выполняется функцией из общего модуля, отвечающего за печать штрихкодов. Типовая логика: вы передаёте структуру с параметрами (тип штрихкода, сам код, ширина, высота), а функция возвращает объект «Картинка» или двоичные данные изображения.
Пример вызова в модуле менеджера печати документа:
// Формируем параметры штрихкода
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 40);
ПараметрыШтрихкода.Вставить("Высота", 25);
ПараметрыШтрихкода.Вставить("Штрихкод", "4601234567890");
ПараметрыШтрихкода.Вставить("ТипКода", 1); // EAN-13
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
КартинкаШтрихкода = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
Имя модуля и функции зависит от конфигурации: в одних это «МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода», в других — «ШтрихкодированиеПечатныхФорм» или собственный общий модуль. Найдите поиском по конфигурации слово «ПолучитьКартинкуШтрихкода» или «Barcode» — так вы определите, какой механизм уже используется в вашей базе, и повторите его.
Если готовой функции нет, можно работать с компонентой напрямую: подключить «AddIn.Barcode» через «ПодключитьВнешнююКомпоненту», установить свойства (тип кода, значение, размеры) и получить изображение. Этот путь требует аккуратной обработки ошибок подключения, поэтому без опыта лучше ориентироваться на типовые механизмы конфигурации.
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
Рисунок = ОбластьМакета.Рисунки.Найти("Штрихкод");
Если Рисунок <> Неопределено Тогда
Рисунок.Картинка = КартинкаШтрихкода;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);Вставьте картинку в табличный документ
После получения картинки осталось присвоить её рисунку в области макета до вывода области в табличный документ. Порядок строго такой: ПолучитьОбласть → найти рисунок → присвоить картинку → Вывести область. Если присвоить картинку после вывода области, изменения не попадут в итоговый документ.
Обращение к рисунку выполняется через коллекцию «Рисунки» области: ОбластьМакета.Рисунки.Найти("Штрихкод"). Всегда проверяйте результат на «Неопределено» — если рисунок переименовали в макете, код без проверки упадёт с ошибкой у всех пользователей, а не только у разработчика.
Если штрихкод нужен в каждой строке табличной части (например, этикетки для каждого товара), формируйте картинку внутри цикла по строкам и выводите отдельную область на каждую итерацию. Учтите, что генерация изображения — относительно ресурсоёмкая операция: при сотнях строк печать может замедлиться, поэтому для больших пакетов этикеток лучше использовать специализированные обработки печати.
Выберите тип штрихкода под задачу
Тип кода определяет, какие символы можно закодировать и какой длины может быть значение. Неверный выбор типа — частая причина того, что код не формируется или не читается.
| Тип | Что кодирует | Когда применять |
|---|---|---|
| EAN-13 | 13 цифр | Товарные коды, розничная торговля, маркировка товаров |
| EAN-8 | 8 цифр | Компактные этикетки на мелких товарах |
| Code39 | Цифры, латиница, часть символов | Внутренние коды, номера документов |
| Code128 | Цифры, латиница, расширенный набор | Длинные коды, логистика, складские операции |
| QR-код | Текст, ссылки, структурированные данные | Оплата счетов, ссылки, маркировка «Честный ЗНАК» |
Для номеров документов на печатных формах чаще всего используют Code39 или Code128: они допускают буквы, поэтому префиксы номеров кодируются без преобразований. Для товаров в рознице стандарт — EAN-13, и значение должно строго соответствовать формату, включая контрольную цифру, иначе компонента откажется формировать изображение.
Сравнение вариантов
Подходит, если конфигурация на библиотеке стандартных подсистем: готовая функция, минимум кода. Ограничение — зависимость от версии БСП.
Полный контроль над параметрами изображения. Требует обработки ошибок подключения и установки компоненты на все рабочие места.
Штрихкод выводится текстом специальным шрифтом, без компоненты. Риск: при отсутствии шрифта у пользователя код превращается в обычные символы.
Проверьте результат и исправьте типовые проблемы
После внедрения выведите печатную форму и проверьте три вещи: штрихкод виден на экране, он не обрезан по краям, и сканер его считывает. Экранная проверка не гарантирует читаемость — распечатайте форму на реальном принтере, которым пользуются сотрудники, и протестируйте сканером.
Если сканер не читает код, типичные причины таковы: слишком мелкий размер изображения (уменьшите масштаб печати или увеличьте область рисунка), недостаточные «тихие зоны» — пустые поля слева и справа от кода, и низкое качество печати на старом матричном или термопринтере. Для термопринтеров этикеток убедитесь, что разрешение печати соответствует ширине штрихов.
Отдельная группа ошибок — данные. Если в кодируемом значении есть недопустимые для выбранного типа символы (например, кириллица в EAN-13), компонента вернёт пустую картинку или ошибку. Перед формированием очищайте значение: убирайте пробелы, проверяйте длину и состав символов.
Как проверить результат
Штрихкод виден целиком, без обрезки
Пустая рамка или частично видимый код
Сканер уверенно считывает код с распечатки
Код читается через раз или не читается
Сканер выдаёт именно то значение, что кодировалось
Лишние или потерянные символы в считанном значении
Часто задаваемые вопросы
Можно ли добавить штрихкод без изменения конфигурации?
Частично — через внешнюю печатную форму (механизм «Дополнительные отчеты и обработки» в конфигурациях на БСП). Внешняя обработка печати может содержать собственный макет и код формирования штрихкода, при этом основная конфигурация остаётся на поддержке без изменений.
Почему штрихкод печатается у одних пользователей, а у других нет?
Чаще всего компонента подключается на клиенте, и на части рабочих мест она не зарегистрировалась — например, из-за ограничений прав или антивируса. Решение — перенести формирование картинки на сервер, где окружение контролируется централизованно.
Как вывести QR-код для оплаты счёта?
Та же компонента поддерживает двумерные коды: укажите тип QR и передайте строку платёжных данных в нужном формате. Учтите, что QR требует большей площади рисунка, чем линейный код, — заложите квадратную область в макете.
Штрихкод на экране есть, но на печати смещается. Что делать?
Проверьте масштаб печати и поля страницы в настройках табличного документа, а также свойство рисунка «Размер пропорционально областям». Несовпадение полей принтера с полями макета — частая причина смещения всех элементов формы.
Можно ли закодировать номер документа с префиксом базы?
Да, если выбранный тип кода поддерживает буквы — например, Code39 или Code128. EAN-13 для этого не подходит, так как принимает только цифры; префикс придётся отбрасывать или заменять числовым кодом.
Что важно запомнить
Штрихкод в макете 1С — это рисунок в табличном документе, которому присваивается картинка, сформированная компонентой до вывода области. Выбирайте тип кода под данные, проверяйте читаемость на реальном принтере со сканером и тестируйте изменения на копии базы.