QR-код для оплаты в счёте 1С: встроенная печать, доработка макета и строка по ГОСТ

· 9 мин

Содержание

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

Покупатель наводит камеру банковского приложения на куар код в счёте — и реквизиты, сумма и назначение платежа подставляются без ручного ввода. Меньше опечаток в БИК и расчётном счёте, быстрее приходят деньги.

Что проверить в типовой конфигурации до доработки

Дорабатывать конфигурацию стоит только после того, как вы убедились, что штатная печать не справляется. Проверка занимает пять минут.

  1. Откройте любой проведённый счёт покупателю и нажмите Печать → Счет на оплату.
  2. Посмотрите на блок с реквизитами: QR-код обычно стоит рядом с банковскими реквизитами или в шапке.
  3. Если кода нет, откройте карточку организации и её банковский счёт. Проверьте, что заполнены БИК, корреспондентский счёт, номер расчётного счёта и наименование банка.
  4. Сравните релиз конфигурации (Справка → О программе) с актуальным. На старом релизе кода может просто не быть.

Без любого из обязательных реквизитов программа не может собрать корректную строку платежа и пропускает код.

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

Когда нужна доработка

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

Способ 1. Внешняя печатная форма с QR-кодом

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

Как подключить

  1. Включите механизм: Администрирование → Печатные формы, отчеты и обработки, флажок Дополнительные отчеты и обработки.
  2. Перейдите по ссылке Дополнительные отчеты и обработки в том же разделе.
  3. Нажмите Добавить из файла и выберите .epf.
  4. Проверьте, что в карточке обработки в таблице размещения указан нужный документ — счёт покупателю.
  5. Запишите карточку. Новая команда появится в меню Печать документа.

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

Откуда взять обработку

  • 🛠 Написать самому или заказать программисту: каркас — копия типовой формы счёта плюс картинка с кодом.
  • 🛠 Взять у партнёра 1С, который сопровождает базу.
  • 🛠 Скачать готовую — только после проверки кода: откройте файл в Конфигураторе и посмотрите модуль объекта.

Внешняя форма или расширение

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

Расширения доступны с платформы 8.3.6. Для типовой базы на поддержке выбирайте внешнюю форму или расширение — не снимайте конфигурацию с поддержки ради одной картинки.

Способ 2. Как в 1С сделать куар код в счёте через макет

Неважно, внешняя форма или расширение: QR-код — это картинка, которую код программы кладёт в заранее подготовленное место макета.

Подготовка макета в Конфигураторе

  1. Откройте макет печатной формы — табличный документ.
  2. В области с банковскими реквизитами вставьте объект «Рисунок» через меню Таблица → Рисунки → Картинка.
  3. Задайте рисунку имя в свойствах, например QRКод. По этому имени программа найдёт его в области.
  4. Размер — квадрат примерно 25–35 мм. Меньше 20 мм камеры телефонов читают хуже.
  5. В свойстве размера картинки поставьте режим, при котором картинка вписывается без искажения пропорций.

Пользовательский макет без Конфигуратора

В типовых конфигурациях на БСП макет можно править в режиме Предприятия: Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. Найдите макет счёта, откройте и сохраните изменённую копию.

Так удобно двигать уже имеющийся QR-код, менять его размер или убирать. Добавить код «с нуля» в пользовательском макете не получится: картинку заполняет программный модуль, а он в пользовательском макете не меняется.

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

Код заполнения картинки

В конфигурациях на БСП картинку QR-кода генерирует общий модуль УправлениеПечатью, функция ДанныеQRКода. Сигнатуру уточните в модуле вашей версии БСП: в типичном варианте параметры — строка, уровень коррекции ошибок (0–3) и размер в пикселях.

// ОбластьРеквизиты — область макета, где лежит рисунок с именем QRКод
СтрокаQR = СтрокаПлатежаГОСТ(ДанныеСчета);
ДанныеКартинки = УправлениеПечатью.ДанныеQRКода(СтрокаQR, 1, 200);

Если ТипЗнч(ДанныеКартинки) = Тип("ДвоичныеДанные") Тогда
    ОбластьРеквизиты.Рисунки.QRКод.Картинка = Новый Картинка(ДанныеКартинки);
Иначе
    // Генерация не удалась: удаляем пустой рисунок, чтобы не печатать рамку
    ОбластьРеквизиты.Рисунки.Удалить(ОбластьРеквизиты.Рисунки.QRКод);
КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьРеквизиты);

Уровень коррекции 1 соответствует уровню M — около 15% повреждённого кода восстанавливается. Для счетов, которые печатают на офисном принтере, этого достаточно.

Строка платежа по ГОСТ: из чего состоит QR-код в счете

Банковские приложения понимают формат ГОСТ Р 56042-2014. Это обычная текстовая строка: служебный заголовок и пары «ключ=значение» через вертикальную черту.

ST00012|Name=ООО Ромашка|PersonalAcc=40702810900000012345|BankName=АО Банк|BIC=044525000|CorrespAcc=30101810400000000225|PayeeINN=7701234567|KPP=770101001|Sum=1250000|Purpose=Оплата по счету № 15 от 03.10, НДС не облагается

Заголовок

ST0001 — признак формата и версия стандарта. Последняя цифра — кодировка текста:

ЦифраКодировкаКогда использовать
1windows-1251Если генератор работает в этой кодировке
2UTF-8Основной вариант для 1С 8.3
3КОИ8-РНа практике почти не встречается

Обязательные и полезные поля

ПолеЧто содержитОбязательное
NameНаименование получателяДа
PersonalAccРасчётный счёт, 20 цифрДа
BankNameНаименование банкаДа
BICБИК, 9 цифрДа
CorrespAccКорреспондентский счётДа
PayeeINNИНН получателяНет, но без него многие банки просят ввод вручную
KPPКПП получателяНет
SumСумма в копейках, без разделителейНет, но без суммы покупатель введёт её сам
PurposeНазначение платежаНет

Сумма в поле Sum указывается в копейках. Счёт на 12 500,00 ₽ — это Sum=1250000. Передадите рубли — покупатель увидит к оплате 125 ₽.

Функция сборки строки

Функция СтрокаПлатежаГОСТ(Данные)

    Части = Новый Массив;
    Части.Добавить("ST00012");
    Части.Добавить("Name=" + ЧистоеЗначение(Данные.Получатель));
    Части.Добавить("PersonalAcc=" + ЧистоеЗначение(Данные.РасчетныйСчет));
    Части.Добавить("BankName=" + ЧистоеЗначение(Данные.Банк));
    Части.Добавить("BIC=" + ЧистоеЗначение(Данные.БИК));
    Части.Добавить("CorrespAcc=" + ЧистоеЗначение(Данные.КоррСчет));
    Части.Добавить("PayeeINN=" + ЧистоеЗначение(Данные.ИНН));

    Если ЗначениеЗаполнено(Данные.КПП) Тогда
        Части.Добавить("KPP=" + ЧистоеЗначение(Данные.КПП));
    КонецЕсли;

    Копейки = Окр(Данные.СуммаДокумента * 100, 0);
    Части.Добавить("Sum=" + Формат(Копейки, "ЧГ=0; ЧН=0"));
    Части.Добавить("Purpose=" + ЧистоеЗначение(Данные.Назначение));

    Возврат СтрСоединить(Части, "|");

КонецФункции

Функция ЧистоеЗначение(Значение)
    // Вертикальная черта — разделитель полей, внутри значений её быть не должно
    Возврат СокрЛП(СтрЗаменить(Строка(Значение), "|", " "));
КонецФункции

Проверка арифметики: 12 500,00 × 100 = 1 250 000. Формат с ЧГ=0 уберёт пробел-разделитель групп, иначе строка получится 1 250 000 и банк её не разберёт.

Назначение платежа держите коротким — до 210 символов, как в платёжке. Длинная строка делает код плотнее: на печати точки сливаются, и телефон его не читает.

Как проверить, что QR-код считывается

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

Порядок проверки

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

Что смотреть на экране банка

  • 🔍 Кириллица отображается нормально, без «кракозябр».
  • 🔍 Сумма совпадает с итогом счёта, копейки на месте.
  • 🔍 Назначение не обрезано и не содержит лишних символов.
  • 🔍 БИК и счёт подставились, приложение не требует ввести их вручную.

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

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

Ошибки при выводе QR-кода в счёт и что с ними делать

Диагностика: выберите симптом

Если код пропал после обновления

  • 🔄 Пользовательский макет устарел: верните стандартный макет и перенесите изменения заново.
  • 🔄 Расширение перестало применяться: посмотрите Администрирование → Печатные формы, отчеты и обработки → Расширения, нет ли у него ошибки при подключении.
  • 🔄 Внешняя форма обращается к реквизиту, который переименовали в новом релизе: команда печати упадёт с ошибкой — пусть программист сверит обращения к полям документа.

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

Нужно ли согласовывать QR-код с банком?
Нет. Формат открытый, стандарт ГОСТ Р 56042-2014. Банк получателя в генерации кода не участвует, код читает банк плательщика.
Можно ли добавить QR-код в счёт в 1С без программиста?
Если релиз свежий и реквизиты заполнены, типовая печать выведет его сама. Свою картинку добавить без кода нельзя: строку платежа собирает программный модуль.
Попадёт ли QR-код в счёт, отправленный по почте из 1С?
Да. Код — часть печатной формы, он сохраняется в PDF вместе с остальным счётом.
Подходит ли такой QR-код для оплаты через СБП?
Нет. Платёжный код СБП получают через банк, он ведёт на платёжную ссылку. Код по ГОСТ только переносит реквизиты в обычный перевод.
Что делать, если у организации несколько расчётных счетов?
В строку попадает счёт, выбранный в документе. Проверьте, что в счёте покупателю указан нужный банковский счёт организации, — и код сформируется по нему.

Источники

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