Предыстория:
Продолжаем писать свою конфигурацию, в предыдущей статье я описал, как реализовать команду печати //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Кода;
Готово!!!
Спасибо!
УЖАС! Очень плохо сделанный пример. Учит плохому.
* убрать куски закомменченного кода
* вообще не рабочая процедура вне вашего контекста. откуда переменные которые подставляются в строку?
* заменить плюсы на СтрСоединить и СтрШаблон
(0) молодцы! разобрались сами — просветили других!