gifts2017

Формирование QR кода, а также дополнительно к нему 141 тип штрих кодов бесплатно!

Опубликовал Иван (Powervalid) в раздел Оборудование - Сканер штрих-кода

Формирование QR кода или любого другого из 141 типов штрих кодов с помощью утилиты, устанавливаемой на машину пользователя.

Качаем утилиту https://github.com/downloads/zint/zint/Setup_Zint_2.4.2.0.exe, а также мануал к ней по желанию https://github.com/downloads/zint/zint/zint_manual_242.pdf.

Допустим по умолчанию утилита установилась по адресу "C:\Program Files (x86)\Zint\".

Для получения картинки QR кода используем функцию ПолучитьКартинкуQRКода, где параметры:

КодируемыйОбъект имеет тип "Строка" (кодируемая фраза), КаталогГенератораШК = "C:\Program Files (x86)\Zint\" (место установки утилиты). Функция возвращает объект Картинка или тип Неопределено. Далее для печати в табличном документе картинки, можно использовать функцию ВывестиQRКодВОбластьМакета, где параметры ОбластьМакета - область макета табличного документа, КартинкаQRКода это картинка возвращенная функцией ПолучитьКартинкуQRКода.

 Функция ПолучитьКартинкуQRКода(КодируемыйОбъект,КаталогГенератораШК) Экспорт
    Перем КартинкаQRКод;
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
    Попытка
        КомандаСистемы("zint -b 58 -o " + ИмяВременногоФайла + " -d '" + КодируемыйОбъект + "'",КаталогГенератораШК);
    Исключение
        Сообщить(ОписаниеОшибки());
           Возврат Неопределено;
    КонецПопытки;
    Попытка
        КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
        Попытка
            УдалитьФайлы(ИмяВременногоФайла);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        Возврат Неопределено;
    КонецПопытки;
    Попытка
        УдалитьФайлы(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Возврат КартинкаQRКод;
КонецФункции

 

Функция ВывестиQRКодВОбластьМакета(ОбластьМакета,КартинкаQRКода) Экспорт
    Для каждого Рисунок Из ОбластьМакета.Рисунки Цикл
        Если Рисунок.Имя = "ШтрихКод" Тогда
            Если ЗначениеЗаполнено(КартинкаQRКода) Тогда
                Рисунок.Картинка = КартинкаQRКода;
            КонецЕсли;    
        КонецЕсли;
    КонецЦикла;
КонецФункции

Если нужно закодировать не QR кодом, а каким нибудь другим эта утилита умеет кодировать 142 типа кода. Подробности в мануале https://github.com/downloads/zint/zint/zint_manual_242.pdf. Функция по получению штрих кода любого типа ниже.

Параметр ТипШтрихКода может имеет либо Строковой тип либо числовой. Главное чтобы этот параметр был от 1 до 142.

   Функция ПолучитьКартинкуШККода(КодируемыйОбъект,КаталогГенератораШК,ТипШтрихКода) Экспорт
    Перем КартинкаQRКод;
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
    Попытка
        КомандаСистемы("zint -b " + ТипШтрихКода +" -o " + ИмяВременногоФайла + " -d '" + КодируемыйОбъект + "'",КаталогГенератораШК);
    Исключение
        Сообщить(ОписаниеОшибки());
           Возврат Неопределено;
    КонецПопытки;
    Попытка
        КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
        Попытка
            УдалитьФайлы(ИмяВременногоФайла);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        Возврат Неопределено;
    КонецПопытки;
    Попытка
        УдалитьФайлы(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Возврат КартинкаQRКод;
КонецФункции

Благодарю за ссылку на чудо утилиту http://infostart.ru/profile/15144/


Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Утилита
.zip 3,40Mb
29.05.12
126
.zip 3,40Mb 126 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. MegaVotl MegaVotl (MegaVotl) 29.05.12 22:44
2. Erne100 (Erne100) 29.05.12 23:09
3. Иван (Powervalid) 30.05.12 05:06
(2) Erne100, QR не понимает, другие не проверял
4. Пуд (Пуд) 30.05.12 14:46
А разве стандартная компонента от 1С не умеет формировать QR? (прощу прошения заранее,если не врубился)
5. Иван (Powervalid) 30.05.12 15:34
6. Пуд (Пуд) 30.05.12 15:37
(5) Powervalid, понятно, зарапортовался.
7. igor sarafanov (ms200999) 31.05.12 08:18
Спасибо! Думаю, пригодится!
8. Erne100 (Erne100) 31.05.12 14:33
(3) Powervalid, очень жаль. Однако всё равно плюс.
9. Андрей (zeek) 04.06.12 11:19
Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.
10. Виталий (nafa) 04.06.12 20:09
Вот здесь:
http://ocvita.ru/content/view/89
тот же самый zint, только в виде ActiveX
+ некоторые исправления по части совместимости с 1С (работает с кирилицей, ЕАН можно давать как 13 знаков и пр)

То есть как обычная 1Совская компонента печати штрихкода, просто вставляем в макет или на форму и все.
mst; CatMix; An-Aleksey; BAMPER; Gisborn; +5 Ответить 1
11. Виталий (nafa) 04.06.12 20:23
(9) zeek,
Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.


Это option_1, там 4 варианта. (это если работать через API / ActiveX). Как через командную строку, не знаю.
12. Иван (Powervalid) 05.06.12 05:52
(9) zeek, в командной строке набири C:\папка до зинт\zint -help.
вывалится список команд, так вот команда --secure=параметр коррекции ошибок
14. Евгений Черкашин (evg61) 19.06.12 11:07
Здравствуйте!
Попробовал получить штрих-код с помощью приведённого здесь кода и получил ошибку:
"Обработка.AAA.Форма.Форма(459)}: Ошибка при вызове конструктора (Картинка): Файл не обнаружен 'C:\Documents and Settings\EZ1\Local Settings\Temp\v8_6D_24.png'
"
Подскажите пожалуйста, в чём может быть причина.
Спасибо!
15. Иван (Powervalid) 19.06.12 11:24
(14) evg61, Утилиту установили? КаталогГенератораШК указали, где утилита установлена? попробуйте еще заменить в коде публикации на эту строку КомандаСистемы("zint -b 58 -o " + """" + ИмяВременногоФайла + """" + " -d " + КодируемыйОбъект,КаталогГенератораШК);
16. Евгений Черкашин (evg61) 19.06.12 14:24
Powervalid, спасибо за подсказку!
Естественно, утилита установлена. Путь к папке установленной утилиты корректно перенесён в текст кода.
Строку изменил, результат тот же...
17. Иван (Powervalid) 19.06.12 15:31
У тебя ошибка скорее всего из-за того, что картинка утилитой не формируется. В командной строке проверял, как отрабатывает утилита? Если нет, проверь, вызываешь командную строку пуск->выполнить cmd. Там пишешь путь до утилиты к примеру C:\Program Files (x86)\zint -b 58 -o c:\test.png -d test, выполняешь смотришь сформировалась ли картинка c:\test.png
18. Евгений Черкашин (evg61) 19.06.12 16:54
Powervalid, спасибо!
Проверил.
Из командной строки запускается, приходится только использовать Progra~1 вместо Program Files а далее открывается окно утилиты, но данные, то есть что кодировать в штрихкод и куда потом сохранить картинку, утилиту не передаются...
Устанавливал из этого файла: Setup_Zint_2.4.3.0
Судя по командной строке окно утилиты открываться не должно, так думаю...
19. Иван (Powervalid) 19.06.12 17:32
(18) evg61, окно утилиты не должно открываться, я ошибся должно быть вот так:C:\Program Files (x86)\zint\zint -b 58 -o c:\test.png -d test (здесь кодируется слово "test", картинка помещается в c:\test.png)
20. Евгений Черкашин (evg61) 19.06.12 19:20
Powervalid, спасибо! Это я понял и написал строку как надо, у меня, кстати, исполняемый модуль не zint, а qtzint. Так установился, почему и спросил про версию инсталляционного модуля. Опять же, я пробовал под ХР, а предлагаемый пример, как понимаю, под семёркой делался. Соответственно, ещё одна коррекция строки. И ещё я заметил, что в документации, то что кодируется - заключается в одиночные кавычки. Всё вышесказанное я учёл, но что то не так... Странно, вообще то... Никто не жаловался, значит пример пошёл с первого предъявления у всех... Буду думать, ещё раз спасибо!
21. Евгений Сущенков (Jonny_wk) 19.06.12 23:02
Спасибо автору, думаю пригодится!
22. Евгений Черкашин (evg61) 20.06.12 10:06
Powervalid, спасибо! Всё работает!
Просто переустановил zint.
Бывает же...
23. Евгений Черкашин (evg61) 20.06.12 10:07
24. Иван (Powervalid) 20.06.12 10:22
(22) evg61, действительно нежданчик
25. Сергей (amaster) 05.07.12 15:46
(10) nafa,

Почему-то не желает региться под вынь 7 - 64
26. Серёжка Шеянов (CepeLLlka) 16.08.12 15:05
При формировании картинок выскакивают эти чёрные окошки.. :( Очень не нравится... может кто-нибудь знает спобоб как их убрать?
27. Серёжка Шеянов (CepeLLlka) 16.08.12 15:20
Заюзал hidcon.exe скачать можно отсюда - http://hostex.org/dl/5b016588c6
В модуле изменил только

Попытка
ЗапуститьПриложение("c:\Program Files\Zint\hidcon.exe zint.exe -b 58 -o " + ИмяВременногоФайла + " --scale=3 -d '" + ТекстШК + "'","c:\program files\zint", Истина);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;

Работать конечно начинает быстрее.. если к примеру печатаешь 10ток доков с ШК, то заметно..
Но всё равно очень долго :(
28. Виталий (nafa) 20.10.12 13:16
(25)
Почему-то не желает региться под вынь 7 - 64

Вот тут про регистрацию ActiveX под Win 7
29. Талыч Sha (talych) 25.02.14 11:45
Кириллицу не поддерживает (( Запускаю с 1С 7.7
30. Талыч Sha (talych) 25.02.14 11:46
Никто Ocvita не прикручивал к 7ке? Был бы благодарен!
31. dskull86 Алексеев (dskull86) 05.01.16 13:14
(14) evg61,
ЗапуститьПриложение("C:\Program Files (x86)\Zint\zint.exe -b 8 -o " + """" + ИмяВременногоФайла + """" + " -d " + КодируемыйОбъект,,Истина);

у меня без параметра "каталогГенератораШК", а после него параметр "ДождатьсяЗавершения"=истина!
это происходит из-за того что пока картинка формируется в секольких долях секунды а функция/процедура уже выполняет другую операцию, картинки как бы еще нет ! параметр "ДождатьсяЗавершения"=истина ждет завершения и после этого выполняется следующая операция

П.С. конечно 141(142) громко сказано, там нумерация не подряд, так что количество не так уж большое
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа