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

Оборудование - Сканер штрих-кода

Формирование 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Код;
КонецФункции

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


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

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

См. также

Комментарии
1. MegaVotl MegaVotl (MegaVotl) 29.05.12 22:44 Сейчас в теме
2. Erne100 (Erne100) 209 29.05.12 23:09 Сейчас в теме
3. Иван (Powervalid) 86 30.05.12 05:06 Сейчас в теме
(2) Erne100, QR не понимает, другие не проверял
4. Пуд (Пуд) 30.05.12 14:46 Сейчас в теме
А разве стандартная компонента от 1С не умеет формировать QR? (прощу прошения заранее,если не врубился)
5. Иван (Powervalid) 86 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) 209 31.05.12 14:33 Сейчас в теме
(3) Powervalid, очень жаль. Однако всё равно плюс.
9. Андрей (zeek) 45 04.06.12 11:19 Сейчас в теме
Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.
10. Виталий (nafa) 627 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) 627 04.06.12 20:23 Сейчас в теме
(9) zeek,
Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.


Это option_1, там 4 варианта. (это если работать через API / ActiveX). Как через командную строку, не знаю.
12. Иван (Powervalid) 86 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) 86 19.06.12 11:24 Сейчас в теме
(14) evg61, Утилиту установили? КаталогГенератораШК указали, где утилита установлена? попробуйте еще заменить в коде публикации на эту строку КомандаСистемы("zint -b 58 -o " + """" + ИмяВременногоФайла + """" + " -d " + КодируемыйОбъект,КаталогГенератораШК);
16. Евгений Черкашин (evg61) 19.06.12 14:24 Сейчас в теме
Powervalid, спасибо за подсказку!
Естественно, утилита установлена. Путь к папке установленной утилиты корректно перенесён в текст кода.
Строку изменил, результат тот же...
17. Иван (Powervalid) 86 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) 86 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) 86 20.06.12 10:22 Сейчас в теме
(22) evg61, действительно нежданчик
25. Сергей (amaster) 05.07.12 15:46 Сейчас в теме
(10) nafa,

Почему-то не желает региться под вынь 7 - 64
26. Серёжка Шеянов (CepeLLlka) 22 16.08.12 15:05 Сейчас в теме
При формировании картинок выскакивают эти чёрные окошки.. :( Очень не нравится... может кто-нибудь знает спобоб как их убрать?
27. Серёжка Шеянов (CepeLLlka) 22 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) 627 20.10.12 13:16 Сейчас в теме
(25)
Почему-то не желает региться под вынь 7 - 64

Вот тут про регистрацию ActiveX под Win 7
29. Талыч Sha (talych) 16 25.02.14 11:45 Сейчас в теме
Кириллицу не поддерживает (( Запускаю с 1С 7.7
30. Талыч Sha (talych) 16 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) громко сказано, там нумерация не подряд, так что количество не так уж большое
Оставьте свое сообщение