Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 22:49

Генерация QR-кода и вывод на макет печати

Автор Funt432286, 20 авг 2023, 13:39

0 Пользователей и 1 гость просматривают эту тему.

Funt432286

Но почему-то не выводится QR-код на макете, выдает вот такую ошибку:
{Ф_Доработки_08_23 Обработка.Ф_ПечатьЭтикеток.МодульОбъекта(61)}: Ошибка при вызове метода контекста (СоздатьQRКод): Ошибка внешней компоненты
Вот код модуля объекта
// ******************** Генерация QR-кода *********************************
функция ПолучитьГенераторQRкода()
   
    лМакетКомпоненты = ПолучитьОбщийМакет("КомпонентаПечатиQRКода");
    лАдрес=ПоместитьВоВременноеХранилище(лМакетКомпоненты);
    ГенераторQRкода=неопределено;
    попытка
        Если ПодключитьВнешнююКомпоненту(лАдрес,"QR") тогда
             ГенераторQRкода=новый("AddIn.QR.QRCodeExtension");
        иначе
            сообщить("Не удалось подключить компоненту генерации QR кода");       
        конецЕсли;
    исключение
        сообщить(ОписаниеОшибки());   
    КонецПопытки;
    возврат Генератор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Строка, УровеньКоррекции, Размер);
    Исключение
        сообщить(ОписаниеОшибки());
    КонецПопытки;
   
    Возврат ДвоичныеДанныеКартинки;
   
КонецФункции

Вот код формы
&НаСервере
Процедура СоздатьЭтикеткуНаСервере()
   
    ТабДокЭтикетка = Новый ТабличныйДокумент;
    ТабДокЭтикетка.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    Макет = Обработки.Ф_ПечатьЭтикеток_1.ПолучитьМакет("Ф_МакетЭтикетки");
    Область = Макет.ПолучитьОбласть("ПолеЭтикетки");
   
    ДокОбъект = РеквизитФормыВЗначение("Объект");
   
      ДанныеQRКода = ДокОбъект.ПолучитьQRкод("123456", 0, 20);
      Если ДанныеQRКода=неопределено тогда
      возврат;
      КонецЕсли;

      КартинкаQRКода = Новый Картинка(ДанныеQRКода);
      Область.Рисунки.QR_code.Картинка = КартинкаQRКода;
   
    ТабДокЭтикетка.Вывести(Область);
   
КонецПроцедуры


&НаКлиенте
Процедура СоздатьЭтикетку(Команда)
   
    СоздатьЭтикеткуНаСервере();
   
КонецПроцедуры

Если не ставить проверку, то картинка возвращается пустой

Кто знает в чем прикол, подскажите пожалуйста!

antoneus

Может, размер ей не нравится? "Если минимально возможный размер изображения больше этого параметра - код сформирован не будет."
Ну, кажется, 20 пикселей - это прямо очень скромно.

Funt432286

antoneus, сработало, поставил 90! значит размер! Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск