QR-код для оплаты в счёте 1С 8.3: стандартная форма, логотип и своя обработка
Содержание
В 1С:Бухгалтерии 3.0 добавлять QR-код в счёт вручную обычно не нужно: в актуальных релизах он уже есть в стандартной печатной форме «Счёт на оплату» и строится из реквизитов организации, банковского счёта и суммы документа. Если кода на печати нет, чаще всего причина не в «отсутствующей функции», а в незаполненных реквизитах банка или в старом релизе.
Частое заблуждение — что QR-код можно сделать один раз картинкой и вставить во все счета. Так получится только статичный код без суммы. Платёжный QR-код по ГОСТ содержит сумму и назначение конкретного счёта, поэтому он должен генерироваться при каждой печати. Ниже три рабочих варианта: от стандартного до собственной печатной формы.
Что зашито в QR-код счёта и как его читает банк
QR-код на счёте — это не ссылка и не картинка с реквизитами. Внутри обычная текстовая строка в формате ГОСТ Р 56042-2014. Банковское приложение сканирует её и раскладывает по полям платёжки.
Строка начинается со служебного заголовка и дальше перечисляет поля через вертикальную черту:
ST00012|Name=ООО Ромашка|PersonalAcc=40702810000000000001|BankName=ПАО Банк|BIC=044525000|CorrespAcc=30101810400000000225|PayeeINN=7700000000|KPP=770001001|Sum=1500050|Purpose=Оплата по счёту № 125 от 07.10, в т.ч. НДС
Как читать заголовок ST00012:
- 🔹
ST— признак формата; - 🔹
0001— версия стандарта; - 🔹 последняя цифра — кодировка:
1— Windows-1251,2— UTF-8,3— КОИ8-Р.
Обязательные поля по стандарту — пять: Name, PersonalAcc, BankName, BIC, CorrespAcc. Остальные (PayeeINN, KPP, Sum, Purpose) дополнительные, но без суммы и назначения код почти бесполезен: плательщику придётся вбивать их руками.
Сумма в поле Sum пишется в копейках, без разделителя. В примере выше 1500050 — это 15 000,50 руб.
Кто сможет оплатить по такому коду: в первую очередь физлица и ИП через мобильный банк. Многие приложения для бизнеса тоже распознают QR-код ГОСТ, но это зависит от банка покупателя.
Способ 1. Стандартная печатная форма счёта в 1С:Бухгалтерии 3.0
Самый короткий путь. Генератор QR-кода встроен в типовую конфигурацию , вы только даёте ему правильные данные.
Шаг 1. Проверьте реквизиты организации
- Откройте
Главное → Организациии карточку своей организации. - Убедитесь, что заполнены полное наименование, ИНН и КПП.
- Проверьте, что у организации указан основной банковский счёт.
Шаг 2. Проверьте банковский счёт и банк
- В карточке организации откройте банковские счета и нужный расчётный счёт.
- Номер счёта — 20 цифр, без пробелов.
- Банк выбран из классификатора, у него заполнены БИК и корреспондентский счёт.
Если у банка пустой корр. счёт, QR-код не сформируется или будет нечитаемым — это одно из пяти обязательных полей. Обычно помогает загрузка классификатора банков: в списке банков есть команда подбора из классификатора, она подтягивает актуальные БИК и корр. счёт.
Шаг 3. Создайте и напечатайте счёт
Продажи → Счета покупателям, создайте документ.- Заполните контрагента, товары или услуги, проверьте, что в шапке выбран нужный банковский счёт.
- Нажмите
Печать → Счёт на оплату.
QR-код выводится в верхней части формы рядом с банковскими реквизитами. В нём будут сумма документа и назначение платежа с номером и датой счёта.
Если кода в форме нет
- 🔸 Релиз старше того, где появилась поддержка QR. Проверьте номер в
Справка → О программеи обновите конфигурацию до актуального релиза. - 🔸 Печатается не типовой макет, а изменённый. В
Администрирование → Печатные формы, отчеты и обработки → Макеты печатных формнайдите макет счёта. Если он помечен как изменённый, ваш пользовательский макет мог потерять область с рисунком QR-кода. Команда возврата к стандартному макету в этом же списке решает вопрос (ваши правки макета при этом пропадут). - 🔸 Вы печатаете внешнюю печатную форму, подключённую когда-то давно. Она живёт своей жизнью и QR-код сама не получит.
В УНФ и УТ 11 печатные формы счёта устроены иначе, и набор настроек отличается. Принцип тот же: QR строится из реквизитов банковского счёта организации, поэтому начинайте с проверки банка и корр. счёта.
Способ 2. Статичный QR-код картинкой через логотип организации
Подходит, если нужен не платёжный код ГОСТ, а постоянная картинка: статичный QR-код СБП, выданный банком, ссылка на страницу оплаты или на сайт. Сумму в такой код не зашить — плательщик введёт её сам.
Приём простой: в БП 3.0 у организации есть логотип, который печатается в шапке счёта. Вместо логотипа можно загрузить QR-код.
- Получите картинку QR-кода. Статичный код СБП берут в интернет-банке (раздел приёма платежей по QR), ссылку на оплату — у платёжного сервиса. Сохраните в PNG.
- Откройте карточку организации, раздел
Логотип и печать. - Загрузите файл в поле логотипа.
- Напечатайте счёт и проверьте, что код читается.
Ограничения способа:
- 🔹 код один на все счета — без суммы и номера счёта;
- 🔹 он займёт место логотипа (если логотип нужен, этот путь не подходит);
- 🔹 картинку масштабирует макет, поэтому проверьте размер после печати.
Вставка в уже готовый файл
Если QR нужен разово, например банк выдал ссылку на оплату конкретного счёта, проще не трогать 1С. Сохраните печатную форму в Word или Excel (кнопка сохранения в окне печати) и вставьте картинку туда. Потом сохраните в PDF и отправьте.
Способ 3. Своя внешняя печатная форма или расширение с QR-кодом
Нужен, когда типовой формы мало: свой дизайн счёта, нетиповая конфигурация, особое назначение платежа, несколько расчётных счетов с разными кодами. Делается внешней печатной формой (файл .epf) или расширением конфигурации (.cfe).
Как сгенерировать картинку
В конфигурациях на БСП есть готовая функция УправлениеПечатью.ДанныеQRКода. Она принимает строку, уровень коррекции ошибок и размер, а возвращает двоичные данные картинки. Сторонний сервис для генерации не нужен.
Пример: собираем строку по ГОСТ и кладём картинку в рисунок макета с именем QRКод.
Функция СтрокаQRПоГОСТ(Реквизиты, СуммаРуб, Назначение)
Части = Новый Массив;
Части.Добавить("ST00012");
Части.Добавить("Name=" + БезРазделителя(Реквизиты.Наименование));
Части.Добавить("PersonalAcc=" + Реквизиты.РасчетныйСчет);
Части.Добавить("BankName=" + БезРазделителя(Реквизиты.Банк));
Части.Добавить("BIC=" + Реквизиты.БИК);
Части.Добавить("CorrespAcc=" + Реквизиты.КоррСчет);
Части.Добавить("PayeeINN=" + Реквизиты.ИНН);
Части.Добавить("KPP=" + Реквизиты.КПП);
Части.Добавить("Sum=" + Формат(СуммаРуб * 100, "ЧДЦ=0; ЧН=0; ЧГ=0"));
Части.Добавить("Purpose=" + БезРазделителя(Назначение));
Возврат СтрСоединить(Части, "|");
КонецФункции
Функция БезРазделителя(Знач Текст)
Возврат СокрЛП(СтрЗаменить(Текст, "|", " "));
КонецФункции
Процедура ВывестиQRКод(ОбластьШапки, Реквизиты, СуммаРуб, Назначение)
СтрокаQR = СтрокаQRПоГОСТ(Реквизиты, СуммаРуб, Назначение);
ДанныеQR = УправлениеПечатью.ДанныеQRКода(СтрокаQR, 0, 190);
Если ТипЗнч(ДанныеQR) = Тип("ДвоичныеДанные") Тогда
ОбластьШапки.Рисунки.QRКод.Картинка = Новый Картинка(ДанныеQR);
КонецЕсли;
КонецПроцедуры
Что важно в коде:
- 🔹 сумма переводится в копейки и форматируется без пробелов-разделителей тысяч (
ЧГ=0), иначе банк не поймёт число; - 🔹 вертикальная черта вырезается из наименования и назначения: внутри значения она ломает разбор строки;
- 🔹 проверка типа результата нужна на случай, если компонента генерации не загрузилась — счёт всё равно напечатается, просто без кода.
Как подключить готовую форму
- Включите флаг
Дополнительные отчеты и обработкивАдминистрирование → Печатные формы, отчеты и обработки. - Откройте список дополнительных обработок и добавьте файл
.epf. - Укажите размещение — документ «Счёт покупателю».
- Сохраните. Новая форма появится в меню
Печатьдокумента.
Расширение надёжнее внешней формы, если вы меняете типовой макет: оно переживает обновления, а изменённый макет при обновлении придётся сверять вручную. Загрузка .cfe в конфигураторе и последующее обновление конфигурации базы данных — два отдельных шага.
Сравнение способов
| Способ | Когда подходит | Сумма в коде | Риски |
|---|---|---|---|
| Типовая форма БП 3.0 | Обычный счёт, один-два расчётных счёта | Да | Нет кода при пустом корр. счёте или старом релизе |
| Логотип организации | Статичный QR СБП, ссылка на оплату | Нет | Теряется логотип, код общий на все счета |
| Вставка в Word/PDF | Разовый счёт | Как выдал банк | Ручная работа, легко ошибиться |
| Внешняя форма / расширение | Свой дизайн, нетиповая база | Да | Нужен программист, сопровождение при обновлениях |
QR-коды для разных банков и нескольких расчётных счетов
Формат ГОСТ один для всех банков. Отдельный код «под Сбер» или «под Т-Банк» делать не нужно: любое приложение, которое понимает стандарт, прочитает один и тот же код.
Разница появляется, когда у организации несколько расчётных счетов:
- 🔹 в типовой форме код строится по банковскому счёту, выбранному в документе. Сменили счёт в шапке — после перепечатки поменяется и QR;
- 🔹 если у покупателей есть «свой» банк для оплаты, удобно завести договоры с нужным банковским счётом, чтобы документ подставлял его сам;
- 🔹 в своей печатной форме реквизиты берите из счёта документа, а не из основного счёта организации — иначе код и реквизиты в шапке разойдутся.
Динамические QR-коды СБП (с суммой, через API банка) — отдельная история. Их выдаёт банк по запросу, и подключаются они интеграцией конкретного банка: обработкой или модулем, который банк предоставляет для 1С. Формат такого кода — ссылка на платёжную страницу, а не строка ГОСТ.
Как проверить QR-код до отправки клиенту
Проверка занимает минуту, а ошибка в реквизитах означает деньги, ушедшие не туда или зависшие в банке.
- Сохраните счёт в PDF и откройте файл на экране компьютера.
- Отсканируйте код мобильным банком в режиме оплаты по QR. Дойдите до экрана подтверждения, но не платите.
- Сверьте с шапкой счёта: получатель, ИНН, расчётный счёт, БИК, сумма до копейки, назначение.
- Распечатайте один экземпляр и отсканируйте с бумаги — так видно, не слишком ли мелкий код.
Для проверки содержимого без банка подойдёт любой сканер QR в телефоне: он покажет сырую строку ST00012|Name=..., и вы увидите все поля целиком.
Частые ошибки с QR-кодом в счёте и как их избежать
| Симптом | Причина | Что сделать |
|---|---|---|
| Банк пишет «код не распознан» | Нет обязательного поля, чаще всего корр. счёта | Заполнить банк из классификатора |
| Сумма в банке в 100 раз меньше или «съехала» | В своей форме сумма передана в рублях или с пробелами | Переводить в копейки, формат с ЧГ=0 |
| Вместо названия — «кракозябры» | Кодировка в заголовке не совпадает с реальной | Заголовок ST00012 для строки в UTF-8 |
| Поля «сдвинулись» после назначения | В тексте назначения есть вертикальная черта | Вырезать разделитель из значений |
| Код не сканируется с бумаги | Слишком мелкий или плотный код | Увеличить рисунок, сократить назначение |
| Реквизиты в коде и в шапке разные | Код берёт основной счёт, а в документе выбран другой | Брать реквизиты из документа |
Длинное назначение платежа — недооценённая проблема. Чем больше символов, тем плотнее код и тем хуже он читается с плохой печати. Номер счёта, дата и фраза про НДС — обычно достаточно.
Частые вопросы
Нужен ли QR-код в счёте обязательно?
Сработает ли QR-код в счёте для оплаты с расчётного счёта юрлица?
Меняется ли QR-код, если отредактировать счёт?
Можно ли сделать код с НДС отдельной строкой?
Куда девается QR-код при отправке счёта по почте из 1С?
Источники
- ГОСТ Р 56042-2014 «Стандарты финансовых операций. Двумерные символы штрихового кода для осуществления платежей физических лиц»