Генерация QRCode без внешних компонент и подключения к Интернету



Для генерации QR-кода нужны были внешние компоненты, программы или доступ к интернет, а почему бы не сгенерировать QRCode javascript-ом? В таком виде он будет доступен всем платформам, которые в состоянии отобразить HTML документ. Проверил на 1С  8.1-8.3 и на последней мобильной платформе.

Потребовалось передать настройки инициализации с 1С 8.1 на мобильное устройство — решил воспользоваться QR-кодом для этого. Поискал готовое решение — не нашел подходящего. Сделал — решил поделиться.

Используется библиотека javascript QRCode.js: http://davidshimjs.github.io/qrcodejs/

Для 8.1 обработка использует шаблон в макете, из которого создается страничка. В javascript создана функция, которая вызывается из 1С при изменнии строки, которую требуется закодировать. Там все просто. Выкладываю в виде обработки.

Сложности начались в мобильном приложении. Там макеты могут быть только двух типов: или ДвоичныеДанные, или ТабличныйДокумент — нам уж совсем не подходит. Пришлось шаблон страницы размещать в коде 1С. Также нам недоступен в мобильном приложении реквизит Документ расширения поля формы для поля HTML документа. Поэтому пришлось отказаться от вызовов javascript и переформировывать страницу при изменении строки, которую требуется закодировать. Выкладываю в виде конфигурации.

Спасибо за внимание.

P.S. кстати, можно обойтись без jQuery — для этого нужно её вызовы заменить на нативные в QRCode.js — это сократит код страницы на 100 Кб =))

12 Comments

  1. CheBurator

    лучше бы написали 1. отдельно генерацию кода на чистом макете (печформе), отдельно 2.преобразование его в картинку

    Reply
  2. dattk

    (1) CheBurator,

    я поделился подходом — ссылка на библиотеку JS в сообщении, можно сделать все что угодно, всем с форматом не угодишь =), а мобильное приложение сделано в форме конфигурации для удобства тестирования. опубликовал конфигурацию, залил на мобильное устройство и проверил.

    Смысл генерации QR-кода у меня был в отображении его на экране для передачи строки информации — поэтому не макеты и не печформы.

    Reply
  3. dattk

    Нашел ошибку при генерации длинной строки на русском языке. Ошибка была в qrcode.min.js, потом на гитхабе увидел различие между полной версией qrcode.js и qrcode.min.js.

    Рекомендую использовать полную версию библиотеки qrcode.js в шаблоне и смотреть Issues и Pull requests при возникновении ошибок у вас с библиотекой в дальнейшем.

    Reply
  4. Alien_job

    Тут уважаемый minimajack уж выкладывал такую штуку, правда очень скромно. Работает отлично

    http://forum.infostart.ru/forum24/topic63560/message1301558/#message1301558

    Reply
  5. dattk

    (4) Alien_job,

    жаль, что не нашёл, а изобретал велосипед =(, спасибо за ссылку!

    Reply
  6. CheBurator

    (3) да вы что…? оказывается для генерации QR без ВК надо использовать что-то вместо ВК…

    😉

    Reply
  7. утюгчеловек
    да вы что…? оказывается для генерации QR без ВК надо использовать что-то вместо ВК…

    (6) CheBurator,

    Ничего удивительного. Генерить QR-код из пустоты умеют только волшебники.

    И даже им нужна по крайней мере мана.

    Reply
  8. Orgalit

    Как раз то, что было давно нужно. Спасибо!

    Reply
  9. Xershi

    (7) утюгчеловек, так я глянул много кода вшито, портировать его на 1С наверно долго будет, а использовать готовую компоненту проще всего) Кстати на скприпте аж в 2009 это написали.

    Reply
  10. CheBurator

    (7) на клюшках тыщу лет назад умели генерить EAN без шрифтов, ВК и прочих внешних инструментов — чисто на возможностях мокселя.

    Принципиальную проблему сгенерить QR например на том же самом мокселе — не вижу…

    Reply
  11. Xershi

    (10) CheBurator, так вопрос же не в подмене, а в портировании кода! Портируйте код все вам похлопаем в ладоши, друдоемко его разобрать. Но если бы деньги платили был бы живее интерес!

    Reply
  12. CheBurator

    нафига код портировать если это так трудоемко? м.б. имеет смысл разобраться что к чему и написать код? хотя, конечно, нафига…

    Reply

Leave a Comment

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