Как сделать и напечатать QR-код в программе 1С

· 9 мин

Содержание

Частая ошибка новичка: попытаться напечатать 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
Выполнено: 0 / 5

Почему шрифт не подходит для QR и где он всё-таки нужен

Шрифты для штрихкодов — это набор начертаний, где каждому символу соответствует узор из чёрных и белых полос. Такой приём годится только для линейных кодов: строку «4601234567890» шрифт превращает в полоски EAN-13.

QR-код устроен иначе. Это матрица из модулей с поисковыми метками по углам, маской и блоками коррекции ошибок. Разложить её на последовательность символов одной строки нельзя, поэтому готового шрифта для полноценного QR не существует, а то, что иногда выдают за «QR-шрифт», на деле собирает лишь мелкие фрагменты и сканером не читается.

Вывод простой:

  • 🔤 нужен обычный линейный штрихкод в ценнике или акте — можно обойтись шрифтом;
  • 🔲 нужен QR — только картинка через компоненту печати штрихкода.

Если в вашей форме исторически используются barcode-шрифты для линейных кодов, их можно оставить. Для добавления QR это не помеха — просто рядом ставится отдельный элемент-рисунок.

Как добавить QR-код в печатную форму через макет

Самый прозрачный способ — разместить QR прямо в макете печатной формы. Делается это в конфигураторе или в режиме «Расширение», порядок одинаковый.

  1. Откройте нужный макет табличного документа (Макет печатной формы документа).
  2. Встаньте в ячейку или область, где должен быть код, и вставьте объект-рисунок.
  3. В свойствах рисунка задайте тип рисунка — Штрихкод.
  4. В параметрах штрихкода выберите тип кода QR (QR Code).
  5. В поле значения штрихкода передайте данные: либо фиксированный текст, либо имя параметра макета, который заполняется из кода при выводе области.

Данные в 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 не требуется.
Можно ли сделать QR в базовой версии 1С?
Генерация опирается на штатную компоненту, а не на редакцию лицензии. Ограничения базовой версии касаются числа пользователей и доработки конфигурации, а не самого штрихкодирования. Возможность зависит от конкретной конфигурации и её печатных форм.
Какой максимальный объём данных помещается в один QR?
Стандарт допускает несколько тысяч символов, но на практике длинные строки дают плотную матрицу, которую сложно напечатать и считать мелко. Для ссылок и реквизитов держитесь нескольких десятков–сотен символов.
Чем отличается QR от DataMatrix, который требуют для маркировки?
Это разные символики. Для системы «Честный знак» нужен код DataMatrix с кодом маркировки, а не QR. QR применяют для платежей, ссылок и справочной информации.
Как добавить QR в типовой счёт, ничего не ломая при обновлении?
Через расширение конфигурации или внешнюю печатную форму — тогда правки не затираются при обновлении типовой конфигурации.

Источники

  • ГОСТ Р ИСО/МЭК 18004 «Технология автоматической идентификации. Кодирование штриховое. Спецификация символики QR Code»
  • ГОСТ Р 56042-2014 «Стандарты финансовых операций. Двумерные символы штрихового кода для осуществления платежей физических лиц»