[БСП] Выводим qr-код в печатную форму счета для оплаты в мобильном приложении банка или платежном терминале

29.06.22

Задачи пользователя - Адаптация типовых решений

Используя БСП выведем qr-код в печатную форму счета.

 

В макете добавим картинку.

 

Выбираем любую картинку, для наглядности лучше со штрих-кодом.

 

 

Имя картинки делаем QRКод

Размер картинки: Пропорционально

Линия: нет линии

 

В Модуль печатной формы добавляем две процедуры. Вызываем их перед выводом области в ТабличныйДокумент

 

 

Функция СформироватьПечатнуюФорму(СчетаНаОплату, НаименованиеПФ, ПараметрыВывода = Неопределено) Экспорт
	Результат = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("СчетНаОплату");
	ОбластьШапка			= Макет.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.Заполнить(ПараметрыШапки);

	РеквизитыПлатежа = РеквизитыПлатежаQRКод(ВыборкаСчетаНаОплату);
	ВывестиQRКод(РеквизитыПлатежа, СчетаНаОплату, ОбластьШапка);
	
	Результат.Вывести(ОбластьШапка);
	Возврат Результат;
КонецПроцедуры

Процедура ВывестиQRКод(РеквизитыПлатежа, СчетаНаОплату, ОбластьМакета)
	
	QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);
	
	Если Не ПустаяСтрока(QRСтрока) Тогда
		
		ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190);
		
		Если ТипЗнч(ДанныеQRКода) = Тип("ДвоичныеДанные") Тогда
			КартинкаQRКода = Новый Картинка(ДанныеQRКода);
			ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;
		Иначе
			Шаблон = Нстр("ru = 'Не удалось сформировать QR-код для документа %1.
				|Технические подробности см. в журнале регистрации.'");
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, СчетаНаОплату);
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

Функция РеквизитыПлатежаQRКод(СтруктураДанныхШапки)
	
	РеквизитыПлатежа = Новый Структура;
	РеквизитыПлатежа.Вставить("ТекстПолучателя", СтруктураДанныхШапки.ОрганизацияНаименованиеСокращенное);
	РеквизитыПлатежа.Вставить("НомерСчетаПолучателя", СтруктураДанныхШапки.ОрганизацияРасчетныйСчетНомер);
	РеквизитыПлатежа.Вставить("НаименованиеБанкаПолучателя", СтруктураДанныхШапки.ОрганизацияРасчетныйСчетБанкНаименованиеПолное);
	РеквизитыПлатежа.Вставить("БИКБанкаПолучателя", СтруктураДанныхШапки.ОрганизацияРасчетныйСчетБанкБИК);
	РеквизитыПлатежа.Вставить("СчетБанкаПолучателя", СтруктураДанныхШапки.ОрганизацияРасчетныйСчетБанкКоррСчет);
	РеквизитыПлатежа.Вставить("СуммаЧислом",СтруктураДанныхШапки.Сумма);
	РеквизитыПлатежа.Вставить("НазначениеПлатежа", СтруктураДанныхШапки.НазначениеПлатежа);
	РеквизитыПлатежа.Вставить("ИННПолучателя", СтруктураДанныхШапки.ОрганизацияИНН);
	РеквизитыПлатежа.Вставить("КПППолучателя", СтруктураДанныхШапки.ОрганизацияКПП);
	
	Возврат РеквизитыПлатежа
	
КонецФункции

 

Тестировал: 

1С:Комплексная автоматизация 2 (2.4.13.209)

Платформа 1С:Предприятие 8.3 (8.3.19.1467)

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5163    11    5    

20

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3537    8    0    

27

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    12237    dimanich70    81    

126

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    5652    mrXoxot    11    

106
Отзывы
4. John_d 5764 30.06.22 10:19 Сейчас в теме
(2) Скачал "Библиотека стандартных подсистем", редакция 3.1 (3.1.7.82)
Проверил работает и эта функция:
ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190);
Но 1с рекомендует использовать эту функцию:
ДанныеQRКода = ГенерацияШтрихкода.ДанныеQRКода(QRСтрока, 0, 190);
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. quazare 3733 29.06.22 12:45 Сейчас в теме
Это вы из типовой подчерпнули?
2. Totoro 569 29.06.22 14:13 Сейчас в теме
(0) Если брать БСП с 3.1.5, то

ОбщийМодуль.УправлениеПечатью
// Устарела. Следует использовать ГенерацияШтрихкода.ДанныеQRКода
// или ГенерацияШтрихкода.ИзображениеШтрихкода.
Функция ДанныеQRКода(QRСтрока, УровеньКоррекции, Размер) Экспорт

// Устарела. Следует использовать УправлениеПечатьюРФ.ФорматнаяСтрокаУФЭБС.
Функция ФорматнаяСтрокаУФЭБС(ДанныеДокумента) Экспорт
3. John_d 5764 29.06.22 14:21 Сейчас в теме
(2) я тестировал в КА 2, там не последняя БСП.
В принципе понятно куда копать, если используете последнюю БСП.
4. John_d 5764 30.06.22 10:19 Сейчас в теме
(2) Скачал "Библиотека стандартных подсистем", редакция 3.1 (3.1.7.82)
Проверил работает и эта функция:
ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190);
Но 1с рекомендует использовать эту функцию:
ДанныеQRКода = ГенерацияШтрихкода.ДанныеQRКода(QRСтрока, 0, 190);
6. Totoro 569 30.06.22 10:44 Сейчас в теме
(4) Да, в БСП 3.1.7 проверяется наличие модуля "ГенерацияШтрихкода" (он есть в составе БСП) и вызывается функция из него вместо УправлениеПечатью. Для обратной совместимости.

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

Можно, например, добавить замечание в конце статьи.
5. quazare 3733 30.06.22 10:28 Сейчас в теме
В свое время я описывал возможность применения подсистемы БСП - ГенерацияШтрихкода - https://infostart.ru/1c/articles/1356920/

Может, кому-то будет полезна.....
7. jan-pechka 419 04.07.22 11:54 Сейчас в теме
Добрый день.

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