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

Разработка и Конфигурация · 11 мин

Как сделать QR-код в 1С 8.3

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

QR-код в 1С 8.3 чаще всего нужен для печатных форм: платёжные поручения с реквизитами по ГОСТ Р 56042-2014, чеки, накладные, этикетки товаров и ссылки на оплату. Платформа содержит встроенные механизмы генерации двумерных штрихкодов, поэтому в большинстве сценариев сторонние компоненты не требуются.

Есть три основных способа: штатный элемент «Двумерный штрихкод» в макете табличного документа, программная генерация через объект «ГенераторШтрихкода» и внешние компоненты или веб-сервисы. Первые два варианта работают без подключения к интернету и не требуют установки дополнительного ПО.

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

Что нужно проверить перед началом работы

Генерация QR-кода средствами платформы доступна в современных версиях 1С:Предприятие 8.3. Если конфигурация работает на старой платформе, сначала убедитесь, что функциональность поддерживается: откройте синтакс-помощник и найдите объект «ГенераторШтрихкода» и перечисление «ТипШтрихкода» со значением QRCode.

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

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

Способ 1: QR-код в макете табличного документа

Это основной способ для печатных форм. Откройте конфигуратор, найдите нужный макет (например, макет документа «Счёт на оплату» или общий макет) и добавьте в область рисунок типа «Двумерный штрихкод». В свойствах рисунка установите тип штрихкода — QRCode.

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

Пример кода формирования печатной формы:

ТабДок = Новый ТабличныйДокумент;

Макет = Документы.СчетНаОплату.ПолучитьМакет("МакетСчета");

Область = Макет.ПолучитьОбласть("Шапка");

Область.Параметры.СтрокаQR = СформироватьСтрокуQR(Документ);

ТабДок.Вывести(Область);

Размер рисунка в макете задавайте с запасом: слишком маленький QR-код (меньше примерно 2×2 см на печати) плохо считывается камерами телефонов. После изменения макета выведите документ на печать и проверьте читаемость реальным сканером.

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

Способ 2: программная генерация через ГенераторШтрихкода

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

Типовой фрагмент кода выглядит так:

Генератор = Новый ГенераторШтрихкода;

ПараметрыКода = Генератор.ПолучитьПараметрыШтрихкода();

ПараметрыКода.Ширина = 200;

ПараметрыКода.Высота = 200;

ПараметрыКода.ТипКода = ТипШтрихкода.QRCode;

ПараметрыКода.Штрихкод = СтрокаДанных;

КартинкаQR = Генератор.СформироватьШтрихкод(ПараметрыКода);

Полученную картинку можно присвоить элементу формы, сохранить во временное хранилище для показа пользователю или записать в файл методом «Записать» с указанием формата PNG. Для показа на управляемой форме добавьте реквизит типа «Строка» (адрес временного хранилища) и поле картинки, ссылающееся на этот адрес.

Учтите, что генерация выполняется на стороне, где вызван код. В клиент-серверном режиме формировать картинку лучше в серверной процедуре, чтобы не передавать лишние данные между клиентом и сервером.

Как сформировать строку данных для QR-кода

Содержимое QR-кода — обычная строка, но для платёжных документов её формат регламентирован. Для оплаты по реквизитам через банковские приложения применяется стандарт, в котором поля разделяются символом «|», а обязательные блоки включают наименование получателя, ИНН, расчётный счёт, БИК банка и сумму в копейках.

Пример структуры строки для платёжного QR-кода:

ST00012|Name=ООО Ромашка|PersonalAcc=40702810100000000001|BankName=ПАО Банк|BIC=044525225|CorrespAcc=30101810400000000225|Sum=150000|Purpose=Оплата по счёту № 15

Перед формированием строки очищайте данные от служебных символов: вертикальная черта внутри значения сломает разбор. Сумму указывайте в копейках целым числом. Для произвольных сценариев (ссылка на сайт, карточка товара, Wi-Fi-доступ) достаточно передать в код обычный текст или URL без специального формата.

Если в данных присутствует кириллица, убедитесь, что строка передаётся в кодировке UTF-8 — иначе сканеры могут показать нечитаемые символы. Платёжные стандарты это прямо учитывают, но самодельные строки стоит проверять на реальном устройстве.

bsl
Функция СтрокаQR(Док) Экспорт
  Возврат "ST00012|Name=" + Док.Организация.Наименование + "|PersonalAcc=" + Док.РасчетныйСчет + "|Sum=" + Формат(Док.Сумма * 100, "ЧГ=") + "|";
КонецФункции

Вывод QR-кода в типовых конфигурациях через расширение

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

Порядок работы: в конфигураторе создайте новое расширение, добавьте в него заимствованный макет документа, измените макет (рисунок штрихкода и параметр), затем заимствуйте процедуру формирования печатной формы с аннотацией «Вместо» или «После» и дополните её заполнением параметра строкой QR.

Альтернатива без расширения — механизм внешних печатных форм. Внешняя обработка печати подключается через «Дополнительные отчеты и обработки» и полностью переопределяет печатную форму документа. Это безопасно для обновлений, но требует поддерживать макет самостоятельно при изменении типовых данных.

Сравнение подходов

Макет + расширение

Подходит для типовых конфигураций; сохраняет обновляемость, но требует навыков работы с расширениями

Внешняя печатная форма

Быстрый старт без изменения конфигурации; минус — макет нужно сопровождать вручную

Прямая правка конфигурации

Просто в реализации, но объект снимается с полной поддержки и усложняет обновления

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

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

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

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

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

Читаемость кода
Норма

Сканируется телефоном с распечатки за 1–2 секунды

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

Код не распознаётся или читается только с экрана

Сумма платежа
Норма

В банковском приложении сумма совпадает со счётом

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

Сумма отличается в 100 раз или равна нулю

Реквизиты получателя
Норма

ИНН, счёт и БИК совпадают с данными организации

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

Приложение показывает подставленные или обрезанные данные

Ограничения и альтернативные варианты

Штатные механизмы покрывают большинство задач, но у них есть границы. Если требуется QR-код с логотипом в центре, цветным оформлением или нестандартным форматом, встроенный генератор не подойдёт — понадобится внешняя компонента или генерация через веб-сервис с последующей загрузкой картинки в 1С.

Вариант с веб-сервисом прост в реализации: HTTP-запрос с текстом возвращает готовый PNG. Однако он создаёт зависимость от интернет-канала и внешнего сервиса, что недопустимо для печати платёжных документов с конфиденциальными реквизитами. Для ответственных сценариев используйте только локальную генерацию.

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

Маршрут решения

Как выбрать способ

Нужен QR в типовой печатной формеПроверьте наличие штатной функции, при отсутствии — расширение с макетом
Нужна картинка на форме или в файлеИспользуйте ГенераторШтрихкода в серверной процедуре
Нужен дизайнерский код с логотипомВнешняя компонента или генерация картинки вне 1С с загрузкой файла
Нет возможности менять конфигурациюПодключите внешнюю печатную форму через дополнительные отчеты и обработки

Часто задаваемые вопросы

Можно ли сделать QR-код в 1С без доработки конфигурации?

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

Почему QR-код не сканируется с распечатки?

Чаще всего причины — малый размер картинки в макете, бледная печать или слишком плотный код из-за длинной строки данных. Увеличьте размер рисунка до 2,5–3 см, сократите содержимое строки и проверьте качество печати принтера.

Работает ли генерация QR-кода на тонком клиенте?

Объект «ГенераторШтрихкода» недоступен на тонком и веб-клиенте. Вынесите формирование картинки в серверную процедуру, а на клиент возвращайте адрес готового изображения во временном хранилище.

Как вставить в QR-код данные на русском языке?

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

Можно ли вывести QR-код в отчёте на СКД?

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

Что будет с QR-кодом при обновлении типовой конфигурации?

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

Итог

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

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