Генерация QR-кода (управляемая форма, обычное и управляемое приложение)



Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).
  • Файл не содержит и не использует никакие модули БСП;
  • Код открыт;
  • Для генерации используется компонента из типовой конфигурации 1С, которая встроена в макет обработки "_Компонента_QR_Код".
  • Позволяет генерировать QR-коды как мышкой в форме так и программно через обращение к функции обработки.

Модуль содержит готовую функцию для программного создания QR-кодов и автоматического сохранения в файл для встраивания в вашу конфигурацию:

_QR_Код_Получить(пТекст, пУровень_Коррекции, пРазмер_Пикселей, пФайл_Имя_Полное = Неопределено)

Генерации QR-кодов успешно работает с многострочным текстом на различных языках (см. скрины).

Для многострочных объёмных текстов необходимо увеличивать количество пикселей.

Можно встроить в типовые конфигурации во внешние обработки.

Отсканировать полученные qr-коды можно с помощью мобильного приложения 1С: //infostart.ru/public/394624/

Для использования в обычном приложении необходимо добавить обработку в состав конфигурации и в свойствах конфигурации включить флажок "Использовать управляемые формы в обычном приложении".

24 Comments

  1. Rokky78

    Есть какие то ключевые отличия от возможности формирования QR кода с помощью подсистемы «Печать» из БСП?

    Все, пардон, не увидел «используется компонента из типовой конфигурации».

    Reply
  2. tunesoft

    (1) Rokky78,

    >Есть какие то ключевые отличия от возможности формирования QR кода с помощью подсистемы «Печать» из БСП?

    Основное отличие: легко интегрируется и работает в любой конфигурации без использования БСП.

    Reply
  3. Serginio

    Кстати простая библиотека https://github.com/codebude/QRCoder с Лицензия MIT

    Reply
  4. tunesoft

    (3) Serginio, спасибо за информацию.

    Reply
  5. dedicated

    Отличная обработка спасибо!

    Reply
  6. утюгчеловек

    (3) Serginio,

    хороший вариант — использовать эту библиотеку в веб-сервисе. Тогда QR коды можно использовать не только в 1С, и не только в рамках корпоративной сети. Например в мобильном клиенте. Правда получать коды через сервис будет медленнее чем через компоненту.

    Reply
  7. tunesoft

    (6) утюгчеловек, да, вариант хороший, только каждое подключение к веб-сервису требует лицензию 1С.

    Reply
  8. Serginio

    (6) Можно прямо из Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент.

    …….

    Использование классов .Net в 1С для новичков

    (7) Нужна лицензия только на вызов метода. Если лицензий не хватает то вызовы становятся в очередь

    Ну и вэб сервис может быть на Asp.Net

    Reply
  9. tunesoft

    (8) Serginio,

    >Нужна лицензия только на вызов метода. Если лицензий не хватает то вызовы становятся в очередь

    Обычно лицензия 1С освобождается не сразу после окончания сессии, количество лицензий 1С нужно брать с запасом

    >Ну и вэб сервис может быть на Asp.Net

    Тогда причём тут 1С ? Можно и на PHP сделать 🙂

    Reply
  10. Serginio

    (9) А для вызова веб сервиса скссии нет. Там для каждого вызова инициализируется отдельная сессия с УстановкаПараметровСеанса

    http://forum.infostart.ru/forum86/topic120770/

    Ну можно 1С использовать так Linq to ODATA

    Code First и Linq to EF на примере 1С версии 8.3 часть II

    Reply
  11. tunesoft

    (10) Serginio, странный у вас способ так открыто и не в тему рекламировать свои обработки в комментариях к публикации, это плохой тон, ваши ссылки не имеют никакого отношения к текущей публикации, мягко говоря вы здесь спамите.

    Reply
  12. Serginio

    Я только показал в 3, что есть такая библиотека. Потом как её применять. Это все относится к формированию QR. И те кого это интересует увидят разные реализации. Только и всего.

    Reply
  13. утюгчеловек

    (7) (8) Serginio,

    Верно, я имел в виду именно не 1С-ный веб-сервис, благо инструментов для их создания хватает, чтобы клиенты 1С могли генерить QR-коды «внутрь 1С».

    WCF, MonoWCF, ASP.net, JAX-WS и проч. С их помощью поднять вебсервис QR-кодов можно за считанные часы.

    (11) не считаю, что это спам. Я оцениваю как потребитель, и ожидаю в комментариях увидеть плюсы и минусы как обработки так и её альтернатив. А это именно альтернатива использованию обработки из публикации. Причем опенсорсная, которую можно использовать без потери стартмани и проч. Не вижу здесь элемента рекламы. Тем более что автором является не Serginio.

    Reply
  14. tunesoft

    (13) утюгчеловек,

    >WCF, MonoWCF, ASP.net, JAX-WS и проч. С их помощью поднять вебсервис QR-кодов можно за считанные часы.

    Отлично.

    Как вы думаете чем этот набор букв поможет читателям данной публикации ?

    Если хотите глубже раскрыть тему, то не будьте голословны и добавьте конкретные способы реализации с помощью ваших предложенных технологий.

    Reply
  15. утюгчеловек

    (14)

    Мне кажется, что обзор способов поднятия веб-сервиса с помощью какой-либо популярной технологии тянет на небольшую статью типа «How to..».

    Моя цель была обозначить альтернативы и упомянуть «наборы букв» по которым можно быстро найти нужные мануалы в любимом поисковике.

    Нужна ли такая статья? Предлагаю поставить плюс или минус =) под постом, если эта тема интересна. Но полагаю, в интернете полно ресурсов, в которых уже всё написано за меня.

    Reply
  16. fr13
    Соединение = Новый HTTPСоединение(«chart.googleapis.com»,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Запрос = Новый HTTPЗапрос(«chart?chs=300×300&cht=qr&chl=»https://infostart.ru»);
    Соединение.Получить(Запрос, ПутьКФайлу);

    я делал так, быстро, просто.

    Reply
  17. tunesoft

    (16) Тоже интересный вариант, только требует подключения к интернету, не во всех организациях это бывает.

    Reply
  18. 7OH

    А можете добавить возможность выводить в центр своё изображение ?

    Тогда можно и десяточку потратить.

    Reply
  19. tunesoft

    (18) Генерация QR-кода выполняется с помощью типовой компоненты 1С, если они добавят такую возможность то с удовольствием добавим 🙂

    Reply
  20. 🅵🅾️🆇

    (16) Также делал.

    Кому прям совсем лень напрягаться:

    &НаКлиенте
    Процедура Сформировать(Команда)
    СформироватьНаСервере();
    КонецПроцедуры // Сформировать(0
    
    &НаСервере
    Процедура СформироватьНаСервере()
    ТабДок.Очистить();
    Макет        = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«Макет»);
    
    // СтрокаВнутр
    Строка        = ЗначениеВСтрокуВнутр(Реквизит);
    Макет.Рисунки.D1.Картинка    = Новый Картинка(ПолучитьКодQR(Строка, Погрешность, ГабШирина, ГабВысота), Истина);
    
    // НавигационнаяСсылка
    Строка        = ПолучитьНавигационнуюСсылку(Реквизит);
    Макет.Рисунки.D2.Картинка    = Новый Картинка(ПолучитьКодQR(Строка, Погрешность, ГабШирина, ГабВысота), Истина);
    
    // Код;Наименование
    Строка        = Формат(Реквизит.Код, «ЧГ=0″)+»;»+Реквизит.Наименование;
    Макет.Рисунки.D3.Картинка    = Новый Картинка(ПолучитьКодQR(Строка, Погрешность, ГабШирина, ГабВысота), Истина);
    
    ТабДок.Вывести(Макет);
    КонецПроцедуры // СформироватьНаСервере()
    
    &НаСервереБезКонтекста
    Функция ПолучитьКодQR(Строка, Погрешность, Ширина, Высота)
    Попытка
    Соединение    = Новый HTTPСоединение(«chart.googleapis.com», 443,,,, 0, Новый ЗащищенноеСоединениеOpenSSL);
    Запрос        = Новый HTTPЗапрос(СтрШаблон(«chart?chs=%1x%2&cht=qr&chld=%3&chl=%4», Ширина, Высота, Погрешность, КодироватьСтроку(Строка, СпособКодированияСтроки.КодировкаURL)));
    Ответ        = Соединение.Получить(Запрос);
    Если Ответ.КодСостояния <> 200 Тогда Возврат Ответ.ПолучитьТелоКакСтроку(); КонецЕсли;
    Возврат Ответ.ПолучитьТелоКакДвоичныеДанные();
    Исключение
    Сообщение        = Новый СообщениеПользователю;
    Сообщение.Текст    = СтрШаблон(«Не удалось получить QR код.
    | %1», ОписаниеОшибки());
    Сообщение.УстановитьДанные();
    Сообщение.Сообщить();
    Возврат Неопределено;
    КонецПопытки;
    КонецФункции // ПолучитьКодQR()
    

    Показать

    Заполняет картинки макета обработки (D1, D2, D3) QR кодами.

    Хинты:

    Если у вас структура, но с коротенькими данными, то можно, например, писать JSON строку, правда всеже место жалко.

    Если только для внутреннего пользования — AES256.

    Числа и даты ввиде строки можно переводить в другие системы счисления для укорачивания.

    Не забывайте кодировать URL строку перед GET запросом.

    Информация для чтения

    Reply
  21. starik-2005

    Ничего не написано о генерации qr-кода — бессмысленно потратил время на прочтение.

    Reply
  22. tunesoft

    (21)Всё верно, описания алгоритмов отсутствуют.

    Обработка в публикации является законченным продуктом и выполняет заявленный функционал.

    Reply
  23. starik-2005

    (22) ну тогда следовало бы в заголовке тоже что-нибудь написать про то, что это обработка, код закрыт, гарантий никаких)))

    Reply
  24. tunesoft

    (23)Код открыт.

    Гарантия от 1С, так как для генерации QR-кода используется их типовая компонента.

    Обработка представляет собой удобное API для использования компоненты.

    P.S.

    «starik-2005» если вам нечего добавить в комментарии по существу лучше воздержитесь и не тратьте своё время и время других посетителей сайта. Вы уже и так много времени потратили на чтение ненужной вам статьи.

    Reply

Leave a Comment

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