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