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

Документы и Печать · 11 мин

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

Как сформировать QR-код для оплаты в 1С: стандарт по ГОСТ, СБП, настройка в типовых конфигурациях, печать на счёте и программная генерация кода.

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

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

Какой QR-код вам нужен: ГОСТ или СБП

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

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

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

QR по ГОСТ Р 56042-2014

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

QR-код СБП

Подходит для розницы и моментальных оплат от физлиц. Требует договора эквайринга СБП с банком и настройки подсистемы в 1С. Оплата приходит мгновенно, но взимается комиссия.

Сторонний генератор QR

Быстрый вариант для разовой задачи: сформировать картинку вне 1С и вставить в макет. Минус — код не обновляется при изменении суммы или реквизитов документа.

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

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

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

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

Как проверить готовность данных

Карточка организации
Норма

Заполнены ИНН, наименование, есть хотя бы один банковский счёт с БИК и номером счёта

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

Пустой ИНН или отсутствует банковский счёт — QR-код не сформируется

Банковский счёт в документе
Норма

В счёте на оплату выбран актуальный счёт организации

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

Счёт не выбран или выбран закрытый счёт

Сумма документа
Норма

Сумма больше нуля и совпадает с итогом табличной части

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

Нулевая сумма — часть банковских приложений откажется обрабатывать код

Включение QR-кода на печатной форме счёта

В типовых конфигурациях на управляемых формах (УТ 11, КА 2, ERP 2, УНФ, БП 3.0) вывод QR-кода в документе «Счёт на оплату покупателю» предусмотрен штатно. Логика настройки схожа: в параметрах печатной формы или в настройках документа есть признак вывода кода оплаты. В ряде конфигураций код выводится автоматически, если заполнены реквизиты, и отдельной настройки нет.

Общий порядок действий выглядит так:

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

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

Настройка оплаты через СБП

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

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

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

Программная генерация QR-кода в макете

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

Строка для банковского QR по ГОСТ Р 56042-2014 имеет строгий формат: служебный заголовок, обязательные поля (Name, PersonalAcc, BankName, BIC, CorrespAcc) и необязательные (Sum в копейках, Purpose, PayeeINN и другие). Поля разделяются символом вертикальной черты. Ошибка в одном разделителе делает код нечитаемым для банковских приложений, хотя камера телефона его распознаёт как обычный текст.

bsl
ДанныеQR = "ST00012|Name=ООО Ромашка|PersonalAcc=40702810100000000001|BankName=ПАО Банк|BIC=044525225|CorrespAcc=30101810400000000225|PayeeINN=7707083893|Sum=1500000|Purpose=Оплата по счёту № 15, НДС не облагается";
ПараметрыКода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыКода.Ширина = 150;
ПараметрыКода.Высота = 150;
ПараметрыКода.ТипКода = 16; // QR-код
ПараметрыКода.Штрихкод = ДанныеQR;
КартинкаQR = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыКода);
Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Новый Картинка(КартинкаQR.ДвоичныеДанные);

Обратите внимание: сумма в поле Sum указывается в копейках (15000 рублей = 1500000), а назначение платежа не должно содержать символ вертикальной черты — он зарезервирован как разделитель. Перед вставкой в строку очищайте назначение от служебных символов, иначе код соберётся с ошибкой.

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

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

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

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

Ограничения и когда нужна доработка

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

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

Итог

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

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

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

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

Чаще всего нарушена структура строки: лишний или пропущенный разделитель «|», сумма в рублях вместо копеек, запрещённые символы в назначении платежа. Сравните строку с форматом ГОСТ Р 56042-2014 и проверьте код в приложении другого банка — реализации разбора у банков различаются.

Можно ли сделать QR-код без договора с банком?

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

Работает ли QR-код в файловой базе 1С без сервера?

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

Как вывести QR-код на чек ККТ?

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

Что делать, если у организации несколько расчётных счетов?

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

Можно ли сгенерировать QR-код без доработки, прямо сейчас?

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