Старый 16.01.2019, 14:04   #1
JenyZuyko
Местный
 
Регистрация: 20.01.2012
Сообщений: 392
Сказал(а) спасибо: 65
Поблагодарили 490 раз(а) в 148 сообщениях
JenyZuyko пока не определено
По умолчанию QR-код в 1С 8.3

Ребята, поделитесь, пожалуйста, обработкой, позволяющей формировать и печатать QR-код. Спасибо.
JenyZuyko вне форума   Ответить с цитированием
Старый 16.01.2019, 21:43   #2
drdroid
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 52
Сказал(а) спасибо: 4
Поблагодарили 50 раз(а) в 19 сообщениях
drdroid пока не определено
По умолчанию

Цитата:
Сообщение от JenyZuyko Посмотреть сообщение
Ребята, поделитесь, пожалуйста, обработкой, позволяющей формировать и печатать QR-код. Спасибо.
В БСП есть нейтив компонента и все функции для этого.
drdroid вне форума   Ответить с цитированием
Старый 20.06.2019, 20:06   #3
step_lg
Новичок
 
Регистрация: 04.01.2016
Сообщений: 9
Сказал(а) спасибо: 14
Поблагодарили 3 раз(а) в 2 сообщениях
step_lg пока не определено
По умолчанию

Использовал как-то библиотеку Zint и через сервис Google

// Получение QR кода с помощью библиотеки ZINT
Функция ПолучитьКартинкуQRКодаZINT(КодируемыйОбъект,Катало гГенератораШК) Экспорт
Перем КартинкаQRКод;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
Попытка
Команда = "zint -b 58 -o " + ИмяВременногоФайла + " -d " + КодируемыйОбъект;
КомандаСистемы(Команда ,КаталогГенератораШК);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
Попытка
КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат Неопределено;
КонецПопытки;
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат КартинкаQRКод;
КонецФункции


// Получение QR кода с помощью Google API
Функция ПолучитьКартинкуQRКодаWeb(КодируемыйОбъект)
ТабДок = Новый ТабличныйДокумент;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
АдресНачало = "http://chart.apis.google.com/chart?cht=qr&chs=300x300&chld=H|0&chl=";
//АдресКонец = ЗаказСсылка.Номер + Символы.ПС + Заказссылка.Контрагент.Наименование;
//АдресКонец = СтрЗаменить(АдресКонец, " ", "+");
АдресКонец = EncodeURL(КодируемыйОбъект);

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

Попытка
КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат Неопределено;
КонецПопытки;

Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат КартинкаQRКод;
КонецФункции

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

// Функции для работы ф-ции через Google API
Функция hex(Знач Значение)
Значение=Число(Значение);
Если Значение<=0 Тогда
Результат="0";
Иначе
Значение=Цел(Значение);
Результат="";
Пока Значение>0 Цикл
Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWX YZ",Значение%16 + 1,1)+Результат;
Значение=Цел(Значение/16) ;
КонецЦикла;
КонецЕсли;
Если СтрДлина(Результат) < 2 Тогда

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

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


// Функции для работы ф-ции через Google API
Функция 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));
КонецЕсли;
КонецЦикла;

Возврат Рез;
КонецФункции
step_lg вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
JenyZuyko (21.06.2019)
Ответ

Любые журналы Актион-МЦФЭР регулярно !!! Пишите https://www.nado.in/private.php?do=newpm&u=12191 или на электронный адрес pantera@nado.ws


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:09. Часовой пояс GMT +1.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot