QR-код

10.01.11

Разработка - Универсальные функции

Генерация qr кода с помощью api google

Для генерации использовано api от google (http://chart.apis.google.com/chart). Вот сайт, который работает с ним. После того, как вы вводите все параметры кода и нажимаете кнопку генерировать, получаем что-то вроде такой ссылки. По сути эта ссылка нам и нужна. Создав необходимый url можно скачать картинку, которая генерируется с помощью api. Почему не подключал компоненты - писалось под веб-клиент не был уверен, что на стороне сервера будет установлена компонента. 

И так в чем заключается подход:

  1. Генерируем текст, который надо прописать в qr-коде.
  2. Используя ссылку «http://chart.apis.google.com/chart?cht=qr&chs=230×230&chl=» +»Наш текст» скачиваем картинку.
  3. Размещаем картинку в нашем табличном документе.

Код реализации:

&НаСервере
Функция hex(Знач Значение)
Значение=Число(Значение);
Если
Значение<=0 Тогда
Результат="0";
Иначе
Значение=Цел(Значение);
Результат="";
Пока
Значение>0 Цикл
Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%16 + 1,1)+Результат;
Значение=Цел(Значение/16) ;
КонецЦикла;
КонецЕсли;
Если
СтрДлина(Результат) < 2 Тогда

Результат = "0" + Результат;

КонецЕсли;
Возврат
"%" + Результат;
КонецФункции

&НаСервере
Функция EncodeURL(URL)
Рез = "";
Для
Сч = 1 По СтрДлина(URL) Цикл
ch = Сред(URL,Сч,1);
vch = КодСимвола(ch);

Если (
"A" <= ch ) И ( ch <= "Z") Тогда // "A".."Z"
Рез = Рез + ch;
ИначеЕсли (
"a" <= ch ) И ( ch <= "z") Тогда // "a".."z"
Рез = Рез + ch;
ИначеЕсли (
"0" <= ch ) И ( ch <= "9") Тогда // "0".."9"
Рез = Рез + ch;
ИначеЕсли (
ch = " ") ИЛИ ( ch = "+") Тогда // space
Рез = Рез + "+";
ИначеЕсли (
ch = "-" ) ИЛИ ( ch = "_") // unreserved
ИЛИ (ch = ".") ИЛИ (ch = "!")
ИЛИ (
ch = "~") ИЛИ (ch = "*")
ИЛИ (
ch = "") ИЛИ (ch = "(")
ИЛИ (
ch = ")") Тогда
Рез = Рез + ch;
ИначеЕсли (
vch <= 127) Тогда // other ASCII
Рез = Рез + hex(vch);
ИначеЕсли (
vch <= 2047) Тогда // non-ASCII <= 0x7FF
Рез = Рез + hex(192 + Цел(vch / 64));
Рез = Рез + hex(128 + (vch % 64));
Иначе
// 0x7FF < ch <= 0xFFFF
Рез = Рез + hex(224 + Цел(vch / 4096));
Рез = Рез + hex(128 + (Цел(vch / 64) % 64));
Рез = Рез + hex(128 + (vch % 64));
КонецЕсли;
КонецЦикла;

Возврат
Рез;
КонецФункции
// ()

&НаСервере
Функция СохранитьДвоичныйБуферВФайл(Буфер, ИмяФайла) Экспорт
Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1; //Бинарный
Поток.Mode = 3;
Поток.Open();
Поток.Write(Буфер);
Поток.SaveToFile(ИмяФайла);
Поток.Close();
КонецФункции

&НаСервере
Функция НапечататьКодСервер(ЗаказСсылка)
ТабДок = Новый ТабличныйДокумент;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
АдресНачало = "http://chart.apis.google.com/chart?cht=qr&chs=230x230&chl=";
АдресКонец = ЗаказСсылка.Номер + Символы.ПС + Заказссылка.Контрагент.Наименование;
АдресКонец = СтрЗаменить(АдресКонец, " ", "+");
АдресКонец = EncodeURL(АдресКонец);

Соединение = ПолучитьCOMОбъект("","Microsoft.XMLHTTP");
Соединение.open("GET", АдресНачало + АдресКонец,0,,);
Соединение.send(null);
СохранитьДвоичныйБуферВФайл(Соединение.responseBody, ИмяВременногоФайла);

//Печать
Макет = Документы.ЗаказПокупателя.ПолучитьМакет("МакетПечатиКода");
Область = Макет.ПолучитьОбласть("Код");
Область.Рисунки.КодРисунок.Картинка = Новый Картинка(ИмяВременногоФайла);
ТабДок.Вывести(Область);
Возврат
ТабДок;
КонецФункции

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2669    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4603    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3960    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8816    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16143    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kasper076 101 10.01.11 17:03 Сейчас в теме
Нашел вот тут точно такой же код, только вот опубликован он гораздо раньше.
2. iceflash 4 10.01.11 17:39 Сейчас в теме
хм, на сайте данном в статье, этот материал размещен 29.12.2010 хотя на самом деле сейчас вот так не определишь точное авторство=) эти даты легко можно поменять ведь=) Так что это все на совести автора данной статьи=)
3. DanilaDru 262 10.01.11 23:07 Сейчас в теме
Спасибо за наводку на плагиат. Danila.org.ua мой ресурс и статьи на нем мои. Автору lavelin.ru уже было послано сообщение через обратную связь на сайте.

В статье на lavelin.ru есть указан мой ресурс, только почему-то не удосужились сделать полноценную ссылку с переходом на страницу от куда его у меня скопировали.
4. DanilaDru 262 10.01.11 23:15 Сейчас в теме
А. Прикол :) Вы в статье на lavelin.ru почитайте сам qr-код и увидите ссылка на какой ресурс там прописана. На всякий случай кидаю скриншот текущего состояния страницы на сайте lavelin.ru
Прикрепленные файлы:
5. zenechka 542 11.01.11 02:47 Сейчас в теме
to DanilaDru.
Позволю привести определение термина, который Вы так небрежно используете.

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

Если уж прикрепляете, скриншот, то будьте последовательны, не обрезайте ссылку на Ваш сайт, которая была указана под статьей.

Тот факт, что ссылка на Ваш сайт была опубликована не активной (в виде текста) не отбирает Ваше авторство и уж тем более не присваивает его мне. Вы обратились, я сделал ссылку активной.

Если Вы имеете что-то против копирования Ваших статей, сообщите, я удалю их со своего сайта.
6. DanilaDru 262 11.01.11 08:40 Сейчас в теме
Спасибо за исправление статей. Я был последовательным и ситуацию про ссылку на ресурс я описал в своем первом посте.

Спасибо за размещения меня в своих ссылках.
7. German 413 11.01.11 13:15 Сейчас в теме
Да просто можно отправить письмо и в ответ получить QR ;)
http://feedproxy.google.com/~r/tarpipe/~3/a-Gncva-2u0/&anno=2
8. DanilaDru 262 11.01.11 19:05 Сейчас в теме
German пишет:

Да просто можно отправить письмо и в ответ получить QR

http://feedproxy.google.com/~r/tarpip...u0/&anno=2


Мне надо было код сгенерировать "сейчас" на "сейчас" для печати. Ждать письмо с ответом не сильно устраивало.
9. DanilaDru 262 28.03.11 10:50 Сейчас в теме
Спасибо всем за плюсы. Во время печати под веб-клиентом столкнулся с проблемами разбрасывания картинок как угодно. По сути вопрос печати был решен с помощью использования продуктов сторонних лиц. Краткая презентация тут: http://danila.org.ua/?p=924
10. =melena= 10 26.03.16 23:25 Сейчас в теме
Спасибо за обработку! Все работает, но для текста кодирования длиной около 200 символов, если количество символов около 400, то код на сайте не формируется(( Если непосредственно на сайт зайти и вбить в текстовое поле, то все ОК, а из 1С не получается. Как можно решить проблему?
11. Saifa 32 19.02.18 11:16 Сейчас в теме
Подскажите, спецы, все сделала так же, но почему-то упорно ШК формируется пустой! То есть если я открываю ссылку на google с моими параметрами, вижу что ШК сформировался, а во временный файл записывается пустой!
Прикрепленные файлы:
13. eVGNN 18.05.22 11:39 Сейчас в теме
(11)
Подскажите, спецы, все сделала так же, но почему-то упорно ШК формируется пустой! То есть если я открываю ссылку на google с моими параметрами, вижу что ШК сформировался, а во временный файл записывается пустой!

Тоже самое(
12. lenuneya 15.07.18 16:46 Сейчас в теме
спасибо! полезная статья
Оставьте свое сообщение