В начало

Печать квитанции с QR-кодом в 1С CRM

 

            Нужно вывести на печатную форму квитанции на оплату  QR-код в 1С CRM.

            Далее приведена строка для формирования QR-кода. Можно заметить, что строка содержит ряд реквизитов на аглицком языке, разделенных вертикальной строкой.

 

Листинг. Пример строки для формирования QR-кода

ST00011|Name=ООО «Три кита»|PersonalAcc=40702810138250123017|BankName=ОАО

"БАНК"|BIC=044525225|CorrespAcc=30101810400000000225|PayeeINN=6200098765|LastName=Иванов|FirstName=Иван|MiddleName=Иванович|Purpose=Оплата членского взноса|PayerAddress=г.Рязань ул.Ленина д.10 кв.15|Sum=100000

 

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

 

Листинг. Конструкция для заполнения области шаблона по-старинке

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

 

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

QRкод="";

QRСтрока = "ST00011|Name=Наша фирмочка|PersonalAcc=012345678|BankName=|Первый национальный|BIC=1234567|CorrespAcc=234567890|PayeeINN=34567890|LastName=Иванов|FirstName=Иван|MiddleName=Иванович|Purpose=На мутные схемы|PayerAddress=Адрес плательщика|Sum=12300"; //К сумме нужно добавлять 2 нуля в конце без запятых, это типа копейки

ДанныеQRКода = ПолучитьQRкод(QRСтрока, 0, 190); 

 

ОбластьШапка.Области.QRкод.Картинка = Новый Картинка(ДанныеQRКода);

 

Листинг. Конструкция для заполнения области с QR-кодом по-новинке

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

 

//Выводим на печать QR-код, содержащий в себе информацию зашифрованную по УФЭБС.

 

QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа); //Но это не обязательно. Можно самому собрать строку из нужных реквизитов

ТекстОшибки = "";

ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190);

Если Не ПустаяСтрока(ТекстОшибки)

      ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);

КонецЕсли;

КартинкаQRКода = Новый Картинка(ДанныеQRКода);

 

ОбластьШапка.Рисунки.QRКод.Картинка = КартинкаQRКода;

 

 

            Далее приведена проверенная процедура для вывода на печать платежной квитанции с QR-кодом.

 

Листинг. Процедура печати в модуле менеджера документа

Процедура ПечатьКвитанцииНаОплатуГоспошлины(ТабДок, ВхБП) Экспорт

            ТабДок.АвтоМасштаб     = Истина;

            ТабДок.ОриентацияСтраницы  = ОриентацияСтраницы.Портрет;

            ТабДок.ИмяПараметровПечати= "ПАРАМЕТРЫ_ПЕЧАТИ_ПечатьКвитанцииНаОплатуГоспошлины";

            Макет = Справочники.Партнеры.ПолучитьМакет("КвитанцияНаОплатуГосПошлины");

           

            Запрос = Новый Запрос();

            Запрос.Текст = "ВЫБРАТЬ

                           |      CRM_БизнесПроцесс.Ссылка КАК Ссылка

                           |ИЗ

                           |      БизнесПроцесс.CRM_БизнесПроцесс КАК CRM_БизнесПроцесс

                           |ГДЕ

                           |      CRM_БизнесПроцесс.Ссылка = &ВхБП";

            Запрос.УстановитьПараметр("ВхБП", ВхБП);

            Результат = Запрос.Выполнить();

            Выборка = Результат.Выбрать();

                                  

            Если Выборка.Следующий() Тогда

//=========================

// Область "Шапка"

//==========================                   

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

                       

QRСтрока = "ST00011|Name=ООО Организация|PersonalAcc=1234567|BankName=Второй национальный банк |      BIC=2345678|CorrespAcc=34567890|PayeeINN=4567890|

LastName=Иванов|FirstName=Иван|MiddleName=Иванович|Purpose=На закупки всякой хрени|PayerAddress=Адрес плательщика|Sum=12300";//К сумме добавлять 00

                       

 ТекстОшибки = "";

ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190);

Если Не ПустаяСтрока(ТекстОшибки) Тогда

            ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);

            КонецЕсли;

КартинкаQRКода = Новый Картинка(ДанныеQRКода);

ОбластьШапка.Рисунки.QRКод.Картинка = КартинкаQRКода;

 

            ТабДок.Вывести(ОбластьШапка);                               

            КонецЕсли; 

КонецПроцедуры