Многофункциональная компонента для мобильной платформы: широковещательные сообщения (broadcasts), буфер обмена (clipboard), Bluetooth

15.03.21

Разработка - Разработка внешних компонент

Компонента получает широковещательные оповещения, может получать/помещать текст и отслеживать изменения буфера обмена, а также осуществляет связь с bluetooth устройствами с последовательным доступом. Рекумендуется для использования с лазерными и bluetooth сканерами терминалов сбора данных. Предназначена для ОС Андроид.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Конфигурация с компонентой и примером ее использования
.cf 1,93Mb
538
538
10 SM
Скачать Купить за 4 550 руб.

Новое в релизе 1.3.3

Исправлена ошибка повторной генерации внешнего события при использовании XML формата.

Новое в релизе 1.3.2

В сообщение внешнего события о получении широковещательного сообщения добавлена возможность вывода данных в формате json (см. параметр OutputFormat). В более ранних релизах использовался xml, который иногда не читался (по отзывам отдельных пользователей) средствами 1С (ЧтениеXML) из-за представления некоторых символов в виде &...;.

Новое в релизе 1.3

  1. Теперь все компоненты сборки поддерживают стандарт 1С требований по разработке драйверов 3.3 поскольку фирма 1С выпустила библиотеку подключаемого оборудования для мобильных приложений, поддерживающую этот стандарт. Изменения коснулись, в основном, общих требований к разрабатываемым драйверам. Удален метод ПолучитьНомерВерсии. Вместо него необходимо использовать ПолучитьРевизиюИнтерфейса. Метод ПолучитьОписание содержит только один параметр, который возвращает структуру xml (см. здесь). Состав и параметры общих методов мобильных драйверов приведены к аналогичному составу и параметрам драйверов для стационарной платформы.
  2. Интерфейс компоненты буфера переработан с целью приближения к стандарту устройства ввода. Удалены свойство СодержимоеБуфера и метод УстановитьСодержимое. Вместо них следует использовать параметр Content и дополнительные действия GetClipboard и PutInClipboard.
  3. Добавлена компонента работы с bluetooth: поиск и подключение устройств, взаимодействие по протоколу последовательного доступа (com over bluetooth).
  4. Демострационная конфигурация сделана более наглядной. Теперь для показа работы каждой компоненты используется отдельная форма:

 

Замечание об архитектуре

Стандарт подключаемых драйверов 1С требует, чтобы поставка драйвера отдельным архивом содержала только один драйвер и, соответственно, один объект AddIn. Цитата из документации: "Внешняя компонента для работы с подключаемым оборудованием должна содержать только один объект, реализующий расширение встроенного языка". В моей практике создания мобильных приложений такой подход часто приводил к катастофическому разрастанию размера приложения. Добавление функциональности к существующей компоненте обычно увеличается ее суммарный размер (apk+so файлы) на 10-20%, в то время как следование правилам стандарта приводит к линейному росту от числа компонент. Исходя из этого, данная разработка нарушает стандарт для удобства применения и развертывания приложений с представленной компонентой.

Широковещательные оповещения

Продолжение статьи автора о внешних компонентах для мобильных приложений, в которой представлен развернутый пример компоненты получения широковещательных оповещений в андроиде (broadcasts). Идею ее создания подсказала работа //infostart.ru/public/587908/, в которой был предложен универсальный получатель сообщений от сканеров, но решение выполнено через сервис, хотя ничто не мешает оформить его в виде компоненты. Архитектурный выигрыш несомненный, но главные удобства получает пользователь, которому нужно будет установить только приложение 1С без дополнительного ПО.

Для подключения компоненты используем стандартный код:

// Component - имя макета, в котором находится компонента

ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");

Так как решение полностью выполнена по стандарту 1С (устройство ввода), установка параметров выполняется методом "УстановитьПараметр", включение и выключение - "Подключить" и "Отключить" соответственно. Параметр, который обязательно нужно установить - "FilterName", это имя оповещения. Для сканеров его необходимо взять из документации. Также можно использовать любые системные броадкасты, например отсюда. В примере конфигурации к статье представлен способ получения информации о батарее устройства. Следующий важный параметр - "CaptureData". В него следует передать XML строку с описанием извлекаемых дополнительных данных оповещения. Для удобства ее можно получить, вызвав метод "ПолучитьШаблонОписанияДанных", который возвращает строку:

<?xml version="1.0" encoding="utf-8"?>
<dataExtra name="%1" arrayToString="%2" dataType="%3" />

Она содержит три параметра в формате %n, чтобы ее было удобно использовать в методе "ПодставитьПараметрыВСтроку" из БСП. Первый параметр - имя дополнительных данных. Второй должен иметь значения true или false и используется только для обработки массива байт или символов (см. ниже). Третий параметр - число, тип извлекаемых данных в соответствии с таблицей:

Значение параметра Тип данных
0 строка
1 массив строк
2 short
3 массив типов short
4 long
5 массив типов long
6 int
7 массив типов int
8 float
9 массив типов float
10 double
11 массив типов double
12 символ
13 массив символов
14 байт
15 массив байтов
16 булево
17

массив типов булево

18

неподдерживаемый тип данных

19

Пустые данные (null)

(Типы последних двух строк могут возвращаться, если параметр CaptureData не задан, об этом режиме работы см. ниже).

Для массивов типов байт или символ параметр attayToString может быть установлен в true. В этом случает при получении дополнительных значений, они будут преобразовываться в строку. Это может пригодится для работы с некоторыми сканерами, которые возвращают результат в виде набора байтов. Покажем код установки параметров перед включением компоненты:

ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
health = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"health",XMLСтрока(Ложь),XMLСтрока(6));
Компонента.УстановитьПараметр("CaptureData",health);
tech = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"technology",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",tech);
present = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"present",XMLСтрока(Ложь),XMLСтрока(16));
Компонента.УстановитьПараметр("CaptureData",present);
level = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"level",XMLСтрока(Ложь),XMLСтрока(6));
Компонента.УстановитьПараметр("CaptureData",level);

Какие данные необходимо получить мы определяем последовательными вызовами установки параметра CaptureData. Удалить или изменить этот набор после установки невозможно, для этого необходимо пересоздать объект компоненты.

Параметр "Category" позволяет добавить к намерению отбор по категориям. Его также можно устанавливать перед стартом отслеживания броадкастов несколько раз, если требуется отбор по нескольким категориям. Очистка набора категорий возможна только при пересоздании объекта компоненты.

Параметр "OutputFormat" управляет форматом вывода данных внешнего события, информирующего о приеме оповещения. Он числовой и может принимать значения: 0 - вывод в виде xml (значение по умолчанию) или 1 - json.

После включения компонента, как и любое устройство ввода, возвращает данные через внешнее событие 1С. Первый параметр события - серийный номер устройства, второй параметр имеет значение "UniversalBroadcastEvent", а третий - строка в выбранном формате. Вывод в XML имеет примерно такой вид:

<?xml version="1.0" encoding="utf-8"?>
<MessageData>
<FilterName>Имя оповещения, заданного параметром FilterName</FilterName>
<FilterData name="имя очередного параметра CaptureData">Значение дополнительных данных</FilterData>
<FilterData name="имя очередного параметра CaptureData">
<ArrayValue>элемент 1 массива данных</ArrayValue>
<ArrayValue>элемент 2 массива данных</ArrayValue>
</FilterData>
</MessageData>

Пример аналогичного вывода в формате JSON:

{
"FilterName":"Имя оповещения, заданного параметром FilterName",
"FilterData":
[{"имя очередного параметра CaptureData":"Значение дополнительных данных"},
{"имя очередного параметра CaptureData":["элемент 1 массива данных","элемент 2 массива данных"]}]
}

Как можно догадаться из примера, значения одиночных дополнительных данных возвращаются в тексте элемента <FilterData>, а массивов элементами <ArrayValue>.

Начиная с релиза 1.1.4 компонента поддерживает автоматическое определение всех возможных фильтров и возвращаемых типов данных. Чтобы включить такой режим, необходимо оставить параметр CaptureData пустым. В демонстрационном приложении перейдите на закладку "Фильтры событий" и оставьте категорию пустой. При возникновении события xml тэг MessageData не будет возвращать значений, но будет включать числовой атрибут datatype в соответствии с приведенной выше таблицей. Если событие будет иметь данные с пустым значением, тип которого невозможно определить, атрибут будет равен 19. Сложным типам, необрабатываемым компонентой, будет присвоен индекс 18.

<?xml version="1.0" encoding="utf-8"?>
<MessageData>
<FilterName>Имя оповещения, заданного параметром FilterName</FilterName>
<FilterData name="имя очередного параметра CaptureData" datatype="число - индекс типа из таблицы"/>
<!-- любое число тэгов FilterData -->
</MessageData>
{
"FilterName":"Имя оповещения, заданного параметром FilterName",
"FilterData":
[{"name":"имя очередного параметра CaptureData","datatype":число - индекс типа из таблицы},
...
]}

Приведем пример xml, возвращаемого батареей (android.intent.action.BATTERY_CHANGED) в режиме определения фильтров:

 

И в режиме определения заряда батареи:

 

Пользователи могут использовать конфигурацию из статьи для определения значений фильтров любых событий, если вручную отредактируют имя намерения и вызовут событие.

Буфер обмена

В версии 1.1 компоненты добавлена работа с буфером обмена Андроида (clipboard). Буфер позволяет выполнять операции вставки и извлечения (Copy/Paste) и может содержать данные типов текст, гиперссылка и намерение. Компонента содержит следующие параметры и дополнительные действия:

Для помещения текста в буфер обмена установите параметры Content и Label и вызовите дополнительный метод PutInClipboard. Компонента также в состоянии передать в 1С оповещение об изменении буфера любой программой или службой.

Подключение объекта буфера:

КомпонентаБуфер = Новый("AddIn.Broadcasts.Clipboard");

Объект Clipboard реализован по стандарту устройства ввода. Соответственно, имеет методы Подключить и Отключить. Получение содержимого буфера выполняется с помощью дополнительного действия GetClipboard. Сразу после его вызова компонента порождает внешнее событие ClipboardEvent. В третьем параметре оповещения находится текст из буфера обмена.

Работа с Bluetooth

Драйвер поддерживает следующие операции:

  • программное включение bluetooth, получение списка подключенных устройств, обнаружение доступных неподключенных устройств и их подключение;
  • работу с устройствами через последовательные чтение/запись (com over bluetooth). Чтение данных может выполняться синхронно, в этом случае приложение ожидает данные, пока они не появятся от устройства, а приложение останавливается. Либо асинхронно в двух режимах - по запросу и в фоне. В первом случае компонента проверяет наличие данных и если их нет, возвращает ошибку, во втором ответ от устройства проверяется постоянно в отдельном потоке и при появлении данных в 1С возникает внешнее событие. Последний режим удобен для работы со сканерами, например такими. Работа с блютуз добавлена в представленную компоненту, чтобы расширить область ее применения в отношение сканеров.

Рассмотрим сценарии использования bluetooth драйвера. Подключение объекта выполняется стандартно:

КомпонентаBluetooth = Новый("AddIn.Broadcasts.BluetoothCommunication");

Включение или выключение булевого параметра DiscoveryMode определяет в каком режиме мы будем подключать компоненту. Вначале рассмотрим режим поиска устройств (DiscoveryMode = Истина). В этом режиме после вызова метода Подключить компонента в фоновом процессе будет выполнять поиск всех доступных устройств и при их обнаружении передавать внешнее событие с именем DeviceDiscovered:

Данные об устройстве возвращаются в строке xml вида:

<BluetoothDevice Name="Any device" Address="01:01:01:01:01:01"/>

содержащей имя и mac-адрес устройства. О включении и завершении режима поиска дополнительно сигнализируют внешние события DiscoveringStarted и DiscoveringStopped. Когда DiscoveryMode установлен в Истина, прочие параметры не оказывают возвдействие на работу компоненты, кроме одного - AutoEnable. Он также содержит булево значение. Если его включить, а в настройках вашего устройства блютуз окажется выключенным, компонента попытается его включить, запросив разрешение у пользователя через стандартный диалог. Аналогичным образом блютуз может включатся и в режиме обмена данными.

Примечание: К сожалению, архитектура внешних компонент 1С для Андроид не позволяет оповещать мобильное приложение об ответах пользователя в стандартных диалогах. В данной работе это относится как к упомянутому диалогу активации блютуз, так и к выводимым компонентой запросам на дополнительное права администратора блютуз и диалогам на сопряжения устройств. В таких случаях компонента в методе Подключить возвращает ошибки с кодом 2001 или 1002. Разработчик мобильного приложения должен будет предложить пользователю подключиться повторно или реализовать какой-нибуть цикл с задержкой для повторной проверки результата подключения.

При работе драйвера в режиме коммуникации (DiscoveryMode=False) обязательна установка параметра Device (строка). Это может быть как mac-адрес, так и имя устройства. Несопряженные устройства при подключении будут вызывать стандартный системный диалог:

После подтверждения пользователя устройство будет добавлено в список сопряженных и подключено. Разрабочик мобильного приложения может также воспользоваться списком сопряженных устройств, который читается и возвращается в 1С при получении параметров (метод ПолучитьПараметры) в подчиненных элементах ChoiceList элемента Parameter с именем Device. Если устройство доступно и поддерживает коммуникацию по com-протоколу, после вызова метода Подключить, драйвер открывает потоки на запись и чтение.

Для записи (передачи данных) от мобильного приложения на устройство разработчик может воспользоваться

  • подходом, соответствующим стандарту внешних компонент: данные записываются в параметр InputData в формате строки Base64; передача происходит при вызове дополнительного действия SendData
  • более быстрым способом: вызвать метод ЗаписатьДанные (WriteData), который принимает два аргумента - номер устройства (возвращаемый при вызове Подключить, строка) и сами данные для записи с типом 1С ДвоичныеДанные. При частой коммуникации, понятно, что в этом случае скорость достигается за счет экономии в преобразованиях из base64 и обратно

Чтение данных, как было упомянуто выше, может выполняться в трех режимах, определяемых установкой параметра ReadMode. Если он равен 0, компонента будет ожидать данные от устройства бесконечно долго, и если их нет, блокировать основной поток. Если он равен 1, компонента проверяет наличие данных в потоке чтения. Если они есть, данные читаются, если нет - возвращается ошибка 2013 (в методе ReadData). Установка параметра в значение 2 включает асинхронный режим чтения, когда появление данных будет вызывать внешнее событие DataReceived, а сами данные возвращатся в третьем параметре события в виде строки base64. В асинхронном режиме последовательность чтения и записи не определена, то есть невозможно гарантировать, что данные, отправленные на устройство окажутся там раньше или позже прочитанных данных. Технически чтение инициализируется методом ПрочитатьДанные (ReadData). Первый параметр, как обычно, логический номер устройства, во второй возвращаются данные в виде двоичных данных 1С. Добавленные в платформу в последних релизах мощные средства работы с двоичными данными в виде потоков, позволят разработчику перекодировать их в строки с любыми кодировками при необходимости. Параметр DirectRead (булево) во включенном состоянии указывает драйверу порождать внешние события DataReceived при каждом получении данных. Понятно, что он имеет смысл для режимов 0 и 1. В асинхронном режиме внешнее событие возникает в любом случае. Его установка как и при чтении немного замедляет работу драйвера, если Вы работаете с синхронным устройством в режиме 0, внешние события будут лишними. Для режима 0 используется еще один параметр BufferSize. Это число - размер буфера чтения в байтах. Если размер данных превышает установленный размер буфера, чтение будет успешно выполнено несколько раз до исчерпания данных.

В режиме последовательной коммуникации (ReadMode=0), с помощью этой компоненты можно запрограммировать работу многих синхронных устройств, например, кассовых аппаратов. В моем багаже имееется несколько компонент для мобильной платформы 1С, предназначенных для ККМ, поддерживающих технологию блютуз. Командный протокол для них "зашит" в код самой компоненты, но я не вижу препятствий для реализации команд устройств, используя саму 1С платформу и эту внешнюю компоненту.

О примере

Макет компоненты из конфигурации, прилагаемой, к статье не содержит дополнительных разрешений (permissioms). Если они требуются для получения конкретных оповещений, их можно добавить в архив макета компоненты (включить файл android_manifest_permissions.xml) и собрать приложение.

Конфигурация и внешняя компонента предназначены для работы с релизом мобильной платформы не ниже 8.3.15.59.  Допускается также работа с релизами, начиная с 13-го, но для этого необходимо вручную отредактировать манифест компоненты в архиве и удалить поддержку 64-битный платформ.

Оповещения Broadcasts Буфер обмена Clipboard Блютуз Bluetooth

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    56896    178    103    

169

SALE! 25%

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    35577    93    161    

189

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    94082    544    186    

310

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    17341    16    33    

21

1С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

12900 руб.

08.06.2023    7146    1    0    

47

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    27057    135    98    

87

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35792    110    127    

113
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. efin 02.03.18 23:47 Сейчас в теме
Спасибо!
А исходники этой ВК можно увидеть?
Pozd; Flok; vasiliy_b; user1041486; PROF1L; +5 Ответить
2. greyhedgehog 2 17.05.18 12:51 Сейчас в теме
Игорь, спасибо! Очень помогла компонента для работы со встроенным сканером в ТСД Honeywell EDA50K.
10. s.neumyvakin_2015 09.06.18 13:24 Сейчас в теме
(2)Добрый день! Напиши пожалуйста как ты настраивал компоненту. Четвертый день ума не могу дать ТСД Honeywell EDA50K
11. greyhedgehog 2 09.06.18 15:08 Сейчас в теме
(10) Там основные настройки надо на ТСД производить:

в ТСД:
Настройки --> Scan Settings --> Internal Scanner --> Default profile --> Data Processing Settings -->
Поставить галку Scan to Intent. Ткнуть в поле Data Intent (Именно в строку, а не в галку), откроются настройки Data Intent. Там поставить галку Data Intent и в поле Action вбить произвольное уникальное имя действия. Я ввел: "scan.rcv.message" (без кавычек).

Дальше, в конфигурации-примере Игоря, надо немного код изменить с батарейки на ШК:

В конфигурации, в общей форме FormMain можно прям в ПриСозданииНаСервере() прописать ИмяСобытия = "scan.rcv.message"; (этот имя события, которое задал в настройках ТСД, у меня это "scan.rcv.message").
А в процедуре ПриОткрытии() вместо строк с получением состояния батареи прописать поле "data", из которого получать данные:
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcode);
Nrk; konyashkingn; tricolor; temsan; +4 Ответить
66. temsan 17.01.19 12:42 Сейчас в теме
(11) Заработало на ТСД Honeywell EDA50K. Спасибо! До этого были сомнения, т.к. другой сервис для Android? работающий чкерез локальные уведомления не взлетел на 8.3.13.50
390. konyashkingn 2 08.08.23 09:13 Сейчас в теме
(11) Привет из 23 года)

ТСД Honeywell EDA51 работает благодаря компоненте и твоим доработкам. Спасибо огромное!
400. Nrk 10 22.11.23 13:43 Сейчас в теме
Добрый день. Не смотря на время, ваш комментарий помогает! Спасибо автору и вам)))
3. greyhedgehog 2 17.05.18 16:41 Сейчас в теме
Поторопился похвалить. На мобильной платформе 8.3.11.61 на указанном выше устройстве (Android 4.4.4) после подключения компоненты (именно после нажатия кнопки "Старт" в форме) даже на чистом примере с определением состояния батареи непредсказуемо начинает жутко тормозить интерфейс или вообще "падает" приложение в течение нескольких десятков секунд. До подключения все работает. Не подскажете, возможно ли это исправить? Очень нужна стабильная работа на устройстве.
Спасибо.
4. IgorKissil 351 17.05.18 22:22 Сейчас в теме
Проверил на указанной платформе и 8-м андроиде - все ОК. Проверить на 4-м сейчас не могу. Но вполне допускаю, что могут быть проблемы. Я до сих пор держу два сборщика мобильных приложений под рукой, один "свежий", другой с платформой 8.3.9, ибо ТСД у одного клиента с 4м андроидом работают только с этой платформой.
5. greyhedgehog 2 17.05.18 23:47 Сейчас в теме
(4) Спасибо. Да, похоже дело в версии Андроида, на телефоне с 6-м работает, а на телефоне с 4-м такое же поведение. К сожалению ТСД на 4-м и ее не обновить, попробую с платформой 8.3.9 поэкспериментировать.
7. IgorKissil 351 29.05.18 07:44 Сейчас в теме
(5) Проверил на эмуляторе 4-го андроида - пример к статье работает. Увы, физических устройств с этой версией у меня нет. На терминале с 5-м адроидом тоже все в порядке.
8. IgorKissil 351 02.06.18 19:47 Сейчас в теме
(5) Обновил пример для новой мобильной платформы
70. KostyaBu 20 30.01.19 17:04 Сейчас в теме
Сканер использует datawedge, Сканер LPT82
В настройках datawedge стоит send Barcode data - clipboard (Есть еще keyboard )

пример с батарейкой работает превосходно.
Но совершенно не могу поймать Шк, Событие есть, а шк в XML нет. Прошу подсказки.

ИмяСобытия = "DATA_SCAN";
имя поля как написано выше "com.symbol.datawedge.data_string"

barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"com.symbol.datawedge.data_string",XMLСтрока(Ложь),XMLСтрока(8));
Компонента.УстановитьПараметр("CaptureData",barcode);

пожалуйста подскажите, что не так.
150. Meteorage 21 12.09.19 11:03 Сейчас в теме
(70) Приветствую! Ты решил свою проблему при помощи этой компоненты?
151. KostyaBu 20 12.09.19 14:43 Сейчас в теме
(150) и да и нет. сейчас часть терминалов использует эту обработку а часть самописную (написанную тоже благодаря бесплатной статье автора).Но насколько мне известно автор доработал функционал с буфером и все работает.
71. KostyaBu 20 30.01.19 17:56 Сейчас в теме
Сканер использует datawedge, Сканер LPT82
В настройках datawedge стоит send Barcode data - clipboard (Есть еще keyboard )

пример с батарейкой работает превосходно.
Но совершенно не могу поймать Шк, Событие есть, а шк в XML нет. Прошу подсказки.

ИмяСобытия = "DATA_SCAN";
имя поля как написано выше "com.symbol.datawedge.data_string"

barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"com.symbol.datawedge.data_string",XMLСтрока(Ложь),XMLСтрока(8));
Компонента.УстановитьПараметр("CaptureData",barcode);

пожалуйста подскажите, что не так.
6. IgorKissil 351 18.05.18 08:33 Сейчас в теме
попробуйте собрать под sdk ниже 25
9. greyhedgehog 2 09.06.18 09:38 Сейчас в теме
Спасибо. Обновленная версия примера работает стабильно, по крайней мере на имеющемся у меня телефоне с Android 5.0.1 и на ТСД с Android 7.1.1 проблем больше нет. На ТСД перенастроил компоненту на событие от сканера штрихкода, ШК перехватываются замечательно. Специально проверил на предмет описанных в некоторых статьях пропусков при сканировании ШК, у меня на ТСД не получилось заставить пример пропускать сканирования, даже при очень интенсивной работе, при последовательном сканировании нескольких ШК, все работало.
12. rem2222 28.06.18 13:56 Сейчас в теме
Добрый день, помогите пожалуйста. Установил на ТСД с андроид 4.4, интент ловит и батарейки и сканШК, но данных в них нет. Что можно с этим сделать? Прилагаю скан на Андр8 и на 4.4
Прикрепленные файлы:
286. 1cspec 118 05.02.21 00:29 Сейчас в теме
(12) Вы разобрались как отловить Штрихкод? Аналогичная проблема.
13. hobi 616 16.07.18 16:52 Сейчас в теме
Отличная компонента, на Honeywell EDA50 работает без проблем !
14. IgorKissil 351 16.07.18 18:11 Сейчас в теме
В версии 1.0.2 исправлена ошибка в компоненте, которая в редких случаях может вызвать утечку памяти
15. hobi 616 18.07.18 16:10 Сейчас в теме
Странное поведение компоненты.
Связь ТСД с компьютером через кабель (ADB.exe, Интернет тоже через кабель)

Сценарий 1:
Добавляю на мобильной платформе мобильное приложение, оно загружается на ТСД, сразу вхожу
пользовательский режим.
ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native)
отрабатывает успешно и впоследствии работает в этом приложении.

Сценарий 2:
После загрузки мобильного приложения на ТСД отключаю кабель, затем вхожу в пользовательский
режим.
ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native)
не отрабатывает ! И впоследствии не запускается.

Сценарии 1 и 2 запускал несколько раз, поведение не меняется, именно такое, как описано.
Такое ощущение, что при первом подключении компонента обращается к внешнему интернет-ресурсу
и начинает затем работать, только если этот ресурс был доступен.

Если доступ к сети интернет перекрыт службой безопасности, то использовать компоненту проблематично (
16. hobi 616 18.07.18 17:50 Сейчас в теме
(15)
Странное поведение компоненты

Такое поведение наблюдается и в собственном приложении и в приложении, загруженном из конфигурации broadcast.cf, размещенной в публикации.
17. IgorKissil 351 18.07.18 21:24 Сейчас в теме
(15) Никаких обращений к внешним ресурсам через интернет компонента не выполняет. Собирайте приложение сборщиком. Но если хотите запускать через платформу, для приложений с внешними компонентами есть нюансы, приложение должно быть опубликовано на сервере отладки и тогда действительно идет обращение в интернет.
TreeDogNight; user1021675; +2 Ответить
18. hobi 616 19.07.18 06:43 Сейчас в теме
(17) Спасибо за ответ. Буду с нюансами бороться.
175. Azamatex 13 30.10.19 07:55 Сейчас в теме
(17)Я настроил сервер отладки (проверил, отладка идет), но ошибка компонента не подключена все равно выходит. Можно как-нибудь отключить этот нюанс?
TreeDogNight; kuznetsov1c; dmitry.jakunin; +3 Ответить
387. TreeDogNight 22 04.05.23 13:44 Сейчас в теме
(175) Добрый день! Вам удалось решить эту проблему?

Уже неактуально, нашёл решение в (162)
67. pushking 9 21.01.19 10:29 Сейчас в теме
ТСД Caribe PL-40L (Android 7.0)

ИмяВнешнегоСобытия = "scan.rcv.message";

РезультатПодключенияВК = ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверСканераUniversalBroadcast", "Broadcasts", ТипВнешнейКомпоненты.Native);
Если РезультатПодключенияВК = Истина Тогда
	
	Попытка
		глВнешняяКомпонентаUniversalBroadcast = Новый("AddIn.Broadcasts.UniversalBroadcast")
	Исключение
		СтруктураОтвета.Вставить("Ошибка", "Ошибка создания класса ""UniversalBroadcast""!");
	Конецпопытки;
	
	Если НЕ глВнешняяКомпонентаUniversalBroadcast = Неопределено Тогда
		Попытка
			глВнешняяКомпонентаUniversalBroadcast.УстановитьПараметр("FilterName", ИмяВнешнегоСобытия);
			глВнешняяКомпонентаUniversalBroadcast.УстановитьПараметр("CaptureData", ОбщийМодульКлиентСервер.ПодставитьПараметрыВСтроку(глВнешняяКомпонентаUniversalBroadcast.ПолучитьШаблонОписанияДанных(), "barocode", XMLСтрока(Истина), XMLСтрока(15)));
		Исключение
			СтруктураОтвета.Вставить("Ошибка", "Ошибка при установке параметра ""CaptureData""!");
		Конецпопытки;
	КонецЕсли;
	
Иначе
	СтруктураОтвета.Вставить("Ошибка", "Ошибка подключения компоненты ""UniversalBroadcast""!");
КонецЕсли;
Показать
Mayak; chemezov; alexex; markers; +4 Ответить
114. markers 276 20.06.19 13:53 Сейчас в теме
(67) Большое спасибо! Работает!
250. chemezov 48 21.07.20 14:17 Сейчас в теме
(114)Подскажите пожалуйста. Этот код вы исполняете где то при запуске 1с мобильного приложения или при открытии приложения у вас программно запускается форма и при открытии этой формы уже исполняется код?
248. chemezov 48 21.07.20 11:07 Сейчас в теме
(67) Подскажите пожалуйста. Этот код вы исполняете где то при запуске 1с мобильного приложения или при открытии приложения у вас программно запускается форма и при открытии этой формы уже исполняется код?
251. pushking 9 21.07.20 14:35 Сейчас в теме
(248)
ПередНачаломРаботыСистемы - вызывается инициализация и помещается в глобальную переменную.
ПриЗавершенииРаботыСистемы - устройство отключается.

Не забудьте что компоненты работают лишь в скомпилированном приложении.
252. chemezov 48 21.07.20 16:04 Сейчас в теме
(251) Большое спасибо, сейчас буду пробовать.
253. chemezov 48 21.07.20 16:35 Сейчас в теме
(251) А правильно ли я понял, что после инициализации, где нибудь в форме в которой мы будем находиться во время сканирования, мне надо слушать событие "ОбработкаОповещения" с именем события "scan.rcv.message"?
254. chemezov 48 21.07.20 16:46 Сейчас в теме
(251) Правили ли вы какой-нибудь манифест, как некоторые коллеги?
242. alexex 44 19.03.20 05:44 Сейчас в теме
Автору спасибо!

Caribe PL-55L

ИмяВнешнегоСобытия = "com.action.SCAN_RESULT";
	
	Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда
		Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");
		Компонента.УстановитьПараметр("FilterName",ИмяВнешнегоСобытия);
		ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
		barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"scanContext", XMLСтрока(Истина), XMLСтрока(15));
		Компонента.УстановитьПараметр("CaptureData",barcode);
		
		Если не Компонента.Подключить(НомерУстройства) Тогда
			ТекстОшибки = "";
			КодОшибки = Компонента.ПолучитьОшибку(ТекстОшибки);
			ПоказатьПредупреждение(,"Ошибка: "+КодОшибки+", "+ТекстОшибки);
		КонецЕсли;
				
	Иначе
		ПоказатьПредупреждение(,"Компонента не подключена",5);
		ЗавершитьРаботуСистемы(Ложь);
	КонецЕсли;
Показать
321. пользователь 16.07.21 12:54
Сообщение было скрыто модератором.
...
322. BALGAR 16.07.21 13:03 Сейчас в теме
(242)Добрый день! У меня тоже ТСД Caribe PL55L, но не могу поймать broadcast. Может проконсультируете меня как вы настроили свой ТСД. Напишите мне пожалуйста на почту dima.stanchevskiy@gmail.com
323. alexex 44 05.08.21 10:37 Сейчас в теме
(322) Просто режим сканирования broadcast. Вопрос, приложение собранное?
329. BALGAR 31.08.21 14:06 Сейчас в теме
(323)Приложение не собрано, будет ли оно работать если его опубликовать как мобильное приложение?
331. alexex 44 01.09.21 04:54 Сейчас в теме
(329) будет работать, только надо сконфигурировать веб сервер. см 162 сообщение
TreeDogNight; +1 Ответить
332. BALGAR 01.09.21 07:27 Сейчас в теме
333. BALGAR 01.09.21 14:57 Сейчас в теме
(331) У меня веб сервер Apache, добавил в mime.types параметры (so apk dylib a). Опубликовал мобильное приложение, подключаюсь к нему, все нормально. Но при выполнении кода "Компонента.Подключить()" выдает код ошибки "0". Не получали такой ошибки? А если собрать APK файл. всё работает нормально).
19. NecroJew 07.08.18 13:19 Сейчас в теме
Добрый день!

Пробовал установить демонстрационное приложение на два устройства (в обоих случаях мобильная платформа 8.3.12.64, согласно вашей рекомендации):
1. ТСД Urovo V5100, Android 4.3
2. Чистый телефон Nexus 5, голый андроид 6.0.1

При выполнении команды Компонента.Подключить() приложение вылетает. На Андроиде 4.3 без отображения информации об ошибке, в 6.0.1 выдает следующий текст:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.addFlags(int)' on a null object reference
at com.iksoftware.unimes.BroadcastMessage$2.run(BroadcastMessage.java:283)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Не подскажете, в чем может быть проблема?
Спасибо.
s.neumyvakin_2015; +1 Ответить
20. s.neumyvakin_2015 08.08.18 08:02 Сейчас в теме
(19) Добрый день!

У меня на ТСД Honeywell тоже самое, хотя на прошлой версии компоненты все работало.
21. IgorKissil 351 08.08.18 08:10 Сейчас в теме
(19) (20) Попробуйте эту версию компоненты, если она рабочая, обновлю пример в статье: https://1drv.ms/u/s!AnW7yKDG1JDfh8J5DM1-VL_mHAdDqg
22. s.neumyvakin_2015 08.08.18 10:25 Сейчас в теме
(21) Добрый день!
К сожалению ошибка осталась:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.addFlags(int)' on a null object reference
at com.iksoftware.unimes.BroadcastMessage$2.run(BroadcastMessage.java:283)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6130)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
NecroJew; +1 Ответить
247. chemezov 48 20.07.20 06:26 Сейчас в теме
(19) Для Urovo есть нормальный драйвер. Можно на сайте скачать, либо в конфигурации 1С Мобильная касса в макетах. Я дл Urovo 5100 делал приложение в прошлом году, драйвер рабочий.
23. IgorKissil 351 08.08.18 11:13 Сейчас в теме
Тогда все сложнее. Я ошибку воспроизвести не могу, на доступных мне устройствах все работает. В моем коде даже нет такого места Intent.addFlags(int). Максимум что могу, это позже попробовать на эмуляторе nexusa.
107. s.neumyvakin_2015 03.06.19 08:01 Сейчас в теме
(23)
(105)
Добрый день!
К сожалению нет. Что то я наверное не так делаю раз у всех работает а у меня нет.
24. hobi 616 21.08.18 10:23 Сейчас в теме
Результат в виде XML-строки - это здорово.
Но недавно наткнулся на проблему обработки XML-строки платформой 1С.
Вот XML, полученный при считывании штрихового кода на образце упаковки сигарет:
<?xml version="1.0" encoding="UTF-8"?><MessageData><FilterName>com.android.server.scannerservice.broadcast</FilterName><FilterData name="m3scannerdata">010460026601181721"Nv>vM-91ffd0929ysTNw==24010053940</FilterData><FilterData name="m3scanner_code_type">DataMatrix</FilterData></MessageData>

В этом примере кода последовательность символов & # 2 9 ; при вставке кода в данном сообщении автоматически была заменена на собственно сам спецсимвол. Внешняя компонента возвращает именно представление спецсимвола & # 2 9 ; ( без пробелов, если пробелы убрать, получится  )

Код
	ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.УстановитьСтроку(ТекстXML);
		Пока ЧтениеXML.Прочитать() Цикл
...
	

выбрасывает исключение. Спецсимвол с кодом 29 (представление
& # 2 9 ;
) платформой не обрабатывается.
Приходится вставлять "костыль" СтрЗаменить перед УстановитьСтроку.

Это просто константация факта, особенности обработки XML-представления данных, возвращаемых компонентой.
25. hobi 616 22.08.18 10:28 Сейчас в теме
Вопрос к Автору:
В связи с тем, что в составе данных широковещательного сообщения
может быть строка, содержащая символы, не обрабатываемые
платформой 1С (символ с кодом 29) в том случае, если строка
размещена в XML-формате, можно ли доработать компоненту
следующим образом:
- добавить параметр с типом булево: HexСтрокиВXML или Base64СтрокиВXML.
Чтобы при установке параметра в значение "Истина", компонента
возвращала в XML, в котором строчные значения преобразованы
в Hex или Base64.

Такая доработка позволила бы обойти текущую ошибку платформы 1С -
исключение при вызове ЧтениеXML.Прочитать() , если для ЧтениеXML
установлена строка, содержащая последовательность символов & # 2 9 ;
И, кроме того, для остальных символов с кодом, меньшим 32
(например символ ">") не придется обрабатывать значения строчных полей
СтрЗаменить(Поле, "& g t ;", ">"). Лучше уж один раз обработать и преобразовать
из Hex или Base64 в оригинальную строку.

?

Для иллюстрации проблемы - изображение этикетки на блоке сигарет.
Обработка строки XML, возвращаемой компонентой при чтении
кода DataMatrix с этикетки, вызывает исключение в платформе 1С
( ЧтениеXML.Прочитать() )
Прикрепленные файлы:
26. IgorKissil 351 22.08.18 13:44 Сейчас в теме
(25) Можно. По срокам пока ничего не скажу
user598655_ilia-bers; hobi; +2 Ответить
27. PaulSharkoff 28.08.18 17:38 Сейчас в теме
Игорь, спасибо. Компонента отлично завелась на Zebra MC3300 (Andriod 7) на мобильном клиенте 8.3.12 для перехвата сообщений от DataWedge
34. user1024947 19.10.18 13:55 Сейчас в теме
(27)Добрый день

Помогите разобраться у нас оборудование почти как у Вас:
сбора данных: Zebra TC-20 на 7 андроиде

При сканирование ШК в обработчике "Внешнее событие" в переменную данные возвращается XML строка которая не содержит Штрих код

В обработчике при открытии barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(8));
Компонента.УстановитьПараметр("CaptureData",barcode);
46. ared20 02.11.18 12:37 Сейчас в теме
(34) Вам удалось разобраться? У меня Zebra MC40. Тоже событие ловит, а данные пустые. Может поле должно не "data" называться?
48. user1024947 02.11.18 15:54 Сейчас в теме
(46) Да, удалось. Имя переменной для баркода "com.symbol.datawedge.data_string" , для типа баркода "com.symbol.datawedge.label_type".
50. ared20 02.11.18 16:14 Сейчас в теме
(48) Ну ничего себе имя... Заработало! Спасибо огромное!
57. adt 16.11.18 11:11 Сейчас в теме
(50) Добрый день, такая же проблема - подскажите, где и как задать имя переменной для для баркода и для типа баркода, никак не могу сообразить.
61. ared20 19.11.18 16:15 Сейчас в теме
(57) В обработчике при открытии barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(8));
Компонента.УстановитьПараметр("CaptureData",barcode);

Вот здесь вместо "data" нужно написать то самое длинное имя "com.symbol.datawedge.data_string". Если нужен еще тип кода, то нужно установить еще один параметр и вместо "data" указать "com.symbol.datawedge.label_type".
TreeDogNight; adt; +2 Ответить
100. vita8383 08.05.19 09:06 Сейчас в теме
(61) А вы манифест не правили? У меня при следующем коде, ШК не перехватывается:

Процедура ПриОткрытии(Отказ)

ИмяСобытия = "scan.rcv.message";

Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда
		Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");
		Компонента.УстановитьПараметр("FilterName",ИмяСобытия);
		ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"com.symbol.datawedge.data_string",XMLСтрока(Ложь),XMLСтрока(0)); 
		Компонента.УстановитьПараметр("CaptureData",barcode);
	Иначе
		ПоказатьПредупреждение(,"Компонента не подключена",5);
		ЗавершитьРаботуСистемы(Ложь);
	КонецЕсли;

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


Показать
28. SergeyPodolniy 12.09.18 09:24 Сейчас в теме
Добрый день!
Пытаюсь настроить компоненту на ТСД Zebra MC36, Android 4.4. Данные с батареи ловит, а со сканера - нет. Имя события в 1С прописал такое же, как в настройках сканера. Может ли проблема заключаться в том, что я неверное имя данных указываю в CaptureData? В документации к ТСД этой информации нет, разные варианты перепробовал и пока ничего не получается.
29. SergeyPodolniy 13.09.18 11:19 Сейчас в теме
(28) Нашел причину. Оказалось, что intent формируется с определенной категорией и чтобы его отловить нужно в фильтре эту категорию явно указать. Вопрос к автору, можно ли добавить в настройки компоненты параметр "FilterCategory" по аналогии с "FilterName"?
30. IgorKissil 351 17.09.18 11:31 Сейчас в теме
(29) В релиз 1.0.4 добавил параметр Category
31. Гость 18.09.18 07:40
47. ared20 02.11.18 15:44 Сейчас в теме
(29)А какая категория по умолчанию формируется? Или вы в Datawedge категорию указали? У меня тоже событие ловится, а данные не передаются.
32. SenFeron 02.10.18 19:19 Сейчас в теме
Добрый день.
После запуска приложения. Выдается сообщения "Компонента не подключена".
Подскажите пожалуйста, кто то встречался с данной проблемой?
Может кто подсказать как запустить компоненту?

ТСД Honeywell EDA50K
Android 7.1.1
Платформа 8.3.12.67

Пробовал сначала все выполнить по комментарию greyhedgehog (номер комментария - 11)

Потом поставил оригинальный из темы Cf , проблема осталась.
TreeDogNight; dbetsik; kuznetsov1c; chemezov; +4 Ответить
43. menen 25.10.18 09:33 Сейчас в теме
(32) Вопрос не решили? Также не подключается ни на ТСД (PL-40 Android 7), ни на планшете (Huawei Andr 7) ...
TreeDogNight; dbetsik; kuznetsov1c; chemezov; +4 Ответить
33. user1024947 19.10.18 13:37 Сейчас в теме
Добрый день

Подскажите пожалуйста что сделать.
Наше оборудование Терминал сбора данных: Zebra TC-20 android ver 7.1

В обработчике по открытии
Добавлено
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcode);

При сканирование ШК в обработчике "Внешнее событие" в переменную данные возвращается XML строка которая не содержит Штрих код
330. BALGAR 31.08.21 19:15 Сейчас в теме
(33) у Вас СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(0));
а вы попробуйте СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Истина),XMLСтрока(15));
35. menen 25.10.18 07:05 Сейчас в теме
Здравствуйте!
Игорь, пытаемся опубликовать скаченную конфигурацию (платформа 8.3.12.1685 32x в 64 WinОС) для проверки на ТСД - не получается - выдается ошибка следующего содержания:

"Ошибка разбора манифеста внешней компоненты Component: отсутствует обязательный атрибут name"

В чем может быть проблема?
36. IgorKissil 351 25.10.18 07:30 Сейчас в теме
(35) Я думаю, Вы пытаетесь собрать приложение на Windows 64? Взял cf из статьи и пересобрал сборщиком в Win10 64bit - все ОК.
41. menen 25.10.18 08:18 Сейчас в теме
(36) Платформа 1С 8.3.12 развернута на ноуте 64 Windows 7. Это как-то влияет?
42. menen 25.10.18 09:03 Сейчас в теме
(41) Развернул 1С на Win10 ошибка ушла.
Однако как и у (32) - компонента на ТСД НЕ подключается.

ТСД PL-40L (Caribe)
Android 7.0
Платформа 8.3.12.67
37. IgorKissil 351 25.10.18 07:33 Сейчас в теме
(35) Как Вы ее пытаетесь публиковать? На http сервере? Разобраться как это делать для приложений с компонентами у меня не хватило времени/терпения. Я все делаю через adb install
alexex; user1021675; +2 Ответить
38. menen 25.10.18 07:57 Сейчас в теме
Из конфигуратора - Публикация мобильного приложения - на Веб-сервере (Apache 2.2)
39. menen 25.10.18 08:00 Сейчас в теме
(37) Игорь, пока планировали работать на мобильной платформе без сборки
40. menen 25.10.18 08:08 Сейчас в теме
(39) даже при записи конфигурации мобильного приложения в файл (для сборщика) выходит это сообщение
162. alexex 44 17.10.19 13:47 Сейчас в теме
(37)
Разобраться как это делать для приложений с компонентами у меня не хватило времени/терпения.


Во время публикации приложения в настройках http-сервера необходимо добавить типы MIME для следующих расширений: .so, .apk, .dylib, .a. Тип MIME: application/octet-stream.


рестарт web сервера
Прикрепленные файлы:
TreeDogNight; SkorikA; +2 Ответить
62. SagittariusA 23.11.18 11:45 Сейчас в теме
(35)
Платформа 8.3.12.1685
"Ошибка разбора манифеста внешней компоненты бла-бла..."
Такая ошибка вываливается почти на каждой компоненте.

В проблемных манифестах добавлял атрибут
<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle" name="com_1c_MobileBarcodeScanner">
  <component os="Android" path="libcom_1c_MobileBarcodeScanner_i386_1_0_3_2.so" codeType="c++" type="native" arch="i386" name="com_1c_MobileBarcodeScanner"/>
  <component os="Android" path="com_1c_MobileBarcodeScanner_1_0_3_2.apk" codeType="java" type="native" arch="i386" name="com_1c_MobileBarcodeScanner"/>
  <component os="Android" path="libcom_1c_MobileBarcodeScanner_ARM_1_0_3_2.so" codeType="c++" type="native" arch="ARM" name="com_1c_MobileBarcodeScanner"/>
  <component os="Android" path="com_1c_MobileBarcodeScanner_1_0_3_2.apk" codeType="java" type="native" arch="ARM" name="com_1c_MobileBarcodeScanner"/>  
</bundle>


По аналогии, как в комментарии (56)
44. Rokstedi 19 31.10.18 18:03 Сейчас в теме
Не срабатывает внешнее событие, хотя компонента подключается. Подскажите, приложение обязательно нужно собирать или можно опубликовать и подключиться с мобильной платформы?
45. Rokstedi 19 01.11.18 11:57 Сейчас в теме
(44)Все разобрался. Собрал приложение, заменил по инструкции интент фильтр и сообщения начали приходить.
160. volchica 3 16.10.19 12:13 Сейчас в теме
(45) можно подробнее.. у меня такая же ситуация, компонента подключается, а событие не срабатывает. Я публикую конфу и запускаюсь с моб.платформы (если это важно в данном случае).
"заменил по инструкции интент фильтр" - поясните что вы сделали..
161. Rokstedi 19 16.10.19 15:50 Сейчас в теме
(160)
нструкции интент ф

Нужно обизательно сборщиком приложение собрать и сборщику подсунуть платформу откорректированную. Иначе 1с морозится от этих броадкаст сообщений!
388. TreeDogNight 22 04.05.23 14:19 Сейчас в теме
(161) Неужели в режиме работы через публикацию никак не получится запустить? У нас архитектура базы такая, что для каждого отдельного пользователя / склада нужно создавать отдельную базу в списке баз мобильной платформы.
49. ared20 02.11.18 15:59 Сейчас в теме
Здравствуйте! ТСД Motorola MC40 на андоиде 5.1.1. На нем работа идет через Datawedge. Событие ловится, но в данные ничего не возвращает. А для батарейки все норм передает. Может ему имя поля "data" не подходит для этого ТСД? Подскажите в чем может быть причина.
51. ared20 02.11.18 16:49 Сейчас в теме
(49) Разобрался с помощью(46)
Да, удалось. Имя переменной для баркода "com.symbol.datawedge.data_string" , для типа баркода "com.symbol.datawedge.label_type".
TreeDogNight; +1 Ответить
52. hobi 616 02.11.18 17:14 Сейчас в теме
Добрый день.
На платформе 1С:Предприятие 8.3.12.1685 перестала работать загрузка мобильного приложения через сервер.
Сообщение при попытке публикации мобильного приложения.
Ошибка разбора манифеста внешней компоненты Component: отсутствует обязательный атрибут
name

На предыдущих версиях 8.3.12 публикация завершается нормально.
53. ared20 02.11.18 18:49 Сейчас в теме
(52)Это наверное не через сервер, а если в конфигураторе по пути Конфигурация/Мобильноеприложение/Опубликовать . У меня тоже такая ошибка в этом случае. Но на web-сервере все публикуется без ошибок