Сейчас много старых ТСД, которые можно использовать в этом варианте. В отличие от беспроводных сканеров мы можем получить информацию о товаре. Подтвердить действия и т.д.
Основное в разработке - это модуль обмена по TCP/IP.
Применен протокол со сжатием данных, так как это актуально в медленных сетях Wi-Fi, особенно вдали от точки.
Конечно можно использовать и Вэб сервисы, но часто нужно настраивать мобильный принтер на машире оператора, или делать авбор данных в ручную с локального компьютера.
Применение в 1С такое.
&НаКлиенте
Процедура Запустить(Команда)
// Вставить содержимое обработчика.
Если TCPСервер=неопределено Тогда
TCPСервер= СоздатьСерверTCP();
КонецЕсли;
Событие=Врап.ПолучитьОбъектДляСобытийСПараметром(TCPСервер,"ПришлоСообщениеПоTCP");
ДобавитьОбработчик Событие.СобытиеСПараметром, ПолучениеДанныхПоTCP;
TCPСервер.ОткрытьАйПиПортСНомеромПорта(Отчет.Порт);
Элементы.ЗапуститьСерверTCPIP.Доступность=Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПолучениеДанныхПоTCP(Данные)
// Получаем данные в виде объекта у которого 2 свойства
// Команда Имя запроса строка
// Данные Строковое представление данных
Сообщить("Команда="+Данные.Команда);
Сообщить("Данные="+Данные.Данные);
Сообщить("ЕстьОтвет="+Данные.ЕстьОтвет);
// ТСД Посылает команду "СканированШК" и отсканированный ШК
Если Данные.Команда="СканированШК" Тогда
Шк=Данные.Данные;
// Получим данные по Номенклатуре и отправит данные ТСД
Ответ=ПолучениеДанныхПоШК(ШК);
TCPСервер.Ответить(Ответ);
возврат
КонецЕсли;
// Для других команд просто отправим текущее время и дату
Если Данные.ЕстьОтвет Тогда
Ответ="Ответ на команду "+Данные.Команда+"
|Данные "+Данные.Данные+"
|ВремяНаСервере="+XmlСтрока(ТекущаяДата());
TCPСервер.Ответить(Ответ);
КонецЕсли;
КонецПроцедуры
Вот исходники модуля передачи и приема данных по сети
Тестировал на эмуляторе.
Также удобно передавать данные сразу в сериализованном DataTable для универсальной обработки на TCL с фильтрами поиском и тд
Функция ПолучитьТипКолонкиДляДТ(Колонка) Экспорт
Тип=Колонка.ТипЗначения;
Если Тип=Неопределено Тогда
возврат "System.Object"
КонецЕсли;
Если тип.Типы().Количество()>1 Тогда
возврат "System.Object"
КонецЕсли;
Тип1=тип.Типы()[0];
Если Тип1=Тип("Число") Тогда
Квалификатор=Тип.КвалификаторыЧисла;
Если Квалификатор.РазрядностьДробнойЧасти>0 Тогда
возврат "System.Decimal"
КонецЕсли;
Разрядность=Квалификатор.Разрядность;
Если Разрядность<10 Тогда
возврат "System.Int32"
ИначеЕсли Разрядность<19 Тогда
возврат "System.Int64"
Иначе
возврат "System.Decimal"
КонецЕсли;
КонецЕсли;
Если Тип1=Тип("Строка") Тогда
возврат "System.String"
ИначеЕсли Тип1=Тип("Дата") Тогда
возврат "System.DateTime"
КонецЕсли;
return "System.Object"
КонецФункции
Функция СоздатьДТ(врап,Тз,ИмяТаблицы) Экспорт
Колонки=Тз.Колонки;
myTable=Врап.СоздатьОбъект("System.Data.DataTable, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",ИмяТаблицы);
DataColumn=Врап.ПолучитьТип("System.Data.DataColumn");
Columns= myTable.Columns;
КоличествоКолонок=Колонки.Количество();
Для каждого Колонка Из Колонки Цикл
colItem =Врап.СоздатьОбъект(DataColumn,Колонка.Имя, Врап.ПолучитьТип(ПолучитьТипКолонкиДляДТ(Колонка)));
Columns.Add(colItem);
КонецЦикла;
// rowArray =новый COMSafeArray("VT_VARIANT",КоличествоКолонок);//Врап.СоздатьМассив("System.Object",КоличествоКолонок);
Rows=myTable.Rows;
Для каждого стр Из Тз Цикл
Row = myTable.NewRow();
Для сч=0 По КоличествоКолонок-1 Цикл
сообщить(стр[сч]);
Row.set_Item(сч,стр[сч]);
КонецЦикла;
Сообщить(Row.ToString());
//Rows.Add(Row);
врап.ВыполнитьМетод(Rows,"Add",Row);
КонецЦикла;
возврат myTable
КонецФункции
<add key="ServerPort" value="6891" />