Реализация печати QR кодов "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

Рассмотрим, как реализовать печать QR кодов с помощью механизмов БСП.

Предыстория:

Продолжаем писать свою конфигурацию, в предыдущей статье я описал, как реализовать команду печати //infostart.ru/public/1134141/, теперь я опишу, как на макете печатной формы вывести QR код.

Задача: Есть документ доверенность, нужно вывести на печатную форму документа QR код.

Решение:

На макете создаем обычный рисунок и назовем его "РисунокQR". Находим функцию, где происходит заполнение макета, находим нужную область макета, где будет выводиться QR код. Пишем:

QRСтрока = ВернутьСтрокуДляКодирования(Результат);
Функция ВернутьСтрокуДляКодирования(Результат)
SFormat = "ST";
CodeVersion = "0001";
Символ_ = "|";

CodePage = 2; //UTF

Name = "Name=" + Name;
PersonalAcc ="PersonalAcc=" + PersonalAcc;
BankName = "BankName=" + BankName;
BIC = "BIC=" + BIC;
CorrespAcc = "CorrespAcc=" + CorrespAcc;
//Sum = "Sum=" + СуммаВКопейках; //в копейках, т.е не 100,52, а 10052
PayeeINN = "PayeeINN=" + PayeeINN;
///////////////////////////////////////////////////////////////////////////////
LastName = "LastName=" + Результат.Партнер;
Purpose = "Purpose=" + "Г."+Результат.Магазин.Город+", "+Результат.Магазин.Адрес+"";
Sum = "Sum=" +Формат(Результат.Сумма * 100,"ЧГ=0");
//FirstName = "FirstName=" + ИмяПлательщика;
//MiddleName = "MiddleName=" + ОтчествоПлательщика;
//payerAddress ="payerAddress=" + АдресПлательщика;
//PersAcc = "PersAcc="+ НомерДоговораСПлательщиком;
//PaymPeriod = "PaymPeriod="+ Формат(ТекущаяДата(), "ДФ=MM.yyyy"); // расчетный период вида ММГГ MM.yy;

Рез = SFormat + CodeVersion + CodePage + Символ_ +
Name + Символ_ +
PersonalAcc + Символ_ +
BankName + Символ_ +
BIC + Символ_ +
CorrespAcc + Символ_ +
//Sum + Символ_ +
PayeeINN + Символ_ +
LastName +  Символ_ +
Purpose +  Символ_ +
Sum;
//FirstName +  Символ_ +
//MiddleName +  Символ_ +
//payerAddress +  Символ_ +
//PersAcc +  Символ_ +
//PaymPeriod;


//Возврат UTF8(Рез);
Возврат Рез;

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

Функция "ВернутьСтрокуДляКодирования" собирает строку, из чего состоит сам QR код, подробней можно посмотреть в статье //infostart.ru/public/604539/.

Теперь у нас есть строка содержимое QR кода, далее задействуем механизм БСП, чтобы получить "Рисунок с двоичными данными"

РисунокДвоичный = УправлениеПечатью.ДанныеQRКода(QRСтрока, 1, 120);

В функцию "ДанныеQRКода" мы передаем: Нашу QR строку, Уровень коррекции, размер.

Создадим картинку из двоичных данных и присвоим её нашему рисунку

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

Готово!!!

3 Comments

  1. Screamer_legenda

    Спасибо!

    Reply
  2. A_Max

    УЖАС! Очень плохо сделанный пример. Учит плохому.

    * убрать куски закомменченного кода

    * вообще не рабочая процедура вне вашего контекста. откуда переменные которые подставляются в строку?

    * заменить плюсы на СтрСоединить и СтрШаблон

    Reply
  3. Rustig

    (0) молодцы! разобрались сами — просветили других!

    Reply

Leave a Comment

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