Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Доброго времени суток! Подскажите какие методы есть у типовой КомпонентаПечатиQRКода ? В интернете нигде не могу найти примера. Везде с использованием сторонних библиотек. Задача у меня следующая, сгенерировать QR-Code и сохранить его в картинку. В самой конфигурации нет примера работы с этой компонентой.
СистемнаяИнформация = Новый СистемнаяИнформация; Платформа = СистемнаяИнформация.ТипПлатформы;
ТекстОшибки = НСтр("ru='Не удалось подключить внешнюю компоненту для генерации QR-кода';uk='Не вдалося підключити зовнішній компонент для генерації QR-коду'");
Попытка Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиQRКода", "QR") Тогда QRCodeGenerator = Новый("AddIn.QR.QRCodeExtension"); Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , , , Отказ); КонецЕсли Исключение ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки, , , , Отказ); КонецПопытки;
Возврат QRCodeGenerator;
КонецФункции
и собственно - вызов
// //Выводим на печать QR-код, содержащий в себе информацию зашифрованную по УФЭБС // // QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа); // ТекстОшибки = ""; // ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190, ТекстОшибки); // Если Не ПустаяСтрока(ТекстОшибки) // ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки); // КонецЕсли; // // КартинкаQRКода = Новый Картинка(ДанныеQRКода); // ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;
Группа: Местный
Сообщений: 373
Из: Slovensko
Спасибо сказали: 79 раз
Рейтинг: 67.3
kosalex @ 09.07.19, 14:01
, Вопрос решился?
В БСП есть процедура генерации QR-кодов. Хотя когда-то давно вставлял код на JavaScript, встроенном в поле HTML-документа и его дергал для получения .bmp-картинки. Её-то и подставлял в печатную форму.
Вот пример, отвязанный от БСП. А сама компонента находится в общем макете КомпонентаПечати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Кода = Неопределено Тогда Возврат Неопределено; КонецЕсли;
ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'");
//--QRCodeGenerator = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("QRCodeExtension", "ОбщийМакет.КомпонентаПечатиQRКода"); QRCodeGenerator = ПодключитьКомпонентуИзМакета("QRCodeExtension", "КомпонентаПечатиQRКода"); Если QRCodeGenerator = Неопределено Тогда ОбщегоНазначения.СообщитьПользователю(ТекстОшибки); КонецЕсли;
Возврат QRCodeGenerator;
КонецФункции
// Подключает компоненту, выполненную по технологии Native API и COM. // Компонента должна храниться в макете конфигурации в виде ZIP-архива. // // Параметры: // Идентификатор - Строка - идентификатор объекта внешней компоненты. // ПолноеИмяМакета - Строка - полное имя макета конфигурации, хранящего ZIP-архив. // // Возвращаемое значение: // AddIn, Неопределено - экземпляр объекта внешней компоненты или Неопределено, если не удалось создать. // // Пример: // // ПодключаемыйМодуль = ОбщегоНазначения.ПодключитьКомпонентуИзМакета( // "CNameDecl", // "ОбщийМакет.КомпонентаСклоненияФИО"); // // Если ПодключаемыйМодуль <> Неопределено Тогда // // ПодключаемыйМодуль содержит созданный экземпляр подключенной компоненты. // КонецЕсли; // // ПодключаемыйМодуль = Неопределено; // Функция ПодключитьКомпонентуИзМакета(Идентификатор, ПолноеИмяМакета) Экспорт
ПодключаемыйМодуль = Неопределено;
Если Не МакетСуществует(ПолноеИмяМакета) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере |из %2 |по причине: |Подключение на сервере не из макета запрещено'"), Идентификатор, ПолноеИмяМакета); КонецЕсли;
Если ПодключитьВнешнююКомпоненту(Местоположение, СимволическоеИмя) Тогда
Попытка ПодключаемыйМодуль = Новый("AddIn." + СимволическоеИмя + "." + Идентификатор); Если ПодключаемыйМодуль = Неопределено Тогда ВызватьИсключение НСтр("ru = 'Оператор Новый вернул Неопределено'"); КонецЕсли; Исключение ПодключаемыйМодуль = Неопределено; ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки;
Если ПодключаемыйМодуль = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось создать объект внешней компоненты ""%1"", подключенной на сервере |из макета ""%2"", |по причине: |%3'"), Идентификатор, Местоположение, ТекстОшибки);
ЗаписьЖурналаРегистрации( НСтр("ru = 'Подключение внешней компоненты на сервере'", КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
ЗаписьЖурналаРегистрации( НСтр("ru = 'Подключение внешней компоненты на сервере'", КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
КонецЕсли;
Возврат ПодключаемыйМодуль;
КонецФункции
// Проверка существования макета по метаданным конфигурации и расширений. // // Параметры: // ПолноеИмяМакета - Строка - полное имя макета. // // Возвращаемое значение: // Булево - признак существования макета. // Функция МакетСуществует(ПолноеИмяМакета)
Макет = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМакета); Если ТипЗнч(Макет) = Тип("ОбъектМетаданных") Тогда
Шаблон = Новый Структура("ТипМакета"); ЗаполнитьЗначенияСвойств(Шаблон, Макет); ТипМакета = Неопределено; Если Шаблон.Свойство("ТипМакета", ТипМакета) Тогда Возврат ТипМакета <> Неопределено; КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
// Возвращает код основного языка конфигурации, например "ru". // // Возвращаемое значение: // Строка - код языка. // Функция КодОсновногоЯзыка() Экспорт
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0
Добрый день! Помогите разобраться с выводом QR кода в документ счет.Конфигурация УТП. Нужна ли еще компонента кроме самой обработки qr-code? Или достаточно макета из вашей обработки qr-code? Создаю внешнюю печатную форму счета, добавила в нее макет из обработки и свой макет счета.В макете счета добавляю пустую картинку называю ее QRКод.В Модуль объекта добавляю эти 5 процедур из обработки . Но код не выводиться.Подскажите в чем ошибка?
Далее. Есть именованная картинка QRКод в макете. Тогда еще проще - к ней можно обращаться по имени. Убедитесь, что у картинки включен флажок ВыводитьНаПечать. Можно его и программно включить.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!