Как сделать и напечатать QR-код в программе 1С
Содержание
Частая ошибка новичка: попытаться напечатать QR-код тем же способом, что и обычный линейный штрихкод, — через специальный шрифт. Для одномерных кодов (EAN-13, Code 128) шрифт действительно работает, а вот QR это двумерная матрица, и шрифтом её не собрать. В 1С 8.3 QR-код всегда рисуется как картинка.
Короткий путь такой: генерацию и печать QR-кода в 1С обеспечивает штатная компонента печати штрихкодов. Вы добавляете в макет печатной формы рисунок типа «Штрихкод», выбираете тип кода QR и передаёте в него строку с данными. Компонента ставится вместе с платформой и библиотекой стандартных подсистем, никаких сторонних сервисов не нужно.
Способов по сути два: вставить QR в макет печатной формы (быстро, подходит для своих и доработанных форм) или подключить готовую форму с кодом через расширение либо внешнюю обработку (безопасно для типовых конфигураций, не слетает при обновлении). Оба опираются на одну компоненту, поэтому качество кода одинаковое — различается только способ доставки его в форму.
Чем 1С рисует штрихкоды и QR: компонента платформы
Двумерные коды в 1С формирует компонента печати штрихкода — внешняя компонента, которая поставляется вместе с платформой и регистрируется библиотекой стандартных подсистем (БСП) автоматически. Отдельно скачивать её с чужих сайтов не нужно.
Компонента умеет строить не только QR. В одном механизме доступны:
- 📦 линейные коды: EAN-13, EAN-8, Code 128, Code 39;
- 🔲 двумерные: QR Code, PDF417, DataMatrix;
- 💳 платёжный QR по ГОСТ Р 56042 — для квитанций и счетов на оплату.
Важный нюанс: компонента должна быть установлена на том компьютере, который реально рисует картинку. При печати из тонкого клиента это рабочее место пользователя, при фоновом формировании (рассылка, обмен, печать по расписанию) — сервер. Если на сервере компоненты нет, QR в фоновых заданиях просто не нарисуется, хотя у пользователя на экране всё печатается.
Проверить работоспособность проще всего так: сформируйте любую печатную форму с кодом на экране. Если на экране QR появился, а на печати или в фоне — нет, значит компонента есть только на клиенте. В типовых на БСП регистрация выполняется автоматически при первом обращении; отдельно ставить её руками обычно не требуется.
Почему шрифт не подходит для QR и где он всё-таки нужен
Шрифты для штрихкодов — это набор начертаний, где каждому символу соответствует узор из чёрных и белых полос. Такой приём годится только для линейных кодов: строку «4601234567890» шрифт превращает в полоски EAN-13.
QR-код устроен иначе. Это матрица из модулей с поисковыми метками по углам, маской и блоками коррекции ошибок. Разложить её на последовательность символов одной строки нельзя, поэтому готового шрифта для полноценного QR не существует, а то, что иногда выдают за «QR-шрифт», на деле собирает лишь мелкие фрагменты и сканером не читается.
Вывод простой:
- 🔤 нужен обычный линейный штрихкод в ценнике или акте — можно обойтись шрифтом;
- 🔲 нужен QR — только картинка через компоненту печати штрихкода.
Если в вашей форме исторически используются barcode-шрифты для линейных кодов, их можно оставить. Для добавления QR это не помеха — просто рядом ставится отдельный элемент-рисунок.
Как добавить QR-код в печатную форму через макет
Самый прозрачный способ — разместить QR прямо в макете печатной формы. Делается это в конфигураторе или в режиме «Расширение», порядок одинаковый.
- Откройте нужный макет табличного документа (
Макетпечатной формы документа). - Встаньте в ячейку или область, где должен быть код, и вставьте объект-рисунок.
- В свойствах рисунка задайте тип рисунка —
Штрихкод. - В параметрах штрихкода выберите тип кода
QR(QR Code). - В поле значения штрихкода передайте данные: либо фиксированный текст, либо имя параметра макета, который заполняется из кода при выводе области.
Данные в QR передаются строкой. Для русского текста ставьте кодировку UTF-8 — иначе телефон прочитает кракозябры. Уровень коррекции ошибок (L, M, Q, H) оставляйте средним (M); высокий (H) переживёт потёртости, но делает рисунок плотнее и требует большего физического размера.
Чтобы код заполнялся не фиксированным значением, а данными документа, в значении штрихкода указывают параметр макета (например, с именем вроде ДанныеQR), а в процедуре печати присваивают этому параметру нужную строку перед выводом области в табличный документ. Так одна форма печатает разный QR для каждого документа. Прежде чем отправлять форму на принтер, выведите её на экран и наведите телефон: убедитесь, что код читается и внутри именно те данные, которые нужны.
Если формируете область программно, принцип тот же: вы получаете область макета, а у размещённого в ней рисунка заполняете значение кодируемой строки перед выводом в табличный документ. Конкретные имена свойств рисунка зависят от версии платформы — ориентируйтесь на подсказку синтакс-помощника по объекту рисунка табличного документа, не изобретая названий.
Перед правкой типового макета в конфигураторе снимите конфигурацию с поддержки аккуратно или, лучше, используйте расширение (следующий раздел). Прямая правка типовой формы усложнит будущие обновления.
Как подключить QR расширением, не трогая конфигурацию
Менять типовую печатную форму напрямую не стоит: обновление затрёт правки или встанет с конфликтом. Два штатных пути добавить QR без вмешательства в основную конфигурацию.
Расширение конфигурации
. Механизм доступен с платформы 8.3.6 и выше. Вы создаёте расширение, заимствуете в него нужную печатную форму или добавляете свою, вставляете рисунок с QR. Подключается расширение в конфигураторе через Конфигурация → Расширения конфигурации, в пользовательском режиме — через Администрирование → Печатные формы, отчёты и обработки. После загрузки .cfe выполняется отдельный шаг — обновление конфигурации
базы данных.
Внешняя печатная форма. Если менять конфигурацию нельзя совсем, подойдёт внешняя обработка с печатной формой. В «1С:Бухгалтерии 3.0» и других типовых на БСП она подключается в разделе Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Предварительно в настройках этого раздела включается флажок использования дополнительных обработок.
Оба варианта используют одну и ту же компоненту печати штрихкода, так что результат по читаемости кода не отличается. Расширение удобнее для правки существующей формы, внешняя обработка — когда нужна полностью своя форма или печать по кнопке из списка.
При подключении внешней обработки система спросит профиль безопасного режима. Для печати QR хватает обычного профиля — обработка только формирует табличный документ и не лезет в файловую систему или в интернет. Привязать внешнюю печатную форму можно сразу к нескольким видам документов: при регистрации в списке дополнительных обработок отмечаете, для каких объектов она доступна и под каким названием команда появится в меню Печать.
Платёжный QR-код по ГОСТ: что кодировать
Отдельная и частая задача — QR на счёте или квитанции, который клиент сканирует банковским приложением и платит без ручного ввода реквизитов. Это не произвольный текст, а формат по ГОСТ Р 56042.
Строка начинается со служебного префикса ST00012 и содержит реквизиты через разделитель — вертикальную черту:
Name— наименование получателя;PersonalAcc— расчётный счёт;BankName,BIC,CorrespAcc— банк, БИК, корсчёт;PayeeINN— ИНН получателя;Sum— сумма в копейках;Purpose— назначение платежа.
Сумму указывают в копейках без разделителей: 1 500,00 ₽ записывается как 150000. Обязательные реквизиты — наименование получателя, расчётный счёт, БИК и банк; остальные поля дополняют строку, если нужны.
Если собираете такой QR сами, собирайте строку строго по стандарту: банковское приложение разбирает именно эти поля. Пустые или переставленные обязательные реквизиты приложение проигнорирует, и платёж не подставится. В типовых конфигурациях платёжный QR для счёта на оплату, как правило, уже встроен — ищите в настройках печатной формы счёта флажок добавления кода оплаты, прежде чем городить своё решение.
Печать QR на этикет-принтере и термопринтере
Этикет-принтер (Zebra, Атол, Honeywell и аналоги) печатает QR как обычную растровую картинку из табличного документа — отдельный драйвер под QR не нужен. Но у маленьких этикеток свои правила.
| Параметр | Рекомендация |
|---|---|
| Разрешение печати | 203 dpi хватает для бытовых задач, 300 dpi — для мелких этикеток и плотных кодов |
| Размер модуля | не мельче 4–5 точек принтера на модуль, иначе сканер не возьмёт |
| Пропорции | строго квадрат — не растягивайте QR по ширине или высоте |
| Тихая зона | пустое поле вокруг кода не меньше 4 модулей со всех сторон |
| Запас данных | чем короче кодируемая строка, тем крупнее модули и надёжнее чтение |
Печатайте на термопринтере в режиме графики, а не текста: если форма уходит на принтер как набор символов, картинка QR не передаётся. Для термотрансферной печати следите за состоянием риббона и печатающей головки — блёклый код с пропусками сканер не прочитает.
Практический ориентир по размеру: для кода с коротким содержимым (ссылка, идентификатор) сторона около 2 см считывается уверенно с телефона на расстоянии вытянутой руки. Чем больше данных внутри и чем хуже сканер, тем крупнее должен быть код. Размещайте QR так, чтобы он не попадал на линию отрыва этикетки и на перфорацию, — повреждённые модули в зоне данных убивают читаемость, даже если углы с метками целы.
На узких этикетах (58 мм и меньше) не пытайтесь уместить длинную ссылку. Сократите URL или закодируйте короткий идентификатор — так модули останутся крупными.
Почему QR-код не сканируется: разбор причин
Если код напечатался, но телефон его не берёт, причина почти всегда в размере, контрасте или данных. Разберите по симптому.
Отдельно про платёжный QR: если банковское приложение открывает код, но не подставляет реквизиты, значит строка собрана не по ГОСТ Р 56042 — проверьте префикс ST00012 и состав полей.
Частые вопросы
Нужно ли докупать лицензию или модуль для QR-кодов?
Можно ли сделать QR в базовой версии 1С?
Какой максимальный объём данных помещается в один QR?
Чем отличается QR от DataMatrix, который требуют для маркировки?
Как добавить QR в типовой счёт, ничего не ломая при обновлении?
Источники
- ГОСТ Р ИСО/МЭК 18004 «Технология автоматической идентификации. Кодирование штриховое. Спецификация символики QR Code»
- ГОСТ Р 56042-2014 «Стандарты финансовых операций. Двумерные символы штрихового кода для осуществления платежей физических лиц»