Каталог решений - Обработка обслуживания QR Дисплея

Обработка обслуживания QR Дисплея

Обработка обслуживания QR Дисплея

В наличии

Обработка обслуживания QR Дисплея от «Бизнес код.» для 1С 8.2.
QR-дисплей — это устройство, позволяющее выводить динамический QR-код для оплаты в вашем магазине, ресторане и любом другом заведении, занимающемся торговлей или услугами. При этом в QR-код сразу выводятся ваши реквизиты для оплаты вместе с суммой оплаты. Покупателю нужно только навести камеру своего мобильного телефона, и … платеж проведен.
Зачисление на расчетный счет происходит моментально!

Категория:

Описание

Выводит на QR дисплей сформированный QR код. Судя по API производителей должна работать и с другими производителями QR дисплеев. Подключается как обработка обслуживания торгового оборудования.

Кодировку устанавливаем UTF8. В комплекте (макеты) MSComm32.ocx и файл лицензии.

MSComm32.ocx и Файл лицензий необходимо сохранить из макета. 

MSComm32.ocx необходимо зарегистрировать в системе "regsvr32  MSComm32.ocx"

Файл лицензий внести в реестр windows (без этого работать не будет)

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

Подключается как обработка обслуживания торгового оборудования.  Меню "Сервис" — "Служебные" — "Подключение и настройка торгового оборудования"

В форме где будем вызывать вывод на QR дисплей в процедуре "ПриОткрытии" вставить следующий код:

Результат = ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);

Разместить процедуры


// Процедура осуществляет вывод информации на дисплей покупателя.
//
// Параметры:
//  Нет.
//
&НаКлиенте
Процедура ВывестиИнформациюНаДисплейПокупателя(Данные) Экспорт
	
	ВидТО    = Перечисления.ВидыТорговогоОборудования.ДисплейПокупателя;
	Дисплеи  = ПолучитьСерверТО().ПолучитьСписокУстройств(ВидТО);
	Дисплей  = Неопределено;
	
	Для Каждого Дисплей Из Дисплеи Цикл
		Если ПустаяСтрока(Данные) Тогда
			ПолучитьСерверТО().ОчиститьДисплейПокупателя(Дисплей);
		Иначе
			ПолучитьСерверТО().ВывестиСтрокуНаДисплейПокупателя(Дисплей, Данные);
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры // ВывестиИнформациюНаДисплейПокупателя()


// Функция возвращает признак того, что клиент поддерживает работу с видом ТО,
// переданным в качестве параметра.
//
// Параметры:
//  Вид      - <ПеречислениеСсылка.ВидыТорговогоОборудования>
//           - Вид торгового оборудования, информация о поддержке
//             которого запрашивается.
//
// Возвращаемое значение:
//  <Булево> - Признак поддержки указанного класса торгового оборудования.
//
Функция ПоддерживаетсяВидТО(Вид) Экспорт
	
	Результат = Ложь;
	Если Вид = Перечисления.ВидыТорговогоОборудования.ДисплейПокупателя Тогда
		Результат = Истина;			
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции // ПоддерживаетсяВидТО()   

Вызывается с помощью 

  ВывестиИнформациюНаДисплейПокупателя(
    "[T1]" + "Верхняя строка"+ Символы.ВК + Символы.ПС + 
    "[QL]" + "QR КОД" + Символы.ВК + Символы.ПС + 
    "[T2]" + "Нижняя строка" + Символы.ВК + Символы.ПС);

Для более корректного отображения русских букв Верхнюю строку и Нижнюю строку перекодировать в UTF8 с помощью функций


Функция Dec_to_Hex(Знач пDec, Знач Разрядность = 2)   
	
	пHex = "0123456789ABCDEF";
	Результат = "";
	
	Для СимвЧисло = 1 По Разрядность Цикл
		ТекЧисло = пDec % 16;
		пDec = Цел(пDec / 16);
		Результат = Сред(пHex, ТекЧисло + 1, 1) + Результат;
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции


Функция ПереводТекстаUnicodeToUTF8(СтрокаДляКодировки)
	
	СимволыДляИсключения = "-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~№";
	Результат = "";
	
	Для а = 1 По СтрДлина(СтрокаДляКодировки) Цикл
		ТекСимв = Сред(СтрокаДляКодировки, а, 1);
		
		Если ТекСимв = " " Тогда
			Результат = Результат + "20";
			Продолжить;
		КонецЕсли;
		Если Найти(СимволыДляИсключения, ТекСимв) > 0 Тогда
			Результат = Результат + ТекСимв;
			Продолжить;
		КонецЕсли;
		
		ЮниКод = КодСимвола(ТекСимв);
		Если ЮниКод < 128 Тогда
			Результат = Результат + "%" + Dec_to_Hex(ЮниКод);
		Иначе
			ИндексЮникод = 32;
			Байт = 8;
			ХексКод = "";
			Пока ИндексЮникод > 4 Цикл
				// установка следующих за первым байтов
				ТекБайт = ЮниКод % 64;
				ХексКод = "%" + Dec_to_Hex(128 + ТекБайт) + ХексКод;
				
				ЮниКод        = Цел(ЮниКод / 64);
				// проверка на закрывающий байт
				Если ЮниКод < ИндексЮникод Тогда
					ХексКод = "%" + Dec_to_Hex((Байт-2) * ИндексЮникод + ЮниКод) + ХексКод;
					Прервать;
				КонецЕсли;
				// переход к следующему уровню закрытия
				ИндексЮникод = ИндексЮникод / 2;
				Байт = Байт * 2;
			КонецЦикла;
			Результат = Результат + ХексКод;
		КонецЕсли;
	КонецЦикла;
	
	Буфер = ПолучитьБуферДвоичныхДанныхИзHexСтроки(Результат);
	Поток = Новый ПотокВПамяти(Буфер);
	ЧтениеТекста = Новый ЧтениеТекста(Поток, КодировкаТекста.ANSI, "", "");
	Данные = ЧтениеТекста.Прочитать();
	
	Возврат Данные;
КонецФункции  

 

has been added to your cart:
Оформление заказа