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

Автоматизация · 12 мин

Как создать QR-код в 1С для оплаты

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

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

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

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

Какой стандарт QR-кода нужен для оплаты

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

Первый вариант — код по стандарту ГОСТ Р 56042-2014. Это статический код с реквизитами платежа: получатель, ИНН, расчётный счёт, БИК, назначение, сумма. Клиент сканирует его в приложении банка, приложение подставляет реквизиты в платёжное поручение, и клиент подтверждает перевод. Деньги приходят обычным банковским платежом, сверка оплаты выполняется по выписке.

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

Сравнение вариантов

QR по ГОСТ Р 56042-2014

Подходит для счетов и квитанций без онлайн-интеграции. Оплата идёт обычным банковским переводом, сверка по выписке. Не требует договора на СБП.

QR через СБП

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

Внешняя компонента генерации QR

Подходит для нестандартных печатных форм и собственных сценариев. Требует подключения компоненты и программирования.

Подготовка: что должно быть заполнено в базе

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

Проверьте следующие данные перед настройкой:

  • в карточке организации заполнены наименование, ИНН и КПП;
  • в банковском счёте организации указаны номер счёта, БИК банка и корреспондентский счёт;
  • в документе счёта на оплату указаны сумма и назначение платежа;
  • для СБП — заключён договор с банком и получены параметры подключения (идентификатор торговой точки, ключи).

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

Настройка QR-кода в типовой конфигурации без программирования

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

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

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

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

Программная генерация QR-кода через внешнюю компоненту

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

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

Строка по ГОСТ Р 56042-2014 имеет блочную структуру: заголовок ST00012 (для версии стандарта с обязательными полями), далее пары «имя=значение», разделённые символом «|». Пример формирования строки во встроенном языке:

СтрокаQR = "ST00012"

+ "|Name=" + НаименованиеПолучателя

+ "|PersonalAcc=" + НомерСчета

+ "|BankName=" + НаименованиеБанка

+ "|BIC=" + БИК

+ "|CorrespAcc=" + КоррСчет

+ "|Sum=" + Формат(Сумма * 100, "ЧГ=")

+ "|Purpose=" + НазначениеПлатежа;

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

bsl
СтрокаQR = "ST00012|Name=" + Наименование + "|PersonalAcc=" + Счет + "|BankName=" + Банк + "|BIC=" + БИК + "|CorrespAcc=" + КоррСчет + "|Sum=" + Формат(Сумма * 100, "ЧГ=") + "|Purpose=" + Назначение;

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

Проверка сформированного кода

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

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

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

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

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

Сканирование приложением банка
Норма

Приложение распознаёт платёж и показывает реквизиты получателя

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

Код не читается или приложение показывает просто текст

Сверка реквизитов
Норма

Получатель, счёт, БИК, сумма и назначение совпадают с документом

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

Любое поле отличается, обрезано или пустое

Печать на бумаге
Норма

Код сканируется с распечатки с первого раза

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

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

Типичные ошибки и их последствия

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

Частая ошибка — сумма в рублях вместо копеек. Если передать в поле Sum значение 1500 вместо 150000, клиент увидит к оплате 15 рублей вместо 1500. Обратная ошибка приводит к завышению суммы в сто раз, что заметно сразу, но неприятно.

Вторая распространённая проблема — спецсимволы в назначении платежа или наименовании получателя. Символ «|» внутри значения ломает структуру строки, поскольку является разделителем полей. Перед кодированием очищайте строки от разделителей и управляющих символов.

Типичные ошибки
01
Сумма передана в рублях вместо копеек — клиент видит сумму в 100 раз меньше или больше
02
Символ «|» в назначении платежа разрушает структуру строки — платёж формируется с усечёнными полями
03
Устаревший БИК или счёт в карточке организации — деньги уходят по неверным реквизитам
04
Слишком мелкий QR-код в макете — код не сканируется с распечатки
05
Компонента установлена только на клиенте, а печать выполняется на сервере — код не формируется вовсе

Ограничения и альтернативные способы

Статический код по ГОСТу не даёт автоматической сверки оплаты: деньги приходят обычным платежом, и бухгалтер сопоставляет их со счетами по выписке. Если нужна автоматическая фиксация оплаты, рассмотрите СБП с уведомлениями от банка либо эквайринговые сервисы с API.

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

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

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

Как выбрать действие

Используется типовая конфигурация и нужен код на счётеВключите штатный вывод QR-кода в настройках печатной формы
Нужен код в самописном документе или этикеткеПодключите внешнюю компоненту и формируйте строку по ГОСТ Р 56042-2014
Нужна автоматическая сверка оплат от физических лицНастройте приём платежей через СБП с договором в банке
Счета выставляются редко и вручнуюСформируйте код в личном кабинете банка и вставьте картинку в документ
Итог

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

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

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

Можно ли вывести QR-код на счёт без доработки конфигурации?

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

Чем отличается QR-код по ГОСТу от кода СБП?

Код по ГОСТ Р 56042-2014 содержит сами реквизиты платежа — приложение банка формирует из них обычное платёжное поручение. Код СБП содержит ссылку на платёж в Системе быстрых платежей, которую генерирует банк; оплата проходит быстрее и может сопровождаться автоматическим уведомлением в 1С.

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

Наиболее вероятные причины: нарушена структура строки (лишние или недостающие разделители «|»), неверная версия заголовка ST, пустые обязательные поля либо слишком мелкое или размытое изображение. Проверьте строку на соответствие стандарту и увеличьте размер кода в макете.

Нужно ли указывать сумму в QR-коде?

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

Работает ли генерация QR-кода в файловой базе и на сервере?

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

Можно ли сформировать QR-код для оплаты по УИН (начисления в бюджет)?

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