QR-код в 1С: откуда он берётся в печатных формах и в коде

· 9 мин

Содержание

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

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

Где QR-код формируется в 1С без программирования

Самый частый случай — счёт покупателю в «1С:Бухгалтерии 8». При печати счёта можно добавить платёжный QR по банковскому стандарту: клиент наводит камеру, реквизиты подставляются в приложение банка, остаётся подтвердить перевод.

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

Второй случай — кассовый чек. Требование печатать QR на чеке закреплено в законе о ККТ. Этот код ведёт на сервис ФНС для проверки чека, его формирует касса и фискальный накопитель, а не конфигурация 1С. В «1С:Рознице» и «1С:Управлении нашей фирмой» он появляется автоматически при пробитии чека.

В QR чека зашиты дата и время продажи, сумма, номер фискального накопителя и признак расчёта. Покупатель наводит приложение «Проверка чека ФНС» и видит, легальна ли продажа. Если касса настроена верно, от бухгалтера тут ничего не требуется — код формирует связка «1С + фискальный регистратор».

Третий случай — документы прослеживаемости и платёжные квитанции ЖКХ (форма ПД-4, извещение). Здесь QR тоже формирует типовая печатная форма по готовому шаблону.

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

Как платформа 1С рисует QR в печатной форме

Техническая основа одна для всех штрихкодов — внешняя компонента печати штрихкодов, которая поставляется в составе «Библиотеки стандартных подсистем» (БСП). Компонента принимает строку данных и параметры (тип кода, размер) и возвращает готовую картинку. Платформа сама подключает её при формировании печатной формы.

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

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

Главное отличие от обычной картинки: само изображение не хранится в макете. Оно собирается на лету из данных конкретного документа, поэтому один макет печатает разные QR для разных накладных.

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

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

Минимальный пример (встроенный язык 1С):

Генератор = Обработки.ГенераторШтрихкода.Создать();

Параметры = Новый Структура;
Параметры.Вставить("Штрихкод", "https://example.com/doc/123");
Параметры.Вставить("Ширина",  100);
Параметры.Вставить("Высота",  100);
Параметры.Вставить("КодСимвологии", 99); // QR-код
Параметры.Вставить("УровеньКоррекцииОшибок", 1);

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

Если Результат.ШтрихкодСформирован Тогда
    КартинкаQR = Результат.Картинка;
КонецЕсли;

Дальше картинку выводят в макет: ОбластьМакета.Рисунки.QR.Картинка = КартинкаQR;.

Точный набор значений КодСимвологии и имена ключей структуры отличаются между версиями БСП. Перед использованием сверьтесь с описанием модуля ГенераторШтрихкода в вашей конфигурации — не копируйте числовой код вслепую.

Что кодировать в QR — решаете вы. Частые сценарии:

  • 🔗 ссылка на документ, карточку товара или форму на сайте;
  • 📄 текстовые реквизиты (номер и дата документа, сумма) для быстрого ввода;
  • 🧾 платёжная строка по банковскому стандарту;
  • 📇 контакт в формате vCard для визиток и бейджей.

Строку платёжного QR вручную собирать не надо — для счетов её формирует типовой механизм. А вот под произвольную ссылку генератор подходит идеально.

Пример контакта в формате vCard — такой QR при наведении камеры предложит сохранить визитку в телефон:

Строка = "BEGIN:VCARD" + Символы.ПС
    + "N:Иванов;Пётр" + Символы.ПС
    + "TEL:+70000000000" + Символы.ПС
    + "EMAIL:petr@example.com" + Символы.ПС
    + "END:VCARD";
Параметры.Вставить("Штрихкод", Строка);

Вызывать генератор правильнее в модуле печати документа (команда печати или серверная процедура формирования табличного документа), а не в форме списка. Так один код отработает и при печати пачкой, и при предпросмотре. Результат генерации — объект типа Картинка; его можно и выводить в макет, и сохранять во временное хранилище, и показывать в поле формы.

Если Результат.ШтрихкодСформирован вернул Ложь, картинку не выводите: обычно это значит, что строка пустая, слишком длинная или внешняя компонента не подключилась. Логируйте такой случай, чтобы не печатать пустой прямоугольник молча.

QR в печатных формах: вывод в макет и типичные промахи

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

Проверка перед выводом QR в печать
Выполнено: 0 / 5

Разберём, что идёт не так чаще всего.

Поле есть, картинки нет. Обычно забыли присвоить Картинка полю или перепутали имя. Имена в 1С чувствительны к регистру: QR и qr — разные поля.

QR печатается, но пустой или битый. Строка данных слишком длинная для выбранного размера, либо в неё попали непечатаемые символы. Сократите данные или увеличьте размер картинки.

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

При печати на принтере не сканируется, а на экране — да. Виноват масштаб печати «уместить на страницу»: он мельчит код. Печатайте в 100% масштаба.

QR и маркировка: почему это DataMatrix, а не QR

Здесь важная поправка. Код маркировки товаров в системе «Честный ЗНАК» — это не QR, а DataMatrix. Оба двумерные и внешне похожи, но DataMatrix плотнее и устойчивее к повреждениям, поэтому его и выбрали для маркировки.

Отличить просто: у QR в трёх углах крупные квадраты-«глаза», у DataMatrix две сплошные стороны буквой «L» и пунктир по двум другим.

Что это значит на практике:

ЗадачаКакой кодГде в 1С
Маркировка товараDataMatrix«1С:Бухгалтерия», УНФ, «1С:Розница» — подсистема маркировки
Платёж по счётуQRПечать счёта на оплату
Проверка чека в ФНСQRКассовый чек

При приёмке и выводе из оборота маркированного товара в 1С сканируют именно DataMatrix со стороны упаковки. Генерировать его самостоятельно не нужно и нельзя — коды эмитирует оператор «Честного ЗНАКА», 1С только считывает и передаёт их в систему.

Настоящий QR в маркировке встречается в другом месте — в мобильном приложении покупателя «Честный ЗНАК»: по QR на кассовом чеке приложение открывает проверку. Но это уже код чека, а не код товара.

Не пытайтесь «сгенерировать код маркировки» встроенным генератором штрихкодов. Самодельный DataMatrix не пройдёт проверку: коды регистрируются в государственной системе и привязаны к конкретной единице товара.

Сканирование и печать QR в мобильных решениях 1С

В мобильных приложениях на платформе 1С (мобильный клиент, мобильная платформа) QR работает в обе стороны — и на чтение, и на печать.

Сканирование камерой. Мобильная платформа умеет читать штрихкоды и QR камерой устройства. Код вызывает сканер, пользователь наводит телефон, в программу возвращается распознанная строка. Так удобно открывать карточку товара по QR на ценнике или подтягивать данные из кода на документе.

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

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

Как сделать QR надёжным: размер, уровень коррекции, поля

QR печатается, но читается через раз — почти всегда дело в геометрии кода, а не в данных. Четыре параметра решают почти всё.

Размер. Чем больше данных в коде, тем плотнее модули и тем крупнее должен быть квадрат. Для ссылки средней длины не делайте QR меньше 2×2 см на бумаге. На экране — не меньше 150–200 пикселей по стороне.

Уровень коррекции ошибок. В QR встроено восстановление данных: код читается, даже если часть повреждена. Уровней четыре — от L (восстанавливается около 7%) до H (около 30%). Для документов, которые мнутся и пачкаются, берите уровень выше; для чистой ссылки на экране хватит L или M, чтобы код был проще.

«Тихая зона» — поля вокруг кода. QR требует пустой рамки по периметру шириной в несколько модулей. Если прижать код к тексту или рамке таблицы, сканер не найдёт границы. Оставляйте отступ.

Контраст. Классика — чёрный код на белом фоне. Инверсия (белый на чёрном), цветной фон под кодом или печать бледным тонером ломают распознавание.

Отдельно про экран кассы и мобильных устройств: там QR читает уже камера покупателя, а не сканер. Снижают распознавание блики на глянцевом дисплее и слишком мелкий код в углу чека. Если клиенты жалуются, что «не считывается», начните с размера и яркости экрана, а не с содержимого кода.

Ещё одна частая причина — данные меняются, а размер поля в макете зафиксирован. Короткая ссылка влезает мелко и читается, длинная при том же размере превращается в кашу. Либо держите данные короткими (через сервис коротких ссылок), либо дайте полю расти.

Диагностика: выберите симптом

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

Можно ли вывести QR в любой печатной форме, а не только в счёте?
Да. Добавьте в макет поле-картинку с видом заполнения «Параметр» и заполните его из кода через генератор штрихкодов. Для типовых форм удобнее доработка расширением конфигурации, чтобы не менять конфигурацию поставщика.
Чем платёжный QR на счёте отличается от произвольного?
Платёжный собирается по банковскому стандарту ГОСТ Р 56042-2014: внутри строго заданный порядок реквизитов, который понимают приложения банков. Произвольный QR может содержать что угодно — ссылку, текст, контакт.
Нужна ли отдельная лицензия или программа для QR?
Нет. Механизм штрихкодов входит в состав типовых конфигураций через «Библиотеку стандартных подсистем». Отдельно ничего докупать не надо.
Почему код маркировки нельзя сгенерировать самому?
Коды DataMatrix эмитирует оператор «Честного ЗНАКА» и регистрирует в государственной системе. Самодельный код не привязан к товару и не пройдёт проверку при продаже.
Можно ли закодировать в QR русский текст?
Да, QR поддерживает любые символы Юникода. Но кириллица занимает больше места, поэтому длинный русский текст заметно укрупняет код — для компактности лучше кодировать ссылку.

Источники

  • ГОСТ Р 56042-2014 «Стандарты финансовых операций. Двумерные символы штрихового кода для платежей физических лиц»
  • Федеральный закон от 22.05.2003 № 54-ФЗ «О применении контрольно-кассовой техники»