Как сформировать QR-код в 1С: обзор типовых механизмов и альтернативных решений?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

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

Использование макета из типовых конфигураций

Разберем по шагам идеальный подход, который не требует покупки платных обработок. Все типовые механизмы уже реализованы в таких решениях, как УТ 11, БП 3 или ERP. Посмотрим на пример, как можно позаимствовать этот функционал для своей конфигурации.

  1. Зайдите в современную типовую конфигурацию (например, УТ 11).
  2. Найдите и скопируйте к себе в базу общий макет ОбщийМакет.КомпонентаПечатиQRКода.
  3. Скопируйте процедуры вызова и формирования картинки. Эта типовая компонента отлично печатает коды без проблем как под архитектуру x64, так и под x32.

Проанализируем пример кода, который позволит нам сгенерировать штрихкод из произвольной строки:


Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиQRКода", "QR") Тогда
    QRCodeGenerator = Новый("AddIn.QR.QRCodeExtension");
Иначе
    Возврат;
КонецЕсли;

QRСтрока = "Ваша текстовая строка для кодирования";
ДанныеQRКода = QRCodeGenerator(QRСтрока, 0, 190);

Если НЕ ДанныеQRКода = Неопределено Тогда
    КартинкаQRКода = Новый Картинка(ДанныеQRКода);
    ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;
КонецЕсли;

Применение функций Библиотеки стандартных подсистем (БСП)

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

Посмотрим на пример вызова генерации. Вы можете использовать метод МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода, передав ему нужные параметры. Либо вызовем на сервере напрямую функцию ГенерацияШтрихкода.ДанныеQRКода, указав текст, уровень коррекции и размер.

В ответ 1С вернет двоичные данные, из которых можно создать картинку для помещения в табличный документ или на управляемую форму. Этот способ полностью избавляет от необходимости вручную подключать макеты.

Специфика формирования QR-кодов для оплаты (ГОСТ и СБП)

Разберем важный момент: если QR-код в счете или квитанции формируется для оплаты услуг физическими лицами, он должен строго соответствовать национальному стандарту ГОСТ Р 56042-2014.

  1. В типовых конфигурациях (таких как «1С:Бухгалтерия» или «1С:БГУ») алгоритмы формирования платежных кодов уже встроены.
  2. В настройках банковского счета организации можно управлять дополнительными реквизитами (номер заказа, идентификатор плательщика, назначение платежа), чтобы при сканировании в банковском приложении все поля заполнялись автоматически.

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

Альтернативные методы генерации

Выясним причину, по которой нам могут понадобиться нестандартные подходы: например, если мы работаем в очень старой нетиповой конфигурации без поддержки БСП. Рассмотрим два дополнительных решения:

  1. Использование внешних HTTP API: Генерацию кода можно выполнить без скачивания внешних DLL с помощью сторонних сервисов. Алгоритм простой: 1С отправляет GET-запрос со строкой на публичный сервер, а в ответ сразу получает готовую картинку, которая помещается на макет.
  2. Использование JavaScript в HTML-документе: Интересный подход без внешних компонент и доступа к интернету — генерация кода прямо в форме 1С посредством JavaScript (например, библиотеки QRCode.js). Скрипт встраивается в HTML-макет 1С, и при изменении текстовой строки он автоматически отрисовывает штрихкод. Это отлично работает для устаревших версий платформы или мобильных приложений на базе 1С.

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

← На главную