Для генерации используется компонента типовой конфигурации УТ11, встроенная в общий макет «КомпонентаПечатиQRКода».
Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).
Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).
Создайте внешнюю обработку и из конфирурации УТ 11.4 перетащите в нее общий макет "КомпонентаПечатиQRКода".
В модуле объекта:
1 Создаем функцию получить генератор QR кода из макета:
функция ПолучитьГенераторQRкода()
лМакетКомпоненты=ПолучитьМакет("КомпонентаПечатиQRКода");
лАдрес=ПоместитьВоВременноеХранилище(лМакетКомпоненты);
ГенераторQRкода=неопределено;
попытка
Если ПодключитьВнешнююКомпоненту(лАдрес,"QR") тогда
ГенераторQRкода=новый("AddIn.QR.QRCodeExtension");
иначе
сообщить("Не удалось подключить компоненту генерации QR кода");
конецЕсли;
исключение
сообщить(ОписаниеОшибки());
КонецПопытки;
возврат ГенераторQRкода;
конецФункции
2 Создаем функцию получить двоичные данные QR-кода:
// Возвращает двоичные данные для формирования QR кода.
//
// Параметры:
// QRСтрока - Строка - данные, которые необходимо разместить в QR-коде.
//
// УровеньКоррекции - Число - уровень погрешности изображения при котором данный QR-код все еще возможно 100%
// распознать.
// Параметр должен иметь тип целого и принимать одно из 4 допустимых значений:
// 0(7% погрешности), 1(15% погрешности), 2(25% погрешности), 3(35% погрешности).
//
// Размер - Число - определяет длину стороны выходного изображения в пикселях.
// Если минимально возможный размер изображения больше этого параметра - код сформирован не будет.
//
// Возвращаемое значение:
// ДвоичныеДанные - буфер, содержащий байты PNG-изображения QR-кода.
//
// Пример:
//
// // Выводим на печать QR-код, содержащий в себе информацию зашифрованную по УФЭБС.
//
// QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);
// ТекстОшибки = "";
// ДанныеQRКода = получитьQRкод(QRСтрока, 0, 190);
// Если ДанныеQRКода=неопределено тогда
// возврат;
// КонецЕсли;
//
// КартинкаQRКода = Новый Картинка(ДанныеQRКода);
// ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;
//
Функция получитьQRкод(QRСтрока, УровеньКоррекции, Размер) экспорт
УстановитьОтключениеБезопасногоРежима(Истина);
ГенераторQRКода = ПолучитьГенераторQRкода();
Если ГенераторQRКода = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Попытка
ДвоичныеДанныеКартинки = ГенераторQRКода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);
Исключение
сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат ДвоичныеДанныеКартинки;
КонецФункции
В модуле формы:
&НаСервере
Процедура получитьQRкодНаСервере()
QRкод="";
об=РеквизитФормыВЗначение("Объект");
если СтрДлина(сокрлп(объект.Текст))=0 тогда сообщить("Нет данных для генерации QR-кода"); возврат; конецЕсли;
ДанныеQRКода = об.получитьQRкод(Объект.Текст, 0, 190);
QRкод =ПоместитьВоВременноеХранилище(Новый Картинка(ДанныеQRКода));
КонецПроцедуры
&НаКлиенте
Процедура получитьQRкод(Команда)
получитьQRкодНаСервере();
КонецПроцедуры
Тестировалось на платформе 1С:Предприятие 8.3 (8.3.14.1565), конфигурации: БП (3.0.70.25), БП(2.0.66.77), УНФ (1.6.13.58), УТ(11.4.6.200), УТ (10.3.38.1).