Версия для печати темы (https://pro1c.org.ua/index.php?s=66f65a6f2b1d67e4e52f4af88607acad&showtopic=66975)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программы, внешние компоненты, прочее _ Внешние компоненты для ТСД на Android (Zebra)

Автор: vbi 19.05.22, 11:37

Внешние компоненты для ТСД на 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.Значение));   //// Тут наш штрихкод
                                Возврат;
                            КонецЕсли;
                        КонецЕсли;
                КонецЕсли;

            КонецЕсли;
        КонецЦикла;

КонецПроцедуры


 Component.zip ( 1,6 мегабайт ) : 108
 ZebraDW.zip ( 1,28 мегабайт ) : 93
 

Автор: Vofka 20.05.22, 10:27

Опубликовал.

Автор: Karatel555 15.06.22, 6:43

vbi @ 19.05.22, 15:37 * ,
А можно узнать пароль к архиву?

Автор: vbi 07.07.22, 10:52

Karatel555 @ 15.06.22, 7:43 * ,
Читайте правила форума, там все на счет паролей написано.

Автор: lisovliss 13.07.23, 13:34

vbi @ 07.07.22, 10:52 * ,
Большое спасибо!

Автор: Richevil 09.11.23, 18:16

вопрос все заводится все подключается но потом выскакивает ошибка 1 001 - DataWeadge приложение не найдено, но оно есть и профили там тоже есть Zebra TC21

Автор: Tiger_77 07.02.24, 14:20

Richevil @ 09.11.23, 18:16 * ,

Можете вручну додати профіль, там нічого складного:

https://pro1c.org.ua/redirect.php?https://techdocs.zebra.com/datawedge/7-1/guide/api/tutorials/

замість "com.dwexample.ACTION" напишіть "barcode_event"

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua