Имя: Пароль:
1C
1С v8
Компонента печати 1С QRCode. Странный глюк. Помогите разобраться
0 arsik
 
гуру
26.06.20
10:41
Стандартная компонента печати от 1С (native), используется в толстом клиенте (на УФ такое же поведение).
Засовываем туда длинную строку (допустим символов 200) результат - https://i.imgur.com/oE3sLIa.png
Сам штрихкод маленький, большие поля, сканером не читается.
Кто решал такую проблему?
1 RomanYS
 
26.06.20
10:47
(0) код покажи и свойства картинки
2 arsik
 
гуру
26.06.20
11:03
(1) Код стандартный. Вот свойства из компоненты перед получением изображения.
https://i.imgur.com/Ed0J4ow.png
Какие свойства картинки нужны? В (0) есть размер.
Во сути компонента не вписывает ШК в переданный размер, а выводит маленький ШК + большие поля.
3 NorthWind
 
26.06.20
11:05
может, слишком громоздкий код для выбранного разрешения и размера?
4 RomanYS
 
26.06.20
11:10
(2) В стандартный код передается требуемый размер ШК, у картинки в макете есть размеры и свойство Пропорционально
5 RomanYS
 
26.06.20
11:11
*(4) свойство РазмерКартирнки (Реальный/Пропорционально/....)
6 arsik
 
гуру
26.06.20
11:16
(5) Без разницы, хоть реальный, хоть пропорционально - результат одинаковый. Компонентой возвращается под переданный размер. Но с большими пустыми полями, в (0) стрелочкой показано.
7 arsik
 
гуру
26.06.20
11:24
(3) Ну с коротким кодом выходит нормальная картинка.
Я конечно нашел один вариант, но он мне не нравится. Можно компоненте размер картинки указать раза в 4-5 больше реального и в свойствах указать "Пропорционально" - но это как я сказал мне не нравится. Во первых картинка тяжелая получается, ну и это неправильно.
Нестандартная компонента (не нативная) выводит все нормально.
8 RomanYS
 
26.06.20
11:25
(6) у меня никаких полей нет
https://i.imgur.com/n4GmWum.png

Процедура КнопкаВыполнитьНажатие(Кнопка)
    ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(ПолеВвода1, 0, 190);
    Если НЕ ДанныеQRКода = Неопределено Тогда
        КартинкаQRКода = Новый Картинка(ДанныеQRКода);
        ЭлементыФормы.ПолеКартинки1.Картинка = КартинкаQRКода;
    КонецЕСли;
КонецПроцедуры
9 arsik
 
гуру
26.06.20
11:30
(8) Версия компоненты какая?
10 RomanYS
 
26.06.20
11:32
(9) без понятия. Весь код здесь. Конфигурация БП2
11 arsik
 
гуру
26.06.20
11:34
(10) Я так полагаю, это старый вариант компоненты, он работал нормально
12 RomanYS
 
26.06.20
11:38
(11) возможно. Никаких версий нигде не нашел (ни в свойствах компоненты в отладчике, ни ни в свойствах выгруженной из макета dll)
...
        Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиQRКода", "QR") Тогда
            QRCodeGenerator = Новый("AddIn.QR.QRCodeExtension");
...
13 arsik
 
гуру
26.06.20
12:47
Отправил ошибку в 1С.
14 arsik
 
гуру
30.06.20
15:25
Короче разрешился вопрос. Может кому будет интересно.
Вот ответ от 1С:
Это не ошибка.
Учитывая плотность данных и размер поля, так и должно генерироваться.
Размер поля 160x140 размер генерируемого QR 72x72, то есть размер элемента такого QR 1 пиксел (большего размера нацело просто он не влезет).
То есть, в такой размер больше особо и не впишешь. Естественно, что при таких условиях (особенно после печати) читаемость будет низкая. Но учитывая нагруженность этого QR не уверен, что и 2-х пикселей на элемент будет достаточно. Если это должно быть что-то типа платежек банка, то имеент смысл делать их достаточно большими, чтобы могло прочитаться большинством сканеров.


По сути так и есть.
Но в старой версии (из манифеста компоненты 1CQRCodeWin64_005.dll) картинка возвращалась без полей - 72х72.
В новой версии возвращается картинка под размер поля (160х140) , но в нее вписан QR 72х72.
При размещении на ТабличномПоле со свойством Размер картинки: Пропорционально
В первом варианте будет нормально читаться, а во втором нет. (смотри картинку)

https://i.imgur.com/htWCOOJ.png

Короче стало понятно что в нашем случае нам нужно передать в компоненту не реальный размер поля, а минимальные размеры QR из свойств компоненты (в (2) это видно МинимальнаяВысотаКода, МинимальнаяШиринаКода), тогда QR получится без полей.
Но лучше конечно такое свойство добавить в компоненту.
15 arsik
 
гуру
06.07.20
11:53
Ну что много плюсов фирме 1С. Добавили свойство в компоненту печати ШК "УбратьЛишнийФон". Теперь с этим свойством все работает как должно.
https://i.imgur.com/KzKx3PR.png