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

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

Как печатать QR-код в 1С: полное руководство

Пошаговая инструкция по печати QR-кодов в 1С: штатные механизмы, внешние компоненты, вывод в макеты и чеки, проверка считываемости и типичные ошибки.

QR-коды в 1С используются для оплаты счетов, маркировки товаров, этикеток на складе, чеков и быстрого доступа к документам. Способ вывода зависит от версии платформы, конфигурации и задачи: где-то достаточно штатного механизма, а где-то потребуется внешняя компонента или генерация через API. Ниже разобраны все рабочие варианты с конкретными действиями.

Ключевой момент: 1С сама по себе не «рисует» QR-код как картинку в пользовательском режиме — изображение формируется программно и вставляется в табличный документ (макет печатной формы), этикетку или чек. Поэтому любая инструкция сводится к трём шагам: получить картинку QR-кода, поместить её в макет, вывести на печать.

Когда штатный механизм уже работает

В типовых конфигурациях «1С:Бухгалтерия», «1С:Управление торговлей» и других решениях на БСП (библиотека стандартных подсистем) печать QR-кода для оплаты по реквизитам организации встроена. При печати счёта на оплату внизу документа выводится QR-код по стандарту ГОСТ Р 56042-2014, который банковские приложения распознают как платёжное поручение.

Чтобы QR-код появился на счёте, проверьте настройки организации: должны быть заполнены ИНН, КПП, расчётный счёт, БИК банка и корреспондентский счёт. Если хотя бы одно поле пустое, код либо не сформируется, либо банковское приложение не сможет его прочитать как платёж.

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

Способ 1. Внешняя компонента генерации QR-кодов

Для вывода произвольных данных (ссылок, артикулов, серийных номеров) применяется внешняя компонента, реализующая интерфейс Native API. Известный вариант — компонента из поставки «1С:Библиотека подключаемого оборудования» или сторонние компоненты, распространяемые для платформы 1С.

Порядок подключения: компоненту упаковывают в ZIP-архив по правилам поставки внешних компонент, загружают в информационную базу через механизм «Подключаемые компоненты» (в БСП) или подключают программно методом ПодключитьВнешнююКомпоненту(). После подключения вызов метода генерации возвращает картинку в формате PNG.

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

bsl
ПодключитьВнешнююКомпоненту("ОбщийМакет.QRCodeComponent", "QR", ТипВнешнейКомпоненты.Native);
Генератор = Новый("AddIn.QR.QRCodeExtension");
ДанныеКартинки = Генератор.GenerateQRCode(СтрокаДанных, 1, 200);

Способ 2. Генерация через веб-сервис или API

Если установка компоненты невозможна (например, сервер под Linux без подготовленной сборки компоненты), картинку можно получить из внешнего HTTP-сервиса генерации QR-кодов. Из 1С выполняется HTTP-запрос, возвращающий PNG-изображение, которое затем вставляется в макет.

У этого подхода два существенных ограничения. Первое — зависимость от доступности внешнего сервиса: если он недоступен, печать документов остановится. Второе — безопасность: передавать в сторонний сервис персональные данные, суммы и реквизиты контрагентов недопустимо, так как данные уходят третьей стороне.

Вставка QR-кода в макет печатной формы

Независимо от способа генерации, картинка выводится через табличный документ. В макете создаётся область с параметром типа «Картинка» или рисунок с именем, которому перед выводом присваивается объект Картинка, созданный из двоичных данных.

Типовая последовательность в коде: получить макет, получить область с QR-кодом, присвоить рисунку области сгенерированную картинку, вывести область в результирующий табличный документ. Если картинка не выводится — чаще всего причина в том, что рисунок в макете имеет тип «Узор» или не заполнено имя области.

Для этикеток и ценников в конфигурациях с подсистемой печати этикеток (например, в рознице и торговле) QR-код добавляется через редактор шаблона этикетки: в шаблон перетаскивается поле типа «Штрихкод», и в его параметрах выбирается тип QRCode. Это самый простой путь без программирования.

Порядок действий для этикетки
  1. 1
    Откройте шаблон этикетки в редакторе шаблонов
  2. 2
    Добавьте поле типа Штрихкод и укажите тип QRCode
  3. 3
    Привяжите к полю данные: артикул, код номенклатуры или произвольную строку
  4. 4
    Сохраните шаблон и выполните тестовую печать
  5. 5
    Сканируйте результат камерой телефона и сверьте содержимое

Печать QR-кода на чеке и маркировка

На кассовых чеках QR-коды печатает сам фискальный регистратор по команде драйвера — 1С лишь передаёт данные. Это используется для маркированных товаров (код Data Matrix передаётся в составе позиции) и для произвольных QR-кодов в нефискальной части чека, например ссылки на акцию.

Для вывода произвольного QR-кода на чек в типовых конфигурациях используется механизм шаблонов чеков ККТ: в шаблон добавляется поле «Штрихкод» с типом QR, и драйвер ККТ отправляет команду печати на устройство. Учтите, что не все модели касс и версии драйверов поддерживают печать QR в нефискальной части — проверяйте документацию на вашу модель ККТ.

Коды маркировки (Data Matrix) обрабатываются отдельно: они передаются в кассу как реквизит позиции, и их корректность контролируется системой «Честный ЗНАК». Самостоятельно формировать такие коды нельзя — они запрашиваются из системы маркировки.

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

После настройки всегда проверяйте печатную форму реальным сканированием, а не только визуально. Код может отображаться, но не считываться из-за недостаточного размера, низкого качества печати или обрезки краёв.

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

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

Сканирование камерой телефона
Норма

Код распознаётся с первого раза, содержимое совпадает с ожидаемым

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

Код не распознаётся или содержимое обрезано

Размер кода на бумаге
Норма

Сторона кода не меньше 2 см для стандартного содержимого

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

Код мельче 1,5 см и читается нестабильно

Поля вокруг кода
Норма

Вокруг кода есть свободная белая рамка (тихая зона)

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

Код вплотную прижат к тексту или линиям таблицы

Качество печати
Норма

Модули кода чёткие, без размытия и пропусков

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

Бледная печать, полосы от износа картриджа

Типичные ошибки
01
Пустые реквизиты организации — платёжный QR формируется некорректно, банк его отклоняет
02
Слишком длинная строка данных при маленьком размере картинки — код становится плотным и не читается
03
Рисунок в макете не связан с данными — область выводится пустой, картинка теряется
04
Генерация через внешний сервис без обработки ошибок — при недоступности сервиса печать документа падает с ошибкой
05
Печать на термопринтере этикеток с низким разрешением — мелкие модули сливаются, код не сканируется

Отдельная частая проблема — кодировка. Если в QR-коде кириллица, а сканер показывает «кракозябры», причина в несоответствии кодировки при генерации. Убедитесь, что строка данных формируется в UTF-8 и компонента это поддерживает.

Итог

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

Платёжный QR на счетах работает штатно при заполненных реквизитах. Произвольные коды выводятся компонентой или внешним сервисом через картинку в макете. На чеках код печатает ККТ по команде драйвера. Результат всегда проверяйте реальным сканированием.

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

Можно ли вывести QR-код без программирования?

Да, в двух случаях: платёжный QR на счёте формируется автоматически при заполненных реквизитах, а в шаблонах этикеток и ценников QR добавляется через визуальный редактор как поле типа «Штрихкод». Для произвольных данных в произвольной печатной форме без доработки не обойтись.

Почему QR-код на счёте не читается банковским приложением?

Чаще всего не заполнены или заполнены с ошибкой реквизиты: ИНН, расчётный счёт, БИК, корсчёт. Также проверьте, что сумма и назначение платежа присутствуют в документе. Отсканируйте код обычным сканером — если текст читается, но банк его не принимает, проблема в структуре платёжных данных.

Какой размер QR-кода нужен для надёжного сканирования?

Минимальный практический размер — около 2 см по стороне при умеренном объёме данных. Чем длиннее строка, тем плотнее код и тем крупнее должна быть картинка. Для длинных ссылок увеличивайте размер или сокращайте строку.

Работает ли генерация QR-кодов на сервере 1С под Linux?

Да, если внешняя компонента собрана для Linux и подключена на сервере. При генерации на сервере убедитесь, что вызов выполняется в серверном контексте, а компонента установлена именно там, а не только на клиентском компьютере разработчика.

Можно ли печатать QR-код на обычном офисном принтере?

Да, для документов достаточно лазерного или струйного принтера с разрешением от 300 dpi. Проблемы возникают в основном с термопринтерами этикеток при мелких кодах и с бледной печатью при изношенном картридже.

Чем QR-код отличается от Data Matrix в 1С?

Это разные стандарты двумерных кодов. QR используется для ссылок, оплаты и произвольных данных. Data Matrix применяется в маркировке «Честный ЗНАК» и формируется только через систему маркировки — самостоятельно генерировать такие коды для товаров нельзя.