Формирование 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)int».

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

КодируемыйОбъект имеет тип «Строка» (кодируемая фраза), КаталогГенератораШК = «C:Program Files (x86)int» (место установки утилиты). Функция возвращает объект Картинка или тип Неопределено. Далее для печати в табличном документе картинки, можно использовать функцию Вывести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/

32 Comments

  1. MegaVotl

    Спасибо!

    Reply
  2. Erne100

    Кириллицу понимает?

    Reply
  3. Powervalid

    (2) Erne100, QR не понимает, другие не проверял

    Reply
  4. Пуд

    А разве стандартная компонента от 1С не умеет формировать QR? (прощу прошения заранее,если не врубился)

    Reply
  5. Powervalid

    (4) Пуд, не умеет

    Reply
  6. Пуд

    (5) понятно, зарапортовался.

    Reply
  7. ms200999

    Спасибо! Думаю, пригодится!

    Reply
  8. Erne100

    (3) очень жаль. Однако всё равно плюс.

    Reply
  9. zeek

    Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.

    Reply
  10. nafa

    Вот здесь:

    http://ocvita.ru/content/view/89

    тот же самый zint, только в виде ActiveX

    + некоторые исправления по части совместимости с 1С (работает с кирилицей, ЕАН можно давать как 13 знаков и пр)

    То есть как обычная 1Совская компонента печати штрихкода, просто вставляем в макет или на форму и все.

    Reply
  11. nafa

    (9) zeek,

    Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.

    Это option_1, там 4 варианта. (это если работать через API / ActiveX). Как через командную строку, не знаю.

    Reply
  12. Powervalid

    (9) zeek, в командной строке набири C:папка до зинтzint -help.

    вывалится список команд, так вот команда —secure=параметр коррекции ошибок

    Reply
  13. evg61

    Здравствуйте!

    Попробовал получить штрих-код с помощью приведённого здесь кода и получил ошибку:

    «Обработка.AAA.Форма.Форма(459)}: Ошибка при вызове конструктора (Картинка): Файл не обнаружен ‘C:Documents and SettingsEZ1Local SettingsTempv8_6D_24.png’

    »

    Подскажите пожалуйста, в чём может быть причина.

    Спасибо!

    Reply
  14. Powervalid

    (14) evg61, Утилиту установили? КаталогГенератораШК указали, где утилита установлена? попробуйте еще заменить в коде публикации на эту строку КомандаСистемы(«zint -b 58 -o » + «»»» + ИмяВременногоФайла + «»»» + » -d » + КодируемыйОбъект,КаталогГенератораШК);

    Reply
  15. evg61

    Powervalid, спасибо за подсказку!

    Естественно, утилита установлена. Путь к папке установленной утилиты корректно перенесён в текст кода.

    Строку изменил, результат тот же…

    Reply
  16. Powervalid

    У тебя ошибка скорее всего из-за того, что картинка утилитой не формируется. В командной строке проверял, как отрабатывает утилита? Если нет, проверь, вызываешь командную строку пуск->выполнить cmd. Там пишешь путь до утилиты к примеру C:Program Files (x86)zint -b 58 -o c: est.png -d test, выполняешь смотришь сформировалась ли картинка c: est.png

    Reply
  17. evg61

    Powervalid, спасибо!

    Проверил.

    Из командной строки запускается, приходится только использовать Progra~1 вместо Program Files а далее открывается окно утилиты, но данные, то есть что кодировать в штрихкод и куда потом сохранить картинку, утилиту не передаются…

    Устанавливал из этого файла: Setup_Zint_2.4.3.0

    Судя по командной строке окно утилиты открываться не должно, так думаю…

    Reply
  18. Powervalid

    (18) evg61, окно утилиты не должно открываться, я ошибся должно быть вот так:C:Program Files (x86)zintzint -b 58 -o c: est.png -d test (здесь кодируется слово «test», картинка помещается в c: est.png)

    Reply
  19. evg61

    Powervalid, спасибо! Это я понял и написал строку как надо, у меня, кстати, исполняемый модуль не zint, а qtzint. Так установился, почему и спросил про версию инсталляционного модуля. Опять же, я пробовал под ХР, а предлагаемый пример, как понимаю, под семёркой делался. Соответственно, ещё одна коррекция строки. И ещё я заметил, что в документации, то что кодируется — заключается в одиночные кавычки. Всё вышесказанное я учёл, но что то не так… Странно, вообще то… Никто не жаловался, значит пример пошёл с первого предъявления у всех… Буду думать, ещё раз спасибо!

    Reply
  20. Jonny_wk

    Спасибо автору, думаю пригодится!

    Reply
  21. evg61

    Powervalid, спасибо! Всё работает!

    Просто переустановил zint.

    Бывает же…

    Reply
  22. evg61

    Автору спасибо!

    Reply
  23. Powervalid

    (22) evg61, действительно нежданчик

    Reply
  24. amaster

    (10) nafa,

    Почему-то не желает региться под вынь 7 — 64

    Reply
  25. CepeLLlka

    При формировании картинок выскакивают эти чёрные окошки.. 🙁 Очень не нравится… может кто-нибудь знает спобоб как их убрать?

    Reply
  26. CepeLLlka

    Заюзал hidcon.exe скачать можно отсюда — http://hostex.org/dl/5b016588c6

    В модуле изменил только

    Попытка

    ЗапуститьПриложение(«c:Program Filesinthidcon.exe zint.exe -b 58 -o » + ИмяВременногоФайла + » —scale=3 -d ‘» + ТекстШК + «‘»,»c:program fileszint», Истина);

    Исключение

    Сообщить(ОписаниеОшибки());

    Возврат Неопределено;

    КонецПопытки;

    Работать конечно начинает быстрее.. если к примеру печатаешь 10ток доков с ШК, то заметно..

    Но всё равно очень долго 🙁

    Reply
  27. nafa

    (25)

    Почему-то не желает региться под вынь 7 — 64

    Вот тут про регистрацию ActiveX под Win 7

    Reply
  28. talych

    Кириллицу не поддерживает (( Запускаю с 1С 7.7

    Reply
  29. talych

    Никто Ocvita не прикручивал к 7ке? Был бы благодарен!

    Reply
  30. dskull86

    (14) evg61,

    ЗапуститьПриложение(«C:Program Files (x86)intzint.exe -b 8 -o » + «»»» + ИмяВременногоФайла + «»»» + » -d » + КодируемыйОбъект,,Истина);

    у меня без параметра «каталогГенератораШК», а после него параметр «ДождатьсяЗавершения«=истина!

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

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

    Reply
  31. envv

    Подскажите , на УФ работает данная обработка или нет?

    Reply
  32. sml

    (32) на УФ есть встроенная в 1С ОбщийМакет.КомпонентаПечатиQRКода (есть как БП2, так и в БП3, в остальных не смотрел)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *