Есть самописный документ задача такова что бы по нажатию кнопки печать формировалась печатная форма qr кода на основании реквизита1 и реквизита2 из этого документа как это сделать?
(1) если есть компонента. Пишите код склеив 2 значения.
Если нету, качаете например мою разработку QR-код 2 в 1 (обычная и управляемая форма). И она вам по вашему алгоритма сгенерирует.
Процедура ВывестиQRКод(QRСтрока, ОбластьМакета, ИмяРисунка="QRКод", Ссылка=Неопределено) Экспорт
Если ПустаяСтрока(QRСтрока) Тогда Возврат; КонецЕсли;
ДанныеQRКода=УправлениеПечатнымиФормамиСервер.ДанныеQRКода(QRСтрока, 0, 190);
Если ТипЗнч(ДанныеQRКода)=Тип("ДвоичныеДанные") Тогда
//ОбластьМакета.Рисунки.QRКод.Картинка=Новый Картинка(ДанныеQRКода);
ОбластьМакета.Рисунки[ИмяРисунка].Картинка=Новый Картинка(ДанныеQRКода);
Иначе
Шаблон = Нстр("ru = 'Не удалось сформировать QR-код для документа %1.
|Технические подробности см. в журнале регистрации.'");
ТекстСообщения=СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
Функция КомпонентаФормированияQRКода()
ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'");
QRCodeGenerator=ПодключитьКомпонентуИзМакета("QRCodeExtension", "ОбщийМакет.КомпонентаПечатиQRКода");
Если QRCodeGenerator=Неопределено Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
КонецЕсли;
Возврат QRCodeGenerator;
КонецФункции
// Возвращает двоичные данные для формирования 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Кода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);
Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'Формирование QR-кода'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Возврат ДвоичныеДанныеКартинки;
КонецФункции
Показать
Где: QRСтрока - значение Реквизита1+Реквизита2 (как там их надо указать)
(3)
по первой ссылке вы будете генерировать кому то 3 сек бикоины(лол) при каждом формировании qr-кода
по второй ссылке с вас поросят денежку
по третьей надо учитывать, что вы в открытом виде будете передавать информацию гугл, а что там она с ней делает дальше хз
и возникает вопрос зачем все это, когда генерация qr кода встроена в стандартные конфигурации 1с еще во времена динозавров