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