Строка QR кода в формате JSON

Печать (Ctrl+P)

Текстовый формат  JSON (JavaScript Object Notation) широко используется  при обмене. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.

В данной статьи я показываю, пример  использования формат JSON  при создании строки QR кода (ЗаписьJSON) и  при обработке строки QR кода  ( ЧтениеJSON)  .  Другие примеры чтения и записи JSON можно посмотреть в другой статьи  Чтение и запись в формате JSON

В  следующей функции, при печати счет на оплату, передается  ссылку на заказ покупателя и возвращает строку  QR кода в формате JSON. Для простоты я не показываю все данные строки, а только некоторые из них с учетом особенности форматирования –   в случае данных типа число нужно форматировать без триады, а случае  данных типа дата нужно использовать метод ЗаписьДатуJSON.

 // функция из модуля менеджера заказа 
Функция ПолучитьQRкодЗаказа(Заказ)
Данные = Новый Соответствие;
// Версия протокола
Данные.Вставить("Ver","001");
// Используем букву P для строковых данных
Данные.Вставить("P01",Заказ.Номер);
// Для чисел используем букву N и форматируем без триады
Данные.Вставить("N01",Формат(Заказ.СуммаДокумента,"ЧГ = 0"));
// Для переменных типа даты используем букву D
  Данные.Вставить("D01",ЗаписатьДатуJSON(Заказ.Дата, ФорматДатыJSON.ISO)); ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, Данные);
QRСтрока = ЗаписьJSON.Закрыть();
Возврат QRСтрока;
КонецФункции

Чтение QR кода в формате JSON происходит в модуле  управляемой  формы обработки. В данном случае  вызывается процедуру ОбработатьПолученныйШК. Для простоты примера, я не показываю все обрабатываемые данные. Обратите внимание, что в процедуру глобального контекста  ПрочитатьJSON я должен передать Массив, элементы которого содержат имена свойств JSON, для которых нужно вызывать восстановление даты из строки.

 &НаКлиенте
Процедура ОбработатьПолученныйШК(СтрокаJSON)
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
ИменаСвойствСоЗначениямиДата = Новый Массив; ИменаСвойствСоЗначениямиДата.Добавить("D01");
Данные = ПрочитатьJSON(ЧтениеJSON,Истина,ИменаСвойствСоЗначениямиДата,ФорматДатыJSON.ISO); ЧтениеJSON.Закрыть();
НомерЗаказа = Данные.P01 ;
ДатаЗаказа = Данные.D01 ;
СуммаДокумента =Данные.N01;
КонецПроцедуры

Фирма “1С” реализовала поддержку сканера штрих -кодов на уровне “1С: Библиотека подключаемого оборудования”.

Перед тем как начать использовать сканер его необходимо инициализировать. Делать это лучше всего при открытии формы. В соответствующем событии определяем, какое именно оборудование будет использоваться, и пытаемся его подключить. В данном случае только сканер штрих-кода:

 &НаКлиенте
Процедура ПриОткрытии(Отказ)
// ПодключаемоеОборудование
Если МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента() Тогда ОписаниеОшибки = "" ;
ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить( "СканерШтрихкода" );
Если Не менеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(УникальныйИдентификатор, ПоддерживаемыеТипыВО, ОписаниеОшибки) Тогда ТекстСообщения = НСтр( "ru = 'При подключении оборудования произошла ошибка: |""%ОписаниеОшибки%"".'" );
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , ОписаниеОшибки); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); КонецЕсли;
КонецЕсли;
КонецПроцедуры

Работа со сканером организована через событие оповещения формы. При возникновении события нужно определить, что его источником является сканер и использовать полученные от него данные. В приведённом ниже примере полученный от сканера код применяется в процедуре ОбработатьПолученныйШК():

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен()  Тогда
Если ИмяСобытия = "ScanData" Тогда Если Параметр[ 1 ] = Неопределено Тогда СтрокаQRКод = Параметр[ 0 ];
Иначе СтрокаQRКод = Параметр[ 1 ][ 1 ];
КонецЕсли;
ОбработатьПолученныйШК(СтрокаQRКод);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Previous Article
Next Article

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.