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