Строка 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Код);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

 

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

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