Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Работа с QR Code при помощи типовой КомпонентаПечатиQRКода          
kosalex Подменю пользователя
сообщение 09.07.19, 13:01
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Доброго времени суток!
Подскажите какие методы есть у типовой КомпонентаПечатиQRКода ? В интернете нигде не могу найти примера. Везде с использованием сторонних библиотек.
Задача у меня следующая, сгенерировать QR-Code и сохранить его в картинку.
В самой конфигурации нет примера работы с этой компонентой.

Petre Подменю пользователя
сообщение 09.07.19, 13:29
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

В БПУ есть пример.
Кроме того, в БПО есть компонента печати штрихкода.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

sava1 Подменю пользователя
сообщение 09.07.19, 13:32
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

ИЗ модуля

    ДвоичныеДанныеКартинки = ГенераторQRКода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);


получить объект

Функция КомпонентаФормированияQRКода(Отказ)
    
    СистемнаяИнформация = Новый СистемнаяИнформация;
    Платформа = СистемнаяИнформация.ТипПлатформы;
    
    ТекстОшибки = НСтр("ru='Не удалось подключить внешнюю компоненту для генерации QR-кода';uk='Не вдалося підключити зовнішній компонент для генерації QR-коду'");
    
    Попытка
        Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиQRКода", "QR") Тогда
            QRCodeGenerator = Новый("AddIn.QR.QRCodeExtension");
        Иначе
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , , , Отказ);
        КонецЕсли
    Исключение
        ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки, , , , Отказ);
    КонецПопытки;
    
    Возврат QRCodeGenerator;
    
КонецФункции


и собственно - вызов

//  //Выводим на печать QR-код, содержащий в себе информацию зашифрованную по УФЭБС
//
//  QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);
//  ТекстОшибки = "";
//  ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190, ТекстОшибки);
//  Если Не ПустаяСтрока(ТекстОшибки)
//      ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
//  КонецЕсли;
//
//  КартинкаQRКода = Новый Картинка(ДанныеQRКода);
//  ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;


Сообщение отредактировал sava1 - 09.07.19, 13:37

kosalex Подменю пользователя
сообщение 09.07.19, 15:24
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Petre @ Сегодня, 14:29 * ,

Нет под рукой БПУ и БПО, есть только УТ 3.1



sava1, ДвоичныеДанныеКартинки = ГенераторQRКода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);

Значения и типы параметров "УровеньКоррекции" и "Размер" где нибудь можно посмотреть?

sava1 Подменю пользователя
сообщение 09.07.19, 15:54
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

выше в коде - вызов -
ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190, ТекстОшибки);


в ут31 смотрите в УправлениеПечатью

kosalex Подменю пользователя
сообщение 09.07.19, 21:08
Сообщение #6

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

sava1 @ Сегодня, 16:54 * ,
Странно, но у меня в этом модуле, да во всей конфигурации УТ 3.1.6.1 нет упоминания о "ДанныеQRКода".

Vladal Подменю пользователя
сообщение 23.07.19, 15:38
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

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Кода = Неопределено Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    Попытка
        ДвоичныеДанныеКартинки = ГенераторQRКода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);
    Исключение
        ЗаписьЖурналаРегистрации(НСтр("ru = 'Формирование QR-кода'", ОбщегоНазначения.КодОсновногоЯзыка()),
            УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;
    
    Возврат ДвоичныеДанныеКартинки;
    
КонецФункции

Функция КомпонентаФормированияQRКода()
    
    ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'");
    
    //--QRCodeGenerator = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("QRCodeExtension", "ОбщийМакет.КомпонентаПечатиQRКода");
    QRCodeGenerator = ПодключитьКомпонентуИзМакета("QRCodeExtension", "КомпонентаПечатиQRКода");
    Если QRCodeGenerator = Неопределено Тогда
        ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
    КонецЕсли;
    
    Возврат QRCodeGenerator;
    
КонецФункции

// Подключает компоненту, выполненную по технологии Native API и COM.
// Компонента должна храниться в макете конфигурации в виде ZIP-архива.
//
// Параметры:
//  Идентификатор   - Строка - идентификатор объекта внешней компоненты.
//  ПолноеИмяМакета - Строка - полное имя макета конфигурации, хранящего ZIP-архив.
//
// Возвращаемое значение:
//  AddIn, Неопределено - экземпляр объекта внешней компоненты или Неопределено, если не удалось создать.
//
// Пример:
//
//  ПодключаемыйМодуль = ОбщегоНазначения.ПодключитьКомпонентуИзМакета(
//      "CNameDecl",
//      "ОбщийМакет.КомпонентаСклоненияФИО");
//
//  Если ПодключаемыйМодуль <> Неопределено Тогда
//      // ПодключаемыйМодуль содержит созданный экземпляр подключенной компоненты.
//  КонецЕсли;
//
//  ПодключаемыйМодуль = Неопределено;
//
Функция ПодключитьКомпонентуИзМакета(Идентификатор, ПолноеИмяМакета) Экспорт

    ПодключаемыйМодуль = Неопределено;
    
    Если Не МакетСуществует(ПолноеИмяМакета) Тогда
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере
                       |из %2
                       |по причине:
                       |Подключение на сервере не из макета запрещено'"),
            Идентификатор,
            ПолноеИмяМакета);
    КонецЕсли;
    
    Местоположение = ПолноеИмяМакета;
    СимволическоеИмя = Идентификатор + "SymbolicName";
    
    Если ПодключитьВнешнююКомпоненту(Местоположение, СимволическоеИмя) Тогда
        
        Попытка
            ПодключаемыйМодуль = Новый("AddIn." + СимволическоеИмя + "." + Идентификатор);
            Если ПодключаемыйМодуль = Неопределено Тогда
                ВызватьИсключение НСтр("ru = 'Оператор Новый вернул Неопределено'");
            КонецЕсли;
        Исключение
            ПодключаемыйМодуль = Неопределено;
            ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
        КонецПопытки;
        
        Если ПодключаемыйМодуль = Неопределено Тогда
            
            ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru = 'Не удалось создать объект внешней компоненты ""%1"", подключенной на сервере
                           |из макета ""%2"",
                           |по причине:
                           |%3'"),
                Идентификатор,
                Местоположение,
                ТекстОшибки);
            
            ЗаписьЖурналаРегистрации(
                НСтр("ru = 'Подключение внешней компоненты на сервере'",
                    КодОсновногоЯзыка()),
                УровеньЖурналаРегистрации.Ошибка,,,
                ТекстОшибки);
            
        КонецЕсли;
        
    Иначе
        
        ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере
                       |из макета ""%2""
                       |по причине:
                       |Метод ПодключитьВнешнююКомпоненту вернул Ложь.'"),
            Идентификатор,
            Местоположение);
        
        ЗаписьЖурналаРегистрации(
            НСтр("ru = 'Подключение внешней компоненты на сервере'",
                КодОсновногоЯзыка()),
            УровеньЖурналаРегистрации.Ошибка,,,
            ТекстОшибки);
        
    КонецЕсли;
    
    Возврат ПодключаемыйМодуль;
    
КонецФункции

// Проверка существования макета по метаданным конфигурации и расширений.
//
// Параметры:
//  ПолноеИмяМакета - Строка - полное имя макета.
//
// Возвращаемое значение:
//  Булево - признак существования макета.
//
Функция МакетСуществует(ПолноеИмяМакета)
    
    Макет = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМакета);
    Если ТипЗнч(Макет) = Тип("ОбъектМетаданных") Тогда
        
        Шаблон = Новый Структура("ТипМакета");
        ЗаполнитьЗначенияСвойств(Шаблон, Макет);
        ТипМакета = Неопределено;
        Если Шаблон.Свойство("ТипМакета", ТипМакета) Тогда
            Возврат ТипМакета <> Неопределено;
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Ложь;
    
КонецФункции

// Возвращает код основного языка конфигурации, например "ru".
//
// Возвращаемое значение:
//  Строка - код языка.
//
Функция КодОсновногоЯзыка() Экспорт
    
    Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
    
КонецФункции

Vladal Подменю пользователя
сообщение 26.07.19, 13:58
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

А вот и обработка с компонентой формирования qr-кода и вызовом функций генерирования картинки
qr-code.zip


av.mironov@mail.... Подменю пользователя
сообщение 06.12.19, 10:00
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Vladal @ 26.07.19, 17:58 * ,
Vladal @ 26.07.19, 17:58 * ,


А пароль на архив?

Макс1С Подменю пользователя
сообщение 06.12.19, 11:14
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

av.mironov@mail.ru @ Сегодня, 10:00 * ,
Пароль выдается только прочитавшим правила

Спасибо сказали: 1Snik, AlexHummer, falconemi, Vladal,

tis Подменю пользователя
сообщение 14.04.20, 15:40
Сообщение #11

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день! Помогите разобраться с выводом QR кода в документ счет.Конфигурация УТП. Нужна ли еще компонента кроме самой обработки qr-code? Или достаточно макета из вашей обработки qr-code? Создаю внешнюю печатную форму счета, добавила в нее макет из обработки и свой макет счета.В макете счета добавляю пустую картинку называю ее QRКод.В Модуль объекта добавляю эти 5 процедур из обработки . Но код не выводиться.Подскажите в чем ошибка?

Vladal Подменю пользователя
сообщение 16.04.20, 23:43
Сообщение #12

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

tis @ 14.04.20, 15:40 * ,

Давайте попробуем разобраться.

В моей УТП этих процедур нет, добавил в ОбщийМодуль, а также макет с компонентой в ОбщиеМакеты.
Соответственно вызов сделал таким:

Функция КомпонентаФормированияQRКода()
    
    ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'");
    
    QRCodeGenerator = ПодключитьКомпонентуИзМакета("QRCodeExtension", "ОбщийМакет.КомпонентаПечатиQRКода");
...
...
Далее. Есть именованная картинка QRКод в макете. Тогда еще проще - к ней можно обращаться по имени.
Убедитесь, что у картинки включен флажок ВыводитьНаПечать. Можно его и программно включить.

Вот пример:
    СтрокаКартинки = ДанныеQRКода(СтрокаСообщения, 2, 400);
    
    ОбластьШапка.Рисунки.QRКод.Картинка = Новый Картинка(СтрокаКартинки);
    ОбластьШапка.Рисунки.QRКод.ВыводитьНаПечать = Истина;
    
    ТабличныйДокумент.Вывести(ОбластьШапка);


Сообщение отредактировал Vladal - 16.04.20, 23:45

Спасибо сказали: roman457, tis,

Almadeya Подменю пользователя
сообщение 28.12.20, 9:56
Сообщение #13

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Из: Рени
Спасибо сказали: 0 раз
Рейтинг: 0

Vladal @ 26.07.19, 13:58 * ,
Цитата(Vladal @ 26.07.19, 13:58) *
А вот и обработка с компонентой формирования qr-кода и вызовом функций генерирования картинки
qr-code.zip

Добрый день! Можно и мне пожалуйста пароль. Уже все мозги сломала в изобретении велосипеда

AlexHummer Подменю пользователя
сообщение 20.02.21, 0:08
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Almadeya @ 28.12.20, 10:56) *
Vladal @ 26.07.19, 13:58 * ,

Добрый день! Можно и мне пожалуйста пароль. Уже все мозги сломала в изобретении велосипеда


Пароль описан в правилах форума.

Спасибо сказали: Vladal,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 15:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!