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

Отчеты и Аналитика · 10 мин

Как вывести штрих-код в отчет 1С

Как вывести штрих-код в отчет 1С: подключение компоненты печати, настройка макета, вывод EAN-13 в СКД и табличный документ. Примеры кода и типичные ошибки.

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

Главное, что нужно понять сразу: платформа 1С не рисует штрих-код сама по себе. Картинку формирует внешняя компонента «1С:Библиотека печати штрих-кодов» (она входит в состав типовых конфигураций и БСП) либо сторонняя ActiveX-компонента. Если компонента не установлена или не подключена, вместо штрих-кода вы получите пустое место или ошибку.

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

Как устроен вывод штрих-кода в 1С

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

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

Тип штрих-кода задается параметром: EAN-8, EAN-13, Code39, Code128, QR-код и другие. От типа зависят допустимые символы и длина строки. Например, EAN-13 принимает только цифры строго определенной длины, а QR-код — произвольный текст.

Способ 1. Штрих-код в макете табличного документа

Самый простой вариант для печатных форм документов — вставить штрих-код прямо в макет. Откройте макет табличного документа в конфигураторе, выделите ячейку нужной области и в меню «Таблица — Рисунки» добавьте объект с типом «Штрих-код» (в новых версиях платформа поддерживает такой тип рисунка при наличии компоненты).

У рисунка задаются свойства: тип штрих-кода, значение (можно указать параметр макета, например [ШтрихКод]), ширина полос, отображение контрольного символа и подписи. Если значение задано параметром, при выводе области передайте его: Область.Параметры.ШтрихКод = "4601234567890";

Проверьте результат, сформировав печатную форму из режима предприятия. Если вместо штрих-кода пустая рамка — компонента на клиентском компьютере не установлена. Если рамка есть, но сканер не читает код — увеличьте размер рисунка или смените тип на более «читаемый» (например, Code128 вместо сжатого EAN).

Способ 2. Программное формирование картинки штрих-кода

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

ПараметрыШтрихкода = Новый Структура;

ПараметрыШтрихкода.Вставить("Ширина", 200);

ПараметрыШтрихкода.Вставить("Высота", 100);

ПараметрыШтрихкода.Вставить("Штрихкод", "4601234567890");

ПараметрыШтрихкода.Вставить("ТипКода", 1); // EAN-13

ДанныеКартинки = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

Точные имена методов зависят от версии БСП — в одних релизах это ПолучитьДанныеQRКода, в других — функции общего модуля работы с штрих-кодами. Откройте в конфигураторе общие модули с подсистемой «Штрихкоды» или «Оборудование» и найдите функцию, возвращающую двоичные данные картинки.

Полученные двоичные данные присваиваются рисунку табличного документа: Рисунок.Картинка = Новый Картинка(ДанныеКартинки); — либо реквизиту формы типа «Картинка» для отображения на экране.

Порядок действий
  1. 1
    Убедитесь, что в конфигурации есть подсистема печати штрих-кодов (БСП) или установлена компонента
  2. 2
    Определите тип штрих-кода и источник данных (реквизит номенклатуры, номер документа)
  3. 3
    Добавьте рисунок штрих-кода в макет или сформируйте картинку программно
  4. 4
    Передайте значение штрих-кода при выводе области
  5. 5
    Сформируйте форму и проверьте сканером читаемость кода

Способ 3. Штрих-код в отчете на СКД

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

Практический прием — формировать отчет в табличный документ, затем обойти ячейки колонки со штрих-кодом и подставить в них рисунки программно. Для этого результат СКД выводится через ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент, после чего документ дорабатывается в цикле.

Альтернатива без кода — вывести в отчет не графический штрих-код, а его строковое значение шрифтом штрих-кода (например, установленным в систему шрифтом EAN-13 или Code39). Такой шрифт устанавливается на компьютер, в свойствах поля макета СКД выбирается этот шрифт. Минус: для EAN-13 нужна корректная контрольная цифра, а для Code39 — обрамляющие символы «*», иначе сканер код не прочитает.

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

Рисунок штрих-кода в макете

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

Программное формирование картинки

Гибкий вариант для отчетов и динамических форм; требует доработки кода и наличия БСП или компоненты

Шрифт штрих-кода

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

Проверка результата и требования к данным

Перед выводом убедитесь, что значение соответствует типу штрих-кода. Для EAN-13 строка должна содержать 12 или 13 цифр; контрольная цифра рассчитывается по стандартному алгоритму, и многие компоненты проверяют ее автоматически. Для Code39 допустимы цифры, заглавные латинские буквы и часть спецсимволов.

После формирования формы проверьте читаемость реальным сканером, а не только визуально. Распространенная ситуация: штрих-код выглядит нормально, но слишком мал — сканер его не берет. Минимальная ширина зависит от типа кода и разрешения печати; ориентируйтесь на ширину не менее 25–30 мм для EAN-13 на обычном принтере.

Также проверьте печать на целевом принтере: на термопринтере этикеток мелкий штрих-код может «плыть», поэтому размер и тип кода подбирают под конкретное оборудование.

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

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

Отображение в форме
Норма

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

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

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

Сканирование
Норма

Сканер считывает код с первого раза

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

Сканер молчит или читает нестабильно

Данные
Норма

Считанное значение совпадает с исходной строкой

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

Лишние или потерянные символы

Печать
Норма

На бумаге код читается так же, как на экране

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

На печати полосы размыты или слиплись

Типичные ошибки и ограничения

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

Вторая частая ошибка — неверный формат данных: буквы в EAN-13, кириллица в Code39, отсутствие контрольной цифры. Компонента в таких случаях либо возвращает пустую картинку, либо рисует некорректный код.

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

Типичные ошибки
01
Компонента не установлена на клиенте — вместо штрих-кода пустое место
02
Буквы или кириллица в EAN-13 — компонента возвращает пустую картинку
03
Слишком маленький размер рисунка — сканер не читает код
04
Масштабирование при печати искажает пропорции полос
05
Шрифт штрих-кода без контрольной цифры или символов * — код визуально есть, но не сканируется

Когда обращаться к разработчику

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

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

Итог

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

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

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

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

Наиболее вероятная причина — не установлена или не подключена компонента печати штрих-кодов на компьютере, где формируется отчет. Также проверьте, что значение не пустое и соответствует типу кода: при недопустимых символах компонента может вернуть пустую картинку без сообщения об ошибке.

Можно ли вывести QR-код тем же способом?

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

Как вывести штрих-коды для списка товаров одним отчетом?

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

Работает ли штрих-код через веб-клиент?

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

Сканер не читает распечатанный код, хотя на экране он есть. Что делать?

Увеличьте ширину рисунка, отключите масштабирование при печати и проверьте качество печати — размытые полосы на струйном принтере частая причина. Для этикеток используйте термопринтер и подбирайте тип кода под его разрешение.