Автоматизация · 12 мин
Как создать QR-код в 1С для оплаты
Разбираем, как сформировать QR-код для оплаты в 1С: типовые механизмы, внешние компоненты, пример кода, проверка результата и типичные ошибки.
QR-код для оплаты в 1С чаще всего нужен в двух сценариях: печать кода на счёте или квитанции, чтобы клиент оплатил его через приложение банка, и формирование кода по стандарту СБП (Система быстрых платежей) для приёма оплаты от физических лиц. В обоих случаях задача сводится к одному: сформировать строку с платёжными реквизитами по нужному стандарту и преобразовать её в графическое изображение QR-кода, которое можно вывести на печатную форму или экран.
В типовых конфигурациях 1С (Бухгалтерия предприятия, Управление торговлей, Комплексная автоматизация, ERP) механизм печати QR-кода уже встроен: на счёте на оплату можно вывести код по стандарту ГОСТ Р 56042-2014 или подключить оплату через СБП. Если типового функционала недостаточно — например, нужен код в самописном документе или на этикетке — используют внешние компоненты генерации QR-кодов или обращение к API банка.
Ниже разобраны оба пути: настройка типового механизма без программирования и программная генерация кода через внешнюю компоненту с примером кода на встроенном языке 1С. Отдельно описаны проверка корректности сформированного кода и типичные ошибки, из-за которых код не сканируется или оплата уходит не на тот счёт.
Какой стандарт QR-кода нужен для оплаты
Прежде чем формировать код, определите, каким способом клиент будет платить. От этого зависит формат строки, которую нужно закодировать, и механизм проверки оплаты.
Первый вариант — код по стандарту ГОСТ Р 56042-2014. Это статический код с реквизитами платежа: получатель, ИНН, расчётный счёт, БИК, назначение, сумма. Клиент сканирует его в приложении банка, приложение подставляет реквизиты в платёжное поручение, и клиент подтверждает перевод. Деньги приходят обычным банковским платежом, сверка оплаты выполняется по выписке.
Второй вариант — оплата через СБП. Здесь QR-код содержит ссылку на платёж в Системе быстрых платежей, которую формирует банк через API. Деньги зачисляются быстро, а банк может присылать уведомление об оплате, что позволяет автоматизировать сверку. Для этого варианта нужен договор с банком, подключённый сервис СБП и настройка интеграции в 1С.
Сравнение вариантов
Подходит для счетов и квитанций без онлайн-интеграции. Оплата идёт обычным банковским переводом, сверка по выписке. Не требует договора на СБП.
Подходит для розницы и быстрых платежей от физических лиц. Требует договора с банком и настройки API, зато даёт быстрое зачисление и уведомления об оплате.
Подходит для нестандартных печатных форм и собственных сценариев. Требует подключения компоненты и программирования.
Подготовка: что должно быть заполнено в базе
QR-код для оплаты формируется из реквизитов организации и банковского счёта. Если в базе эти данные не заполнены или заполнены с ошибками, код либо не сформируется, либо приведёт клиента к платежу с неверными реквизитами.
Проверьте следующие данные перед настройкой:
- в карточке организации заполнены наименование, ИНН и КПП;
- в банковском счёте организации указаны номер счёта, БИК банка и корреспондентский счёт;
- в документе счёта на оплату указаны сумма и назначение платежа;
- для СБП — заключён договор с банком и получены параметры подключения (идентификатор торговой точки, ключи).
Особое внимание уделите назначению платежа: в типовых механизмах оно подставляется в код автоматически из документа. Если в назначении есть спецсимволы или оно превышает допустимую длину стандарта, строка может обрезаться, и банк клиента отклонит платёж или сформирует его с усечённым назначением.
Настройка QR-кода в типовой конфигурации без программирования
В типовых решениях на платформе 1С:Предприятие 8.3 вывод QR-кода на счёт настраивается через параметры печатной формы. Точные названия команд различаются между конфигурациями и релизами, но общая логика одинакова.
Откройте счёт на оплату покупателю и перейдите к печатной форме. В форме настройки печати найдите параметр вывода QR-кода (обычно он называется «Выводить QR-код» или находится в разделе дополнительных настроек печати). Включите его и сформируйте печатную форму — код появится в макете, как правило, рядом с реквизитами получателя.
Для оплаты через СБП настройка выполняется в разделе интеграций: указываются параметры подключения к банку, после чего в документе появляется возможность сформировать платёжную ссылку СБП и вывести соответствующий QR-код. В некоторых конфигурациях для этого используется подсистема «Интернет-поддержка пользователей» и сервис 1С, поэтому может потребоваться действующий договор ИТС.
- 1Проверьте и заполните реквизиты организации и банковского счёта
- 2Откройте счёт на оплату и перейдите к печатной форме
- 3В настройках печати включите вывод QR-кода
- 4Сформируйте печатную форму и отсканируйте код приложением банка
- 5Сверьте реквизиты, которые подставило приложение, с реквизитами документа
Программная генерация QR-кода через внешнюю компоненту
Когда типового механизма нет — например, код нужен на этикетке, в самописном документе или в отчёте, — используют внешнюю компоненту генерации QR-кодов. Распространённый вариант — компонента, построенная на библиотеке ZXing (аналогично тому, как это сделано в типовых решениях для штрихкодов), либо отдельные компоненты от сторонних разработчиков.
Общий алгоритм такой: формируется строка платёжных данных по стандарту ГОСТ Р 56042-2014, затем вызывается метод компоненты, который возвращает картинку с QR-кодом, и картинка вставляется в табличный документ или форму.
Строка по ГОСТ Р 56042-2014 имеет блочную структуру: заголовок ST00012 (для версии стандарта с обязательными полями), далее пары «имя=значение», разделённые символом «|». Пример формирования строки во встроенном языке:
СтрокаQR = "ST00012"
+ "|Name=" + НаименованиеПолучателя
+ "|PersonalAcc=" + НомерСчета
+ "|BankName=" + НаименованиеБанка
+ "|BIC=" + БИК
+ "|CorrespAcc=" + КоррСчет
+ "|Sum=" + Формат(Сумма * 100, "ЧГ=")
+ "|Purpose=" + НазначениеПлатежа;
Обратите внимание: сумма в стандарте указывается в копейках целым числом, поэтому рубли умножаются на 100. Пропуск суммы допустим — тогда клиент введёт её вручную, но для счетов это неудобно и повышает риск ошибки оплаты.
СтрокаQR = "ST00012|Name=" + Наименование + "|PersonalAcc=" + Счет + "|BankName=" + Банк + "|BIC=" + БИК + "|CorrespAcc=" + КоррСчет + "|Sum=" + Формат(Сумма * 100, "ЧГ=") + "|Purpose=" + Назначение;После формирования строки вызовите метод компоненты. У разных компонент интерфейс отличается, но типовой вызов выглядит как передача строки и получение двоичных данных или картинки. Полученное изображение помещается в область табличного документа через свойство «Картинка» рисунка макета или во временное хранилище для вывода на форму.
Проверка сформированного кода
Сгенерированный QR-код обязательно проверяется до рассылки документов клиентам. Проверка занимает минуту и исключает самые дорогие ошибки — платежи по неверным реквизитам.
Отсканируйте код приложением любого банка со смартфона. Приложение должно распознать платёж и показать форму с реквизитами. Сравните каждое поле с данными документа: получатель, ИНН, счёт, БИК, сумма, назначение. Любое расхождение означает ошибку в строке кодирования.
Дополнительно проверьте печатный вариант: распечатайте форму на принтере, который будет использоваться в работе, и отсканируйте код с бумаги. Мелкий или размытый код может читаться с экрана, но не читаться с распечатки. В этом случае увеличьте размер картинки в макете — для надёжного сканирования код не должен быть слишком мелким.
Как проверить результат
Приложение распознаёт платёж и показывает реквизиты получателя
Код не читается или приложение показывает просто текст
Получатель, счёт, БИК, сумма и назначение совпадают с документом
Любое поле отличается, обрезано или пустое
Код сканируется с распечатки с первого раза
Код читается только с экрана или не читается вовсе
Типичные ошибки и их последствия
Большинство проблем с QR-кодами для оплаты связано не с генерацией картинки, а с содержимым закодированной строки. Код технически корректен, сканируется, но платёж формируется неправильно.
Частая ошибка — сумма в рублях вместо копеек. Если передать в поле Sum значение 1500 вместо 150000, клиент увидит к оплате 15 рублей вместо 1500. Обратная ошибка приводит к завышению суммы в сто раз, что заметно сразу, но неприятно.
Вторая распространённая проблема — спецсимволы в назначении платежа или наименовании получателя. Символ «|» внутри значения ломает структуру строки, поскольку является разделителем полей. Перед кодированием очищайте строки от разделителей и управляющих символов.
Ограничения и альтернативные способы
Статический код по ГОСТу не даёт автоматической сверки оплаты: деньги приходят обычным платежом, и бухгалтер сопоставляет их со счетами по выписке. Если нужна автоматическая фиксация оплаты, рассмотрите СБП с уведомлениями от банка либо эквайринговые сервисы с API.
Для небольшого количества документов альтернативой служат онлайн-генераторы QR-кодов от банков: многие банки позволяют сформировать платёжный код в личном кабинете и вставить картинку в документ вручную. Это приемлемо для разовых счетов, но не масштабируется и повышает риск ошибки при ручном переносе реквизитов.
Если конфигурация снята с поддержки или доработана, взвесьте, что дешевле: обновить типовой механизм или реализовать собственную генерацию. Самописное решение требует сопровождения при смене стандартов и обновлениях платформы.
Как выбрать действие
Что важно запомнить
QR-код для оплаты — это закодированная строка платёжных реквизитов. В типовых конфигурациях код выводится настройкой печатной формы, в остальных случаях — через внешнюю компоненту. Перед рассылкой документов всегда сканируйте код и сверяйте реквизиты, сумму в копейках и читаемость с распечатки.
Частые вопросы
Можно ли вывести QR-код на счёт без доработки конфигурации?
Да, в актуальных типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей и других) вывод QR-кода на печатную форму счёта встроен. Достаточно заполнить реквизиты организации и банковского счёта и включить соответствующий параметр в настройках печати. Точное расположение настройки зависит от конфигурации и релиза.
Чем отличается QR-код по ГОСТу от кода СБП?
Код по ГОСТ Р 56042-2014 содержит сами реквизиты платежа — приложение банка формирует из них обычное платёжное поручение. Код СБП содержит ссылку на платёж в Системе быстрых платежей, которую генерирует банк; оплата проходит быстрее и может сопровождаться автоматическим уведомлением в 1С.
Почему приложение банка не распознаёт мой QR-код?
Наиболее вероятные причины: нарушена структура строки (лишние или недостающие разделители «|»), неверная версия заголовка ST, пустые обязательные поля либо слишком мелкое или размытое изображение. Проверьте строку на соответствие стандарту и увеличьте размер кода в макете.
Нужно ли указывать сумму в QR-коде?
Нет, поле суммы необязательное. Без него клиент введёт сумму вручную после сканирования. Для счетов на фиксированную сумму лучше указывать её в коде — это исключает ошибку ввода. Помните, что сумма передаётся в копейках.
Работает ли генерация QR-кода в файловой базе и на сервере?
Да, но внешняя компонента должна быть установлена там, где физически выполняется код. В файловом режиме — на компьютере пользователя, в клиент-серверном — на сервере 1С, если печатная форма формируется в серверном вызове. Это частая причина ситуации «у разработчика работает, у пользователя нет».
Можно ли сформировать QR-код для оплаты по УИН (начисления в бюджет)?
Да, стандарт поддерживает дополнительные поля, включая уникальный идентификатор начисления. Поле добавляется в строку тем же способом — парой «имя=значение». Уточните актуальный перечень полей в действующей версии стандарта или в документации вашего банка, так как требования к платежам в бюджет периодически меняются.