К статье
Практический материал

Документы и Печать · 10 мин

Как вставить штрихкод в макет 1С

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

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

В типовых конфигурациях (Управление торговлей, ERP, Комплексная автоматизация, Розница) компонента уже встроена, и для вывода штрихкода достаточно нескольких строк кода в модуле менеджера печати. В самописных и старых конфигурациях компоненту иногда приходится подключать отдельно.

Ниже разобраны оба сценария: вставка штрихкода непосредственно в макет табличного документа и программное формирование картинки штрихкода с выводом в область печатной формы. Инструкции применимы к платформе 1С:Предприятие 8.3 в управляемых и обычных формах.

Проверка наличия компоненты печати штрихкодов

Перед изменением макета убедитесь, что в конфигурации есть механизм формирования штрихкодов. В типовых решениях на БСП (Библиотека стандартных подсистем) за это отвечает общий модуль МенеджерОборудованияВызовСервера или подсистема «Печать этикеток и ценников», а сама компонента хранится в макете конфигурации (обычно с именем вида «КомпонентаПечатиШтрихкодов»).

Простая проверка: откройте любой документ, где штрихкод уже печатается (например, этикетку товара), и выведите её на печать. Если штрихкод формируется — компонента работает, и можно переходить к редактированию макета. Если конфигурация самописная, проверьте наличие макета с компонентой в ветке «Общие макеты» дерева конфигурации.

Способ 1: картинка типа «Штрих-код» прямо в макете

Это самый быстрый способ, не требующий программирования, если данные для штрихкода можно передать параметром. Порядок действий:

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

Чтобы подставить в штрихкод данные документа, в модуле формирования печатной формы обратитесь к рисунку области:

ОбластьМакета = Макет.ПолучитьОбласть("Шапка");

ОбластьМакета.Рисунки.Штрихкод.Штрихкод = "4601234567890";

ТабличныйДокумент.Вывести(ОбластьМакета);

Обратите внимание: значение должно соответствовать формату выбранного типа. Для EAN13 это 13 цифр (либо 12, если контрольная цифра рассчитывается автоматически), для Code128 допустимы буквы и цифры. При несоответствии формата штрихкод не выводится или выводится с ошибкой.

Способ 2: программное формирование через компоненту

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

// Параметры: тип штрихкода, значение, ширина, высота и др.

ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();

ПараметрыШтрихкода.Ширина = 200;

ПараметрыШтрихкода.Высота = 100;

ПараметрыШтрихкода.ТипКода = 1; // EAN13

ПараметрыШтрихкода.Штрихкод = "4601234567890";

ПараметрыШтрихкода.ОтображатьТекст = Истина;

Результат = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);

Если Результат.Результат Тогда

Картинка = Результат.Картинка; // двоичные данные изображения

КонецЕсли;

Полученную картинку помещают в макет: либо в заранее добавленный рисунок типа «Картинка», либо вставляют в ячейку табличного документа:

ОбластьМакета.Рисунки.КартинкаШтрихкода.Картинка = Новый Картинка(Результат.ДвоичныеДанные);

В конфигурациях без БСП компоненту подключают напрямую через ПодключитьВнешнююКомпоненту с указанием макета, где хранится компонента, и затем создают объект Новый COMОбъект или объект компоненты для генерации изображения. Точный синтаксис зависит от версии компоненты, поэтому ориентируйтесь на примеры в поставке вашей конфигурации.

1c
ОбластьМакета.Рисунки.Штрихкод.Штрихкод = СокрЛП(Номенклатура.Штрихкод);

Выбор типа штрихкода

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

ТипДанныеТипичное применение
EAN1313 цифрТоварный учёт, розница, маркировка товаров
Code128Цифры и латиницаВнутренние коды, номера документов, серии
QRCodeЛюбые данные, включая кириллицу и ссылкиСсылки, реквизиты, платёжные данные
Code39Цифры, заглавные буквы, часть символовСтарые системы учёта, промышленность
Маршрут решения

Как выбрать действие

Нужен штрихкод товара для розничной продажиИспользуйте EAN13 и берите значение из карточки номенклатуры
Кодируете номер документа с буквамиВыберите Code128 — он поддерживает буквенно-цифровые значения
Нужно закодировать длинный текст или ссылкуИспользуйте QRCode, линейные штрихкоды для этого не подходят

Проверка результата и читаемости сканером

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

Проверьте размеры: у слишком маленького штрихкода сканер не различает узкие полосы. Для EAN13 не рекомендуется делать ширину меньше примерно 25–30 мм. Также оставляйте свободные поля (тихие зоны) слева и справа от кода — текст или рамка вплотную к штрихкоду мешают считыванию.

Контрольные точки

Как проверить результат

Отображение на печатной форме
Норма

Штрихкод виден, полосы чёткие, под кодом при необходимости выведен текст

Тревожный признак

Пустая рамка, крестик или искажённое изображение

Считывание сканером
Норма

Сканер возвращает именно то значение, которое закодировано

Тревожный признак

Сканер молчит, пищит ошибку или возвращает обрезанный код

Формат данных
Норма

Длина и символы соответствуют типу штрихкода (13 цифр для EAN13)

Тревожный признак

Лишние пробелы, буквы в EAN13, неверная контрольная цифра

Типичные ошибки и их устранение

Самая частая проблема — пустое место вместо штрихкода. Причины: не подключена компонента, неверное имя рисунка в коде (обращение идёт к «Штрихкод», а рисунок назван «Рисунок1»), либо значение не соответствует формату. Проверяйте имя рисунка в свойствах макета и журнал регистрации на ошибки формирования печатной формы.

Вторая распространённая ситуация — ошибка «Недопустимое значение штрихкода» при EAN13. Часто в базе штрихкод хранится с пробелами или без контрольной цифры. Очищайте значение функцией СокрЛП и проверяйте длину перед выводом.

Типичные ошибки
01
Обращение к рисунку по неверному имени — область выводится без штрихкода, ошибка не всегда видна пользователю
02
Передача в EAN13 значения с буквами или не той длины — штрихкод не формируется
03
Слишком маленький размер рисунка в макете — сканер не считывает код даже при корректном изображении
04
Изменение типового макета без копии — при обновлении конфигурации доработка будет потеряна

Где размещать доработку: макет, расширение или внешняя печатная форма

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

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

Сравнение вариантов

Правка типового макета

Быстро, но доработка теряется или конфликтует при обновлении; только для нетиповых конфигураций

Внешняя печатная форма (.epf)

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

Расширение конфигурации

Гибкое переопределение макета и кода, совместимо с обновлениями; требует аккуратности при изменении типовых модулей

Итог

Что важно запомнить

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

Частые вопросы

Почему вместо штрихкода выводится пустая рамка?

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

Как вывести QR-код в печатной форме?

Тем же способом: в свойствах рисунка установите тип «Штрих-код» и тип штрихкода QRCode, либо сформируйте изображение программно с типом QR. QR-код допускает кириллицу и длинные строки, но требует достаточного размера для считывания.

Можно ли вставить штрихкод без изменения конфигурации?

Да, через внешнюю печатную форму (.epf), подключённую в «Дополнительных отчетах и обработках», или через расширение конфигурации. Оба способа не требуют снятия конфигурации с поддержки и сохраняются при обновлении.

Штрихкод печатается, но сканер его не читает. Что проверить?

Проверьте размер (не делайте EAN13 уже 25–30 мм), качество печати, наличие свободных полей по бокам кода и соответствие типа штрихкода возможностям сканера — не все сканеры читают QR или двумерные коды.

Как подставить в штрихкод номер документа?

Передайте номер в параметр рисунка: ОбластьМакета.Рисунки.Штрихкод.Штрихкод = "Д" + НомерДокумента;. Поскольку номера часто содержат буквы и дефисы, используйте тип Code128, а не EAN13.

Где взять компоненту печати штрихкодов, если её нет в конфигурации?

Компонента входит в поставку типовых конфигураций и библиотеки подключаемого оборудования (БПО). Возьмите макет компоненты из поставки вашей конфигурации или из БСП — загружать DLL со сторонних сайтов небезопасно.