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

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

Как добавить штрихкод в печатные формы 1С

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

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

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

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

Какие типы штрихкодов поддерживает 1С и какой выбрать

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

Для документов чаще всего используют Code128 — он компактный и кодирует буквы, цифры и служебные символы, поэтому подходит для номеров и уникальных идентификаторов документов. Для товаров применяют EAN-13 — стандарт розничной торговли, который считывают кассовые сканеры. QR-код удобен, когда нужно закодировать длинную строку, например ссылку на электронный документ или реквизиты для оплаты.

Сравнение типов штрихкодов

Code128

Для номеров и GUID документов. Компактный, кодирует буквы и цифры. Не подходит для кассовой торговли товарами.

EAN-13

Стандарт для товаров и ценников. Только 13 цифр, строгий формат с контрольной цифрой.

QR-код

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

DataMatrix

Обязателен для маркированных товаров («Честный знак»). Используется в этикетках и УПД с маркировкой.

Практическое правило: если штрихкод будут читать внешние контрагенты или торговое оборудование — берите отраслевой стандарт (EAN-13, DataMatrix). Если код нужен только для внутреннего поиска документа по сканеру — Code128 или QR.

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

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

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

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

Как добавить штрихкод в макет печатной формы

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

Порядок изменения макета
  1. 1
    Откройте конфигуратор и найдите макет печатной формы документа (обычно в менеджере объекта или в общих макетах).
  2. 2
    Добавьте в макет новую именованную область, например «ОбластьШтрихкод», в нужном месте формы.
  3. 3
    Внутри области выделите ячейки под картинку, объедините их и задайте достаточную высоту (для Code128 — обычно 15–20 мм, для QR — квадрат 25–30 мм).
  4. 4
    Создайте в модуле менеджера документа код формирования картинки штрихкода и вывода её в табличный документ.
  5. 5
    Сохраните конфигурацию, обновите базу и проверьте печать на тестовом документе.

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

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

Код формирования штрихкода в модуле печати

В типовых конфигурациях с библиотекой стандартных подсистем картинка формируется функциями общего модуля МенеджерОборудованияВызовСервера или ГенерацияШтрихкода (имя зависит от версии БСП). Типовой вызов выглядит так: передаёте строку данных, тип штрихкода, ширину и высоту — получаете структуру с двоичными данными картинки.

bsl
ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыШтрихкода.Ширина = 200;
ПараметрыШтрихкода.Высота = 100;
ПараметрыШтрихкода.ТипКода = 1; // Code128
ПараметрыШтрихкода.Штрихкод = СтрокаШтрихкода;
Результат = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
Если Результат.Результат Тогда
    Рисунок = ОбластьШтрихкод.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
    Рисунок.Картинка = Новый Картинка(Результат.ДвоичныеДанные);
    Рисунок.Расположить(ОбластьШтрихкод.Область());
КонецЕсли;

Обратите внимание на обработку результата: функция возвращает структуру с признаком успеха. Если компонента не установлена или строка не соответствует формату (например, буквы в EAN-13), картинка не сформируется. Не оставляйте это без обработки — иначе пользователь получит форму с пустым местом без объяснений.

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

Вывод штрихкода в табличный документ: два способа

Первый способ — заранее добавить в макет рисунок с именем (например, «Штрихкод») и в коде просто присвоить ему картинку через Область.Рисунки.Штрихкод.Картинка = .... Это удобно, когда позиция штрихкода фиксирована.

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

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

Проверка результата и типичные ошибки

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

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

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

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

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

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

Код не читается или считывается с пропусками символов

Поля вокруг штрихкода
Норма

Слева и справа от линейного кода есть свободные поля

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

Код упирается в текст или край области

Печать на рабочем принтере
Норма

Штрихи чёткие, без размытия и слипания

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

Линии сливаются, код бледный — повысьте качество печати или увеличьте масштаб

Форма без штрихкода
Норма

При ошибке генерации выводится понятное сообщение

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

Пользователь видит пустое место без пояснений

Типичные ошибки
01
Слишком маленькая область в макете — штрихкод обрезается и не читается сканером.
02
Печать в низком качестве или с масштабированием — тонкие штрихи сливаются, код теряется.
03
Передача в EAN-13 строки с буквами или неверной длиной — компонента возвращает ошибку, а форма выходит с пустым местом.
04
Доработка типового макета вместо внешней печатной формы — изменения теряются при обновлении конфигурации.
05
Формирование картинки на клиенте при серверной печати — компонента не найдена, так как код выполняется на сервере.

Ограничения и альтернативные подходы

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

Первый вариант — шрифтовые штрихкоды: в макет вставляется текст специальным шрифтом (например, для EAN или Code39). Не требует компоненты, работает везде, но чувствителен к масштабированию и подходит не для всех типов кодов. Второй вариант — внешние сервисы генерации картинок, но это создаёт зависимость от интернета и передачу данных третьей стороне, что для внутренних документов обычно неприемлемо.

Маршрут решения

Как выбрать подход

Типовая конфигурация, нужен штрихкод в этикетках или ценникахИспользуйте редактор шаблонов этикеток в пользовательском режиме — без доработок кода
Нужен штрихкод в накладной или счёте, конфигурация типоваяСделайте внешнюю печатную форму с вызовом типовой подсистемы генерации штрихкодов
Конфигурация самописная или снята с поддержкиПодключите компоненту печати штрихкодов и доработайте макет напрямую
Нельзя использовать внешние компоненты (ограничения безопасности)Рассмотрите шрифтовое решение для поддерживаемых типов кодов
Итог

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

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

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

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

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

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

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

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

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

Как вывести QR-код со ссылкой на документ?

Используйте тот же механизм генерации, но укажите тип кода QR (в типовых функциях это отдельное значение типа). В строку данных поместите ссылку или произвольный текст. Область в макете сделайте квадратной, иначе код деформируется и перестанет считываться.

Пропадёт ли доработанный макет при обновлении конфигурации?

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