На данный момент очень часто нужно вывести в печатную форму QR-код.
Показываю как на примере типового кода из УТ11 это сделать.
Шаг 1
Для этого нужно скопировать из УТ11 ОбщийМакет.КомпонентаПечатиQRКода.
Я брал из УТ 11.4
Если по каким то причинам не можете скопировать макет из УТ, то данный макет прилагаю ниже в обработке "КомпонентаПечатиQRКода.epf".
Так же в обработке ""КомпонентаПечатиQRКода.epf" есть кнопка "Пример печати".
Шаг 2
Скопировать себе в модуль 5 процедур:
/////////////////////////////////////////////////////////////////////////////
// Вывод QR-кода
Функция КомпонентаФормированияQRКода()
ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'");
QRCodeGenerator = ПодключитьКомпонентуИзМакета("QRCodeExtension", "ОбщийМакет.КомпонентаПечатиQRКода");
Если QRCodeGenerator = Неопределено Тогда
#Если Клиент Тогда
Сообщить(ТекстОшибки);
#КонецЕсли
КонецЕсли;
Возврат QRCodeGenerator;
КонецФункции
Функция ПодключитьКомпонентуИзМакета(Идентификатор, ПолноеИмяМакета) Экспорт
ПодключаемыйМодуль = Неопределено;
Местоположение = ПолноеИмяМакета;
СимволическоеИмя = Идентификатор + "SymbolicName";
Если ПодключитьВнешнююКомпоненту(Местоположение, СимволическоеИмя) Тогда
Попытка
ПодключаемыйМодуль = Новый("AddIn." + СимволическоеИмя + "." + Идентификатор);
Если ПодключаемыйМодуль = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Оператор Новый вернул Неопределено'");
КонецЕсли;
Исключение
ПодключаемыйМодуль = Неопределено;
ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Если ПодключаемыйМодуль = Неопределено Тогда
ТекстОшибки = НСтр("ru = 'Не удалось создать объект внешней компоненты ""%1"", подключенной на сервере
|из макета ""%2"",
|по причине:
|%3'");
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Подключение внешней компоненты на сервере'",
КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ТекстОшибки);
КонецЕсли;
Иначе
ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере
|из макета ""%2""
|по причине:
|Метод ПодключитьВнешнююКомпоненту вернул Ложь.'");
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Подключение внешней компоненты на сервере'",
КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ТекстОшибки);
КонецЕсли;
Возврат ПодключаемыйМодуль;
КонецФункции
Функция КодОсновногоЯзыка() Экспорт
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
КонецФункции
// Возвращает двоичные данные для формирования 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Код(ДанныеПечати, ОбластьМакета)
QRСтрока = ДанныеПечати;
Если Не ПустаяСтрока(QRСтрока) Тогда
ДанныеQRКода = ДанныеQRКода(QRСтрока, 0, 190);
Если ТипЗнч(ДанныеQRКода) = Тип("ДвоичныеДанные") Тогда
КартинкаQRКода = Новый Картинка(ДанныеQRКода);
ОбластьМакета.Рисунки["QRКод"].Картинка = КартинкаQRКода;
Иначе
ТекстСообщения = "Не удалось сформировать QR-код для документа";
#Если Клиент Тогда
Сообщить(ТекстСообщения);
#КонецЕсли
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Вывод QR-кода
/////////////////////////////////////////////////////////////////////////////
Шаг 3
В макет, в котором вам нужен QR-код вставляете пустую картинку и называете ее QRКод (название может быть любым, но в примере кода используется это название).
Шаг 4
Печатаете QR-код
Процедура КнопкаПечатьНажатие(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ВыводQR");
ОблQRКод = Макет.ПолучитьОбласть("ОбластьQRКод");
ТекстСсылки = "dobromir.kz"; //Ваша ссылка, можно передавать все что хотите
ВывестиQRКод(ТекстСсылки ,ОблQRКод);
ТабДок.Вывести(ОблQRКод);
ТабДок.Показать();
КонецПроцедуры
Пример области макета:
Пример результата работы:
Итог
Обработка "КомпонентаПечатиQRКода.epf" идет в качестве примера, так же в ней есть макет "КомпонентаПечатиQRКода".
Все что написано, можно реализовать самостоятельно, описания выше достаточно.
Можно использовать в любых конфигурациях с обычными формами. Код никуда не обращается.
Тестировалась на:
Конфигурации для Казахстана
Зарплата и Управление Персоналом для Казахстана, редакция 2.0, разработка для Казахстана: «1С-Рейтинг» (2.0.17.7)
"Управление торговлей для Казахстана", редакция 2.2, локализация для Казахстана: "1С-Рейтинг", "1С-Сапа" (2.2.17.4)
Бухгалтерия для Казахстана, редакция 2.0, разработка для Казахстана: «1С-Рейтинг» (2.0.29.3)
Управление торговым предприятием для Казахстана, редакция 2.0, разработка для Казахстана: «1С-Рейтинг» (2.0.18.1)
Для РФ
"Управление торговлей", редакция 10.3 (10.3.48.2)
Управление производственным предприятием, редакция 1.3 (1.3.113.4)