Имя: Пароль:
1C
1С v8
Кто-то еще использует PDF417?
0 Chameleon1980
 
06.05.25
16:52
Приветствую всех!
Понадобилось тут формировать PDF417.
Ну ок - есть типовая компонента, которая умеет.
Но...
То, что формируется - ничем не читается.
ЧЯДНТ, какие подводные камни я не учел?

ШиринаРисунка = ОбластьМакета.Рисунки.QRКодНомерПоДаннымКлиента.Ширина;
ВысотаРисунка = ОбластьМакета.Рисунки.QRКодНомерПоДаннымКлиента.Высота;

ПараметрыШтрихкода.Ширина                = ШиринаРисунка;
ПараметрыШтрихкода.Высота                = ВысотаРисунка;
ПараметрыШтрихкода.ТипКода = 6;            //    6 - PDF417
ПараметрыШтрихкода.Штрихкод               = ШтрихКод;
ПараметрыШтрихкода.ПрозрачныйФон          = ПрозрачныйФон;

ДанныеQRКода = "";

РезультатОперации = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);

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


P.S.
вот этот сервис формирует немного другой рисунок, который правильно читается.

http://barcode.tec-it.com/barcode.ashx?data=12345678901234567890&code=PDF417&dpi=96
1 Fish
 
гуру
06.05.25
16:57
Если при генерации никаких ошибок нет, то может, что-то с масштабом картинки?

Помнится, если пропорции ШК не соблюсти, то он читаться не будет. Думаю, что это касается любого ШК и QR в том числе.
2 Fish
 
гуру
06.05.25
16:59
(0) А если просто сохранить двоичные данные, как файл картинки вместо вывода в макет, то будет читаться?
3 Chameleon1980
 
06.05.25
17:02
(1) вот и я иногда грешу на это, но иногда прям ересь выводится, иногда вообще, как ЕАН13.
(2) нужно попробовать да.
4 Chameleon1980
 
06.05.25
17:02
(1) я вот за этим и пришел, чтобы кто-то вспомнил, как он крутил параметры.
5 Fish
 
гуру
06.05.25
17:05
(4) Ну я с этим типом дела не имел. Только одномерные - ЕАН13, 128 или QR использовали.
6 Hmster
 
06.05.25
17:05
что такое у тебя "ГенерацияШтрихкода"
7 Fish
 
гуру
06.05.25
17:07
По идее (2) должно отсечь искажения, привнесённые макетом. Если файл будет читаться - значит, надо смотреть параметры рисунка в макете.
Если же нет - надо генерацию ШК копать. Возможно для этого типа ШК какой-то параметр не задан, или наоборот, лишний
8 Fish
 
гуру
06.05.25
17:08
(6) Общий модуль
9 Hmster
 
06.05.25
17:12
(8) я к тому, что в общем модуле может быть зарыт кот в мешке
(0) сам пробовал вызывать компоненту и формировать код?
10 Fish
 
гуру
06.05.25
17:15
(9) Да это из типовых модуль. Там по идее все должно работать  нормально.
11 Chameleon1980
 
06.05.25
17:20
(9) нет - напрямую не пробовал. Вроде, все прозрачно.
12 Chameleon1980
 
06.05.25
17:24
вот два одинаковых кода
почти похоже, но - нет
13 Garykom
 
гуру
06.05.25
17:48
(12) с разной коррекцией ошибок будет разный результат
читаться должны одинаково
14 Chameleon1980
 
06.05.25
17:55
(13)
1. не очень понял.
2. первый не читается, второй - читается.
у меня, к сожалению, нет сканера под рукой, я проверяю сторонними сервисами.
15 Garykom
 
гуру
06.05.25
17:57
(14) проверять надо сканером
например мой смартфон оба не читает никак, сканера под рукой нет, друг одолжил и пока не вернул

wiki:PDF417
PDF417 предусматривает полиномиальное кодирование Рида-Соломона дополнительных данных для восстановления информации. Количество дополнительных КС зависит от уровня коррекции ошибок.
16 Chameleon1980
 
06.05.25
17:58
(15) благодарю.
17 Garykom
 
гуру
06.05.25
17:58
(15)+ Поищи сервис генерации который позволяет уровень коррекции ошибок выставлять
И попробуй сформировать ШК как у компоненты 1С
18 Fish
 
гуру
07.05.25
10:03
В параметрах компоненты 1С, кстати, есть такой параметр:

//  УровеньКоррекции - Число - уровень погрешности изображения, при котором данный QR-код все еще возможно 100%
//                             распознать.
//                     Параметр должен иметь тип целого и принимать одно из 4 допустимых значений:
//                     0 (7 % погрешности), 1 (15 % погрешности), 2 (25 % погрешности), 3 (35 % погрешности).
19 MWWRuza
 
гуру
07.05.25
10:33
А что Вы туда передаете? Может с кодировкой что-то связано, если там русский текст, то может сначала преобразовать в юникоды (utf-8) - ?

А хотя, все, увидел скриншот, там строка цифр.
Тогда, да, дело не в этом.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.