Внешние компоненты для ТСД на Android. Работает на ТСД Zebra MC33
Компонента ZebraDW - для Зебровской програмулины DataWedge - создает и активирует нужный профиль на ТСД для того чтобы могла работать компонента перехвата событий и направлять в 1С.
Компонента Component - это компонента UniversalBroadcast, которая перехватывает широковещательные сообщения Android и направляет в 1С как внешние события.
Компоненты в архивах (под паролем разумеется) - их распаковываем, а те уже архивы (архивы в архиве) после распаковки, их НЕ распаковываем это и есть ВК.
Создаем новые общие макеты типа ВнешняяКомпонента и загружаем туда распакованные внутренние файлы.
Переходим к коду:
Использовать 32х битную мобильную платформу или моб. приложение (одна из компонент поддерживает только 32)
// Вначале обявляем переменные где будут хранится компоненты, иначе ничего не заработает&НаКлиентеПерем мКомпонентаНастройки Экспорт;
&НаКлиентеПерем мКомпонентаОповещений Экспорт;
&НаКлиентеПроцедура ПриОткрытии(Отказ)
ПідключенняДрайвера();
КонецПроцедуры&НаКлиентеПроцедура ПідключенняДрайвера()Если ПодключитьВнешнююКомпоненту("ОбщийМакет.ZebraDW", "DWSetup", ТипВнешнейКомпоненты.Native) Тогда
мКомпонентаНастройки = Новый ("AddIn.DWSetup.ZebraDW");
мКомпонентаНастройки.УстановитьПараметр("ProfileName", "1C");
мКомпонентаНастройки.УстановитьПараметр("EventName", "barcode_event");
ЕслиНЕ мКомпонентаНастройки.Подключить() Тогда
ТекстОшибкиКомпоненты = "";
КодОшибки = мКомпонентаНастройки.ПолучитьОшибку(ТекстОшибкиКомпоненты);
СообщениеПользователю = Новый СообщениеПользователю();
СообщениеПользователю.Текст = "Ошибка: "+ КодОшибки + ", " + ТекстОшибкиКомпоненты;
СообщениеПользователю.Сообщить();
КонецЕсли;
Иначе
СообщениеПользователю = Новый СообщениеПользователю();
СообщениеПользователю.Текст = "Ошибка подключения компоненты ""ZebraDW""";
СообщениеПользователю.Сообщить();
КонецЕсли;
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда
мКомпонентаОповещений = Новый ("AddIn.Broadcasts.UniversalBroadcast");
мКомпонентаОповещений.УстановитьПараметр("FilterName", "barcode_event");
//мКомпонентаНастройки.УстановитьПараметр("Category", "android.intent.category.DEFAULT"); //// це не треба
ШаблонДанных = мКомпонентаОповещений.ПолучитьШаблонОписанияДанных();
ТипДанные = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных, "com.symbol.datawedge.data_string", XMLСтрока(Ложь), XMLСтрока(0));
мКомпонентаОповещений.УстановитьПараметр("CaptureData", ТипДанные);
ЕслиНЕ мКомпонентаОповещений.Подключить() Тогда
ТекстОшибкиКомпоненты = "";
КодОшибки = мКомпонентаОповещений.ПолучитьОшибку(ТекстОшибкиКомпоненты);
СообщениеПользователю = Новый СообщениеПользователю();
СообщениеПользователю.Текст = "Ошибка: "+ КодОшибки + ", " + ТекстОшибкиКомпоненты;
СообщениеПользователю.Сообщить();
КонецЕсли;
Иначе
СообщениеПользователю = Новый СообщениеПользователю();
СообщениеПользователю.Текст = "Ошибка подключения компоненты ""UniversalBroadcast""";
СообщениеПользователю.Сообщить();
КонецЕсли;
КонецПроцедуры&НаКлиентеПроцедура ВнешнееСобытие(Источник, Событие, Данные)//Сообщить("+" + Источник + " - "+ Событие + " - " + Данные); ///// Далее можно просто раскоментировать и видеть XML который пришелЕсли Событие = "UniversalBroadcastEvent"Тогда
ОбробкаВводуШтрихкода(Данные);
КонецЕсли;
КонецПроцедуры&НаКлиентеПроцедура ОбробкаВводуШтрихкода(Данные)
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(Данные);
Пока ЧтениеXML.Прочитать() Цикл//Цикл по структуре Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "MessageData"Тогда
ЧтениеXML.Прочитать(); // Поч. елемента
ЧтениеXML.Прочитать();//ЗначЕсли ЧтениеXML.Значение = "barcode_event"Тогда
ЧтениеXML.Прочитать();// Кін. елемента
ЧтениеXML.Прочитать();// Поч. елементаЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "FilterData"Тогда//Определяем начало элемента
ЧтениеXML.Прочитать();
Если ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
Сообщить(СокрЛП(ЧтениеXML.Значение)); //// Тут наш штрихкодВозврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
вопрос все заводится все подключается но потом выскакивает ошибка 1 001 - DataWeadge приложение не найдено, но оно есть и профили там тоже есть Zebra TC21
Можете вручну додати профіль, там нічого складного: [необходимо зарегистрироваться для просмотра ссылки] замість "com.dwexample.ACTION" напишіть "barcode_event"
Яка у вас версія Андроїд? Пишуть, що з 11 версії воно вже так не працює. Додав вручну профіль 1С, все одно помилка "1 001 - DataWeadge приложение не найдено".
gesha2281 @ 04.10.24, 0:06
, При підключенні драйвера необхідно закоментити пункт із підключенням "ZebraDW" та налаштувати профыль вручну
Із важливого в налаштуваннях профілю необхідно: в Applications вказати 1с*, Keystroke output зняти ознаку Enabled, Intent output поставити галку Enabled, Intent action прописати barcode_event, Intent delivery обрати Brodcast intent, та у розділі Basic data formatting зняти галку у Send ENTER key.
Також у налаштуваннях самої DataWedge дати доступ на відображення поверх інших програм, через це буде трохи не зручно користуватися пристроєм тому що значок сканування буде на екрані та доведеться постійно його кудись рухатии щоб не заважав, але без цього мені не вдалося налаштувати сканування. Також інколи при оновленні 1с на ТСД при першому скануванні вилітає 1с-ка, але це тільки після оновлення, в іншому проблем не виникає
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!