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

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

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

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

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

В типовых конфигурациях на управляемых формах (УТ 11, ERP, «Бухгалтерия 3.0», «Управление нашей фирмой») часть механизмов уже встроена: например, печать этикеток со штрихкодами товаров доступна из коробки. А вот добавить штрихкод в произвольную печатную форму документа обычно требует доработки макета и модуля печати.

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

Какой тип штрихкода вам нужен

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

  • EAN-13 — стандарт для товаров розничной торговли, 13 цифр с контрольным разрядом;
  • Code 128 — универсальный линейный код, позволяет кодировать цифры и буквы, удобен для номеров документов;
  • EAN-8 — сокращённый код для малогабаритных товаров;
  • QR-код и DataMatrix — двумерные коды; DataMatrix обязателен для маркированных товаров («Честный ЗНАК»).

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

Способ 1: типовая печать этикеток без доработок

Если задача — печатать этикетки и ценники со штрихкодами товаров, в типовых конфигурациях ничего дорабатывать не нужно. В УТ 11, ERP и «Рознице» есть обработка «Печать этикеток и ценников». Она открывается из карточки номенклатуры, документа поступления или раздела закупок.

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

Ограничение способа: он покрывает только этикетки и ценники. Добавить штрихкод в произвольную печатную форму документа (счёт, ТОРГ-12, акт) таким путём не получится — понадобится один из следующих вариантов.

Способ 2: шрифт штрихкода в макете

Самый простой способ доработки макета — установить на компьютер шрифт штрихкода (например, свободно распространяемые шрифты Code 128 или EAN-13) и применить его к ячейке макета, где выводится значение. Тогда обычная строка вроде номера документа отобразится полосками.

Действия: установите шрифт в Windows, откройте макет печатной формы в конфигураторе, выделите ячейку с параметром штрихкода и в свойствах укажите этот шрифт. В модуле печати убедитесь, что в параметр передаётся строка в формате, который ожидает шрифт: многие шрифты требуют стартовых и стоповых символов (например, символы «*» по краям для Code 39) или перекодировки каждого символа по таблице.

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

Способ 3: программная генерация картинки штрихкода

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

Общая схема: в модуле менеджера печати создаёте компоненту, задаёте тип кода и значение, получаете картинку (двоичные данные), а затем выводите её в область макета через рисунок табличного документа.

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

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

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

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

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

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

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

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

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

Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);

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

Рисунок.Расположить(ОбластьМакета.Область("R1C1:R5C8"));

КонецЕсли;

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

Порядок действий при программном способе
  1. 1
    Создайте внешнюю печатную форму (шаблон из поставки БСП) или расширение
  2. 2
    Скопируйте типовой макет документа и добавьте пустую область под штрихкод
  3. 3
    В модуле печати сформируйте картинку штрихкода через ГенерацияШтрихкода или Barcode.ocx
  4. 4
    Выведите картинку в область табличного документа
  5. 5
    Подключите форму в справочнике «Дополнительные отчеты и обработки» и проверьте печать
  6. 6
    Отсканируйте распечатанный код сканером и сверьте значение с номером документа

Где взять значение для штрихкода

Картинка — только отображение. Значение, которое кодируется, должно откуда-то браться. Типовые варианты источников:

  • Номер документа — для идентификации накладных и актов сканером; обычно кодируют номер вместе с префиксом базы, чтобы исключить совпадения между филиалами;
  • Регистр сведений «Штрихкоды» — для номенклатуры; в типовых конфигурациях штрихкоды товаров хранятся именно там и генерируются автоматически по кнопке в карточке;
  • Уникальный идентификатор ссылки — когда номер не гарантирует уникальность; GUID кодируют в Code 128 или QR;
  • Строка по шаблону — например, «документ + склад + дата» для внутренней логистики.

Учтите ограничения форматов: EAN-13 принимает только цифры и строго 13 разрядов, Code 39 — ограниченный набор символов в верхнем регистре. Если закодировать кириллицу или лишние символы, компонента либо вернёт ошибку, либо сформирует нечитаемый код.

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

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

Нужны только этикетки и ценники на товарыИспользуйте типовую обработку «Печать этикеток и ценников» без доработок
Нужен штрихкод на одной-двух формах и есть разработчикДелайте внешнюю печатную форму с генерацией картинки
Конфигурация самописная и под вашим контролемМожно доработать макет и модуль печати напрямую в конфигураторе
Нет доступа к конфигуратору и разработчикаОграничьтесь шрифтовым способом на локальном компьютере, понимая его ограничения

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

После доработки обязательно проверьте не только внешний вид, но и читаемость кода. Распечатайте форму на реальном принтере (не только предпросмотр) — на некоторых струйных принтерах при низком качестве печати узкие штрихи сливаются, и сканер код не берёт. Проверьте чтение тем сканером, который реально используется на рабочих местах.

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

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

Сканер читает код с распечатки
Норма

Значение совпадает с номером документа или штрихкодом товара

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

Сканер молчит или возвращает искажённую строку

Отступы вокруг кода
Норма

Слева и справа есть свободные поля (тихая зона)

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

Код упирается в текст или рамку — сканер не распознаёт

Выгрузка в PDF
Норма

Код отображается картинкой и читается с экрана

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

Вместо кода обычный текст — использован шрифтовой способ

Контрольная цифра EAN-13
Норма

Сканер принимает код без ошибки контрольной суммы

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

Код не читается — пересчитайте 13-й разряд

Типичные ошибки
01
Кодирование кириллицы или спецсимволов в EAN/Code 39 — код не формируется или не читается
02
Отсутствие тихой зоны вокруг штрихкода — сканер не распознаёт границы
03
Слишком мелкий размер картинки в макете — штрихи сливаются при печати
04
Доработка типового макета вместо внешней формы — изменения теряются при обновлении
05
Шрифтовой штрихкод без установки шрифта на всех рабочих местах — у коллег печатается обычный текст
06
Кодирование только номера без префикса — совпадения номеров между базами и филиалами

Ограничения и когда привлекать специалиста

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

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

Если штрихкод нужен только для внутреннего поиска документов сканером, не обязательно внедрять сложную схему: достаточно Code 128 с номером документа и настроить в 1С обработку сканирования, которая открывает документ по этому номеру. Такая связка закрывает большинство складских сценариев без маркировки.
ПЗ
Практическое замечание

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

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

Да, двумя путями. Первый — типовая обработка «Печать этикеток и ценников» для товаров. Второй — подключение готовой внешней печатной формы через «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Изменить же произвольный типовой макет без конфигуратора нельзя.

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

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

Какой тип штрихкода выбрать для номера документа?

Обычно Code 128: он кодирует цифры и латиницу, компактен и поддерживается всеми сканерами. EAN-13 для этой задачи не подходит — он принимает только 13 цифр и предназначен для товаров.

Сохранится ли доработка после обновления конфигурации?

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

Как вывести QR-код или DataMatrix вместо линейного штрихкода?

Тем же программным способом через картинку: в параметрах генерации указывается тип двумерного кода. Для DataMatrix маркированных товаров в типовых конфигурациях есть готовые механизмы обмена с «Честным ЗНАКом» — дорабатывать их вручную обычно не требуется.

Штрихкод-шрифт отображается у меня, а у коллеги — обычный текст. Что делать?

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

Итог

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

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