QR-код для оплаты в счёте 1С 8.3: стандартная форма, логотип и своя обработка

· 9 мин

Содержание

В 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. Проверьте реквизиты организации

  1. Откройте Главное → Организации и карточку своей организации.
  2. Убедитесь, что заполнены полное наименование, ИНН и КПП.
  3. Проверьте, что у организации указан основной банковский счёт.

Шаг 2. Проверьте банковский счёт и банк

  1. В карточке организации откройте банковские счета и нужный расчётный счёт.
  2. Номер счёта — 20 цифр, без пробелов.
  3. Банк выбран из классификатора, у него заполнены БИК и корреспондентский счёт.

Если у банка пустой корр. счёт, QR-код не сформируется или будет нечитаемым — это одно из пяти обязательных полей. Обычно помогает загрузка классификатора банков: в списке банков есть команда подбора из классификатора, она подтягивает актуальные БИК и корр. счёт.

Шаг 3. Создайте и напечатайте счёт

  1. Продажи → Счета покупателям, создайте документ.
  2. Заполните контрагента, товары или услуги, проверьте, что в шапке выбран нужный банковский счёт.
  3. Нажмите Печать → Счёт на оплату.

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

Если кода в форме нет

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

В УНФ и УТ 11 печатные формы счёта устроены иначе, и набор настроек отличается. Принцип тот же: QR строится из реквизитов банковского счёта организации, поэтому начинайте с проверки банка и корр. счёта.

Способ 2. Статичный QR-код картинкой через логотип организации

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

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

  1. Получите картинку QR-кода. Статичный код СБП берут в интернет-банке (раздел приёма платежей по QR), ссылку на оплату — у платёжного сервиса. Сохраните в PNG.
  2. Откройте карточку организации, раздел Логотип и печать.
  3. Загрузите файл в поле логотипа.
  4. Напечатайте счёт и проверьте, что код читается.

Ограничения способа:

  • 🔹 код один на все счета — без суммы и номера счёта;
  • 🔹 он займёт место логотипа (если логотип нужен, этот путь не подходит);
  • 🔹 картинку масштабирует макет, поэтому проверьте размер после печати.

Вставка в уже готовый файл

Если 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), иначе банк не поймёт число;
  • 🔹 вертикальная черта вырезается из наименования и назначения: внутри значения она ломает разбор строки;
  • 🔹 проверка типа результата нужна на случай, если компонента генерации не загрузилась — счёт всё равно напечатается, просто без кода.

Как подключить готовую форму

  1. Включите флаг Дополнительные отчеты и обработки в Администрирование → Печатные формы, отчеты и обработки.
  2. Откройте список дополнительных обработок и добавьте файл .epf.
  3. Укажите размещение — документ «Счёт покупателю».
  4. Сохраните. Новая форма появится в меню Печать документа.

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

Сравнение способов

СпособКогда подходитСумма в кодеРиски
Типовая форма БП 3.0Обычный счёт, один-два расчётных счётаДаНет кода при пустом корр. счёте или старом релизе
Логотип организацииСтатичный QR СБП, ссылка на оплатуНетТеряется логотип, код общий на все счета
Вставка в Word/PDFРазовый счётКак выдал банкРучная работа, легко ошибиться
Внешняя форма / расширениеСвой дизайн, нетиповая базаДаНужен программист, сопровождение при обновлениях
Какой QR-код вам нужен в счёте?

QR-коды для разных банков и нескольких расчётных счетов

Формат ГОСТ один для всех банков. Отдельный код «под Сбер» или «под Т-Банк» делать не нужно: любое приложение, которое понимает стандарт, прочитает один и тот же код.

Разница появляется, когда у организации несколько расчётных счетов:

  • 🔹 в типовой форме код строится по банковскому счёту, выбранному в документе. Сменили счёт в шапке — после перепечатки поменяется и QR;
  • 🔹 если у покупателей есть «свой» банк для оплаты, удобно завести договоры с нужным банковским счётом, чтобы документ подставлял его сам;
  • 🔹 в своей печатной форме реквизиты берите из счёта документа, а не из основного счёта организации — иначе код и реквизиты в шапке разойдутся.

Динамические QR-коды СБП (с суммой, через API банка) — отдельная история. Их выдаёт банк по запросу, и подключаются они интеграцией конкретного банка: обработкой или модулем, который банк предоставляет для 1С. Формат такого кода — ссылка на платёжную страницу, а не строка ГОСТ.

Как проверить QR-код до отправки клиенту

Проверка занимает минуту, а ошибка в реквизитах означает деньги, ушедшие не туда или зависшие в банке.

  1. Сохраните счёт в PDF и откройте файл на экране компьютера.
  2. Отсканируйте код мобильным банком в режиме оплаты по QR. Дойдите до экрана подтверждения, но не платите.
  3. Сверьте с шапкой счёта: получатель, ИНН, расчётный счёт, БИК, сумма до копейки, назначение.
  4. Распечатайте один экземпляр и отсканируйте с бумаги — так видно, не слишком ли мелкий код.
Что сверить на экране оплаты
Выполнено: 0 / 5

Для проверки содержимого без банка подойдёт любой сканер QR в телефоне: он покажет сырую строку ST00012|Name=..., и вы увидите все поля целиком.

Частые ошибки с QR-кодом в счёте и как их избежать

СимптомПричинаЧто сделать
Банк пишет «код не распознан»Нет обязательного поля, чаще всего корр. счётаЗаполнить банк из классификатора
Сумма в банке в 100 раз меньше или «съехала»В своей форме сумма передана в рублях или с пробеламиПереводить в копейки, формат с ЧГ=0
Вместо названия — «кракозябры»Кодировка в заголовке не совпадает с реальнойЗаголовок ST00012 для строки в UTF-8
Поля «сдвинулись» после назначенияВ тексте назначения есть вертикальная чертаВырезать разделитель из значений
Код не сканируется с бумагиСлишком мелкий или плотный кодУвеличить рисунок, сократить назначение
Реквизиты в коде и в шапке разныеКод берёт основной счёт, а в документе выбран другойБрать реквизиты из документа

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

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

Нужен ли QR-код в счёте обязательно?
Нет. Счёт на оплату — не первичный документ, требований к QR-коду в нём нет. Код добавляют для удобства покупателя, чтобы он не переписывал реквизиты.
Сработает ли QR-код в счёте для оплаты с расчётного счёта юрлица?
Зависит от банка покупателя. Многие банковские приложения для бизнеса читают коды ГОСТ, но не все. Реквизиты в шапке счёта всё равно должны быть полными.
Меняется ли QR-код, если отредактировать счёт?
Да, при повторной печати код строится заново по текущей сумме и реквизитам. Ранее отправленный PDF со старым кодом сам не обновится — его нужно переотправить.
Можно ли сделать код с НДС отдельной строкой?
В стандарте нет отдельного поля для суммы НДС в обычных платежах. Сумму налога указывают текстом в назначении платежа, например «в т.ч. НДС 2 500,00».
Куда девается QR-код при отправке счёта по почте из 1С?
Никуда: письмо из 1С прикладывает печатную форму файлом, и код остаётся в нём. Выбирайте вложение в PDF: в нём картинка не съедет, в отличие от редактируемых форматов.

Источники

  • ГОСТ Р 56042-2014 «Стандарты финансовых операций. Двумерные символы штрихового кода для осуществления платежей физических лиц»