QR-код в счет на оплату. Альфа-авто 5.1

Клиент попросил в счете на оплату выводить QR-код, по которому клиент мог бы легко оплатить этот счет.

Честно говоря, я был немного не в теме, какими инструментами выводиться QR-код и в каком формате.

Поэтому прочитал статью на Инфостарте по добавлению QR-код в УТ. Но она касалась общей методики добавления таких кодов, а не именно кодов для оплаты.

Поэтому прочитал еще и другую статью на Инфостарте по непосредственно печати счета с QR-кодом с платежными реквизитами из Альфа-авто.

Я не стал скачивать эту обработку за 3см, потому что там написали, что она не все платежные реквизиты выводит в QR-код. Там я почерпнул, что за основу можно взять БП3.

На самом деле все еще проще.

Платежный QR-код — это просто строка вида:

ST00012|Name=Индивидуальный Предприниматель Иванов Иван Иванович|PersonalAcc=408*****************|BankName=Сбербанк России ПАО|BIC=044******|CorrespAcc=3010****************|Sum=10899000|Purpose=Оплата по счету № МЛ00000168 от 13.07.2021. Сумма 108990-00. Без налога (НДС).

Её можно сформировать и самостоятельно, без каких-либо сложных библиотек и потом подставить в QR-код вместо гиперссылки.

Но я не знал об этом заранее, поэтому потянул почти всю логику из БП3. Можете сделать проще.

Я добавил в конфигурацию модуль _QRКод, он собран из различных источников:

Из модуля УправлениеПечатьюРФ копируем все процедуры, основная это ФорматнаяСтрокаУФЭБС. При этом также нужно добавить другие процедуры, в т.ч. из других модулей.

Функцию QRКодРеквизитыПлатежа копирую из модуля ПечатьТорговыхДокументов, но не всю, а только для получения QR строки.

Также в модуле присутствует блок процедур из статьи по добавлению QR в УТ.

Компоненту перенес через внешнюю обработку из общего макета БП3 в общий макет Альфа-авто:

Для начала вывел ссылку на mail.ru:

//вывод образца заполнения платёжного поручения
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета"); 
...
//Осипов QRККод 2021-07-13 +++
ТекстСсылки = "http://mail.ru"; //Ваша ссылка, можно передавать все что хотите
_QRКод.ВывестиQRКод(ТекстСсылки ,ОбластьМакета);
//Осипов QRККод 2021-07-13 +++
ТабДокумент.Вывести(ОбластьМакета);

Всё работает. По QR переходит на mail.ru:

Далее написал процедуру заполнения параметров QR-строки оплаты по документу:

//вывод образца заполнения платёжного поручения
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
...
//Осипов QRККод 2021-07-13 +++
QRСтрока = _QRКод.QRСтрокаСчетаНаОплату(ЭтотОбъект.Ссылка); //"http://mail.ru"; //Ваша ссылка, можно передавать все что хотите
_QRКод.ВывестиQRКод(QRСтрока, ОбластьМакета);
//Осипов QRККод 2021-07-13 +++
ТабДокумент.Вывести(ОбластьМакета);

Проверить QR можно, например, на сайте проверки QR Сбербанка.

У меня возникла некторая проблема, т.к. в 1С под пользователем стояла защита на вывод табличных документов, в итоге я не мог существенно увеличить QR-код, чтобы со скриншота экрана он нормально распознавался.

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

Забавный момент был в том, что вместо номера счета я подставлял сначала его наименование, в результате чего валидатор от Сбербанка ругался на некорректный формат.

Среда: Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ, редакция 5.1 (5.1.20.05)

Объем факт: 2 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. Осип Сергеев:

    гениально, и монеты на инфостарте в сохранности!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *