Формирование 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 не будет опубликован. Обязательные поля помечены *