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

15.03.21

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

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

Скачать файлы

Наименование Файл Версия Размер
Конфигурация с компонентой и примером ее использования
.cf 1,93Mb
530
.cf 1.3.3 1,93Mb 530 Скачать

Новое в релизе 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.х Управленческий учет Платные (руб)

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

2880 руб.

03.12.2018    54608    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

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

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

13200 9900 руб.

27.12.2021    33277    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

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

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

2000 руб.

22.04.2019    91943    511    186    

293

Медиадисплей. Рекламный информационный монитор для покупателя.

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

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52100    34    69    

43

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

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

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

12950 руб.

30.05.2023    3387    2    0    

4

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

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

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

2400 руб.

12.05.2020    26243    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

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

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44974    117    64    

60
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
96. arancheev.s 04.04.19 15:46 Сейчас в теме
(95) Очень хочется использовать последние релизы 1с и одну компоненту на своих разных терминалах. Спасибо большое, буду ждать.
97. IgorKissil 350 09.04.19 10:25 Сейчас в теме
(96) Только что выложил релиз 1.1.1 под андроид API 14. После обновления публикации пробуйте.
102. vita8383 11.05.19 11:41 Сейчас в теме
(58) Добрый день, удалось победить проблему на данном устройстве?
60. Xershi 1474 16.11.18 18:08 Сейчас в теме
Добрый день!
Подскажите материалы как самому написать компоненту для андроида?
Вот в этой теме изучаю вопрос:
https://forum.infostart.ru/forum15/topic202825/
63. hobi 615 03.12.18 11:28 Сейчас в теме
Добрый день.
Можно ли каким-то образом использовать сборку из нескольких конфигураций, в каждую из которых встроена компонента сканирования ?
Пока только с одной конфигурацией в сборке заработало...
64. koupny 12.12.18 17:20 Сейчас в теме
Добрый день. А у кого то получалось отловить нажатия на встроенной клавиатуре?
249. chemezov 47 21.07.20 11:12 Сейчас в теме
(64)Не при помощи этой компоненты, да получилось.
256. AneJIbcuH 37 21.08.20 05:19 Сейчас в теме
(249) подскажите, с помощью какой ?
257. chemezov 47 21.08.20 10:36 Сейчас в теме
(256) https://infostart.ru/public/1039819/
Правда это не компонента. Это сервис в виде отдельного приложения, но все с ним работает.
65. koks17v 10 27.12.18 15:12 Сейчас в теме
Прекрасно, спасибо, работает идеально! А можно получить исходники?
68. Cube_krsk 34 28.01.19 11:21 Сейчас в теме
Спасибо! Классная компонента!
Использовал для сканирования штрихкодов на следующих ТСД: Honeywell EDA50 и HT380K.
На обоих ТСД проверил работоспособность под платформой 8.3.10.84 и 8.3.13.45 - работает на обоих. Поэтому, просьба автору: поставь режим совместимости в cf в значение "8.3.10" - проверено, работает.
69. IgorKissil 350 28.01.19 12:32 Сейчас в теме
(68) на всех релизах платформы до 12го была утечка памяти при генерировании внешних событий из внешних компонент а также приложение не выгружалось при закрытии. Если у Вас такого нет, наверное повезло с устройствами
72. WellMaster 104 01.02.19 09:09 Сейчас в теме
Шикарная компонента. Завелось практически сразу. Надо только разобраться в передаваемых параметрах.
Спасибо.
73. Cube_krsk 34 12.02.19 10:38 Сейчас в теме
Столкнулся с проблемой: компонена не умеет передавать русский шрифт в сообщениях. Приходят крякозябры.
Через другие приложения на ТСД русский текст сканируется со штрихкодов, а вот через компоненту приходят крякозябры.
76. IgorKissil 350 13.02.19 10:55 Сейчас в теме
(73) Кодировка XML устанавливается по дефолту из настроек ОС. Т.е. если у вас андроид настроен на русскую локаль все должно быть ОК (проверил). Другое дело если стоит английская или другая локализация. Возможно в будущих версиях добавлю программную настройку
87. Cube_krsk 34 26.02.19 09:13 Сейчас в теме
(73) В настройках сканера EDA50 стояла кодировка ISO 8859-1. Поставил UTF-8 и русский шрифт начал сканироваться нормально.
74. Cube_krsk 34 12.02.19 10:41 Сейчас в теме
Также неплохо было бы получать со сканера XML без обработки компонентой, так как я не знаю, как называются поля в XML, чтобы подставить их в ПолучитьШаблонОписанияДанных()...
guevara74; +1 Ответить
75. IgorKissil 350 12.02.19 11:03 Сейчас в теме
(74) Что значит без обработки? XML формируется в компоненте
81. Cube_krsk 34 25.02.19 11:44 Сейчас в теме
(75) Немного не так выразился.
Неплохо было бы, чтобы компонента имела функцию, возвращающую массив имен доступных полей интента.
Вот тут есть пример: http://forum.infostart.ru/forum92/topic166842/message2034308/#message2034308

Имея такой массив, можно было бы заполнить им список выбора у поля на форме, чтобы пользователь не вбивал имя поля с клавиатура, а выбирал из списка.
83. IgorKissil 350 25.02.19 21:43 Сейчас в теме
(81) Но для этого необходимо вначале получить броадкастовое событие
84. Cube_krsk 34 26.02.19 04:44 Сейчас в теме
(83) Пусть хоть так. Сейчас вообще нет возможности получить список полей, доступных для отслеживания. Например, на ТСД EDA50 я никак не могу найти в интернете имя поля, возвращающего тип штрихкода (EAN13, EAN8, DataMatrix и т.д.). Занимаюсь брутфорсом... Причем безуспешно.
Поэтому я и писал в (74), что неплохо было бы получить XML, содержащий список всех возможных полей. А, если, этот список будет ещё и значения этих полей содержать - вообще будет шикардос!
Можно сделать в виде служебного поля "AllData" и при получении XML, она будет содержать всевозможные поля интента с их значениями.
77. z3dsd3ad 21.02.19 17:02 Сейчас в теме
Сканер АТОЛ Smart.Lite, не отлавливает событие сканирования, имя оповещения взял из настроек сканера, возможно неправильно указал категорию, можно уточнить в каком виде передается параметр категории?
78. z3dsd3ad 22.02.19 13:49 Сейчас в теме
Вопрос решен, не ловит оповещение, если неверно указан формат данных. Для АТОЛ SMART.LITE:
Компонента.УстановитьПараметр("FilterName", "com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST");
Компонента.УстановитьПараметр("CaptureData",СтрокаПараметров, "EXTRA_BARCODE_DECODING_DATA",
XMLСтрока(Ложь), XMLСтрока(0)));
user1021675; +1 Ответить
79. Cube_krsk 34 25.02.19 07:14 Сейчас в теме
Наткнулся на нехорошую ошибку, которую научился воспроизводить со 100% результатом: если мобильное приложение удалить, заново установить и запустить, то стабильно через раз приложение падает с ошибкой:

java.lang.UnsatisfiedLinkError: dalvik.system.DexClassLoader[DexPathList[[zip file "/data/user/0/com.e1c.mobile/files/1C/1cem/76624a6c-6eb9-516e-b5f4-9ad5799f6cb6/ExtCompT/com_iksoftware_unimes.apk"],nativeLibraryDirectories=[/data/user/0/com.e1c.mobile/files/1C/1cem/76624a6c-6eb9-516e-b5f4-9ad5799f6cb6/ExtCompT, /system/lib, /vendor/lib]]] couldn't find "libcom_iksoftware_unimes.so"
	at java.lang.Runtime.loadLibrary0(Runtime.java:984)
	at java.lang.System.loadLibrary(System.java:1530)
	at com.iksoftware.unimes.BroadcastMessage.run(BroadcastMessage.java:46)
	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)
Показать


Через раз - имеется ввиду, что каждый раз приложение удаляется и устанавливается заново из того же файла 1cema.xml, то есть каждый раз происходит первый запуск мобильного приложения.

Приложение простое с единственным кодом (закомментированный кусок оставил для наглядности, для воспроизведения ошибки он не нужен):

Процедура ПриНачалеРаботыСистемы()
	
	Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаШироковещательныхСообщений", "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда
		КомпонентаШироковещательныхСообщений = Новый("AddIn.Broadcasts.UniversalBroadcast");
		КомпонентаШироковещательныхСообщений.УстановитьПараметр("FilterName", "scan.rcv.message");
		//ШаблонОписанияДанных = КомпонентаШироковещательныхСообщений.ПолучитьШаблонОписанияДанных();
		//КомпонентаШироковещательныхСообщений.УстановитьПараметр("CaptureData", ОбщегоНазначенияКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияДанных, "data", XMLСтрока(Ложь), XMLСтрока(0)));
		//Если НЕ КомпонентаШироковещательныхСообщений.Подключить() Тогда
		//	ТекстОшибки	= "";
		//	КодОшибки	= КомпонентаШироковещательныхСообщений.ПолучитьОшибку(ТекстОшибки);
		//	ПоказатьПредупреждение(, "Компонента широковещательных сообщений не подключена по причине: " + КодОшибки + ", " + ТекстОшибки);
		//КонецЕсли;
		ПоказатьПредупреждение(, "Компонента широковещательных сообщений успешно подключена");
	Иначе
		ПоказатьПредупреждение(, "Компонента широковещательных сообщений не подключена");
	КонецЕсли;
	
КонецПроцедуры
Показать


При последующих запусках приложения (не первых), всё работает стабильно и ошибок нет.

Проверял на платформах 8.3.13.45 и 8.3.10.84, ТСД EDA50 (android 7.1.1) и HT380K (android 6.0) - в любых комбинациях ТСД и платформы поведение одинаковое.
80. Cube_krsk 34 25.02.19 08:06 Сейчас в теме
(79) После продолжительных тестов, выяснил, что если перед удалением мобильного приложения закрывать мобильную платформу и выгружать её из памяти через диспетчер приложений, то ошибок нет.

Теперь наиболее вероятным я вижу сценарий, что при ПодключитьВнешнююКомпоненту() создаётся временный файл, куда сохраняется компонента из макета и при закрытии приложения платформа остаётся запущенной и не освобождает этот файл, поэтому после удаления приложения, его установки и запуска, происходит крах платформы и она закрывается, освобождая этот несчастный файл.
Поэтому и падает приложение через раз: после падения платформы, она выгружается из памяти и файл освобождается, что позволяет один раз удалить приложение, установить его и запустить, а последующий удаление, установка и запуск приводят к краху платформы и всё повторяется.
82. IgorKissil 350 25.02.19 21:41 Сейчас в теме
(80) На 8.3.10 такое поведение действительно наблюдалось, вот почему я рекомендую использовать с внешними компонентами платформу не ниже 12-й. Но описанная ошибка связана не с этим. Если перед деинсталляцией приложения Вы очистите его данные - проблема исчезнет. Подозреваю, что платформа компоненты не считает составной частью приложения и оставляет их в файловом кэше. Новая установка вызывает конфликт, и компонента коррекно не разворачивается.
85. Cube_krsk 34 26.02.19 04:45 Сейчас в теме
Ну, и раз пошла такая пьянка, то совсем не понятны телодвижения с методом компоненты "ПолучитьШаблонОписанияДанных" - зачем он нужен? Что, нельзя было для параметра "CaptureData" сделать так же, как для параметра "FilterName" - передаешь значение и всё, остальные телодвижения делает компонента внутри?
86. Cube_krsk 34 26.02.19 06:42 Сейчас в теме
(85) Прошу прощения за сей пост - забыл, что компонента общая для любых бродкастов, а не только для сканера штрихкодов...
88. koks17v 10 12.03.19 15:53 Сейчас в теме
Добрый день. Несколько FilterName и CaptureData нельзя указать?
89. koks17v 10 13.03.19 07:48 Сейчас в теме
(88) Опытным путем понял, что устанавливается только последний FilterName. Вышел из ситуации ухищрениями с разными CaptureData при одинаковом Action. Не планируется ли это развитие?
90. IgorKissil 350 13.03.19 10:54 Сейчас в теме
(89) FilterName может быть только один. Но ничто не мешает создать несколько экземпляров AddIn.UniversalBroadcast
91. bashinsky 133 26.03.19 07:59 Сейчас в теме
Добрый день!
В чем может быть ошибка при создании объекта?
Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");

Пишет
Тип не определен (AddIn.Broadcasts.UniversalBroadcast)

Версия мобильного приложения 8.3.14.53
Версия андроида 7.1.1
355. TryToRun 01.11.21 16:22 Сейчас в теме
(91)Как удалось обойти ошибку?
98. arancheev.s 09.04.19 12:46 Сейчас в теме
Добрый день. Есть у кого-нибудь возможность проверить версию 1.1.1 на Android 4 ?
События отлавливаются, но данные пустые.

Спасибо заранее.
99. user1041486 22.04.19 03:50 Сейчас в теме
А можно получить исходники ВК?
101. shmel78 11 08.05.19 14:56 Сейчас в теме
Выражаю огромную благодарность автору разработки!
Успешно завелся ТСД - ZEBRA MC36 Android 4.4
Мобильная платформа 8.3.13.64

Для тех кто будет пользоваться -
ИмяСобытия - можно настроить в ScanConfig (стандартная утилита настройки сканера)
Category - можно настроить в ScanConfig (стандартная утилита настройки сканера)

ИмяСобытия = "com.symbol.scanconfig.SCANDEMO";
Компонента.УстановитьПараметр("FilterName",ИмяСобытия);
Category = "com.symbol.category.DEFAULT";
Компонента.УстановитьПараметр("Category",Category);
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"com.symbol.scanconfig.decode_data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcode);

Респект автору!
103. s.neumyvakin_2015 15.05.19 16:33 Сейчас в теме
Добрый день!

ТСД Honeywell EDA50K
Версия мобильного приложения 8.3.12.64
Версия андроида 7.1.1

При запуске приложения из примера пишет компонента не подключена. В чем может быть причина? Подскажите пожалуйста.
105. user1041486 31.05.19 11:04 Сейчас в теме
(103)Разобрались в проблеме?
108. s.neumyvakin_2015 03.06.19 16:40 Сейчас в теме
104. Evgeniy_gnedov 22.05.19 14:03 Сейчас в теме
Развернул cf, опубликовал конфигурацию на apache сервере и подключил ТСД Атол smart lite. Использую мобильный клиент. Платформа 8.3.14.53

При запуске ошибка:
"Файл не обнаружен \data\user\0\com.e1c.mobile.client\files\1cem\-------\ExtCompT\libcom_iksoftware_unimes.so.cfl"

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

Что и где подкрутить, чтобы заработало?
210. HAMAZ 7 17.12.19 15:22 Сейчас в теме
(104)После некоторых танцев с бубном, жертвоприношений и групповых молитв было обнаружено следующее поведение в мобильном клиенте на андроид 8 -
подключаем ВК первый раз на базе1 - все работает. Пытаемся подключить ВК на базе 2 и ловим ошибку:"Файл не обнаружен \data\user\0\com.e1c.mobile.client\files\1cem\-------\ExtCompT\libcom_iksoftware_unimes.so.cfl"
Теперь компонента будет работать только с базой1. Чтобы заработало в базе2 - сносим платформу, устанавливаем и подключаем ВК в базе2.
База1 в таком случае не сможет установить компоненту. Полагаю, что дело в самой платформе (8.3.15.1656)
A7758735; toxilamer; scherbyna; +3 Ответить
223. comptr 30 27.01.20 15:08 Сейчас в теме
(104) (210) решение описано в (56) - поправить манифест, добавив атрибут "name" в каждую запись "component", т.е.
было
<component os="Android" path="unimes.apk" codeType="java" type="native" arch="ARM"/>

стало
<component os="Android" path="unimes.apk" codeType="java" type="native" arch="ARM" name="com_iksoftware_unimes"/>

На всякий случай, если кто не знает, как поправить манифест - выгружаете компоненту из конфигурации в файл в виде архива, например, "component.zip", распаковываете полученный архив, правите файл "MANIFEST.XML", собираете файлы обратно в архив и загружаете его обратно в конфигурацию.
ka3a4ok; user1203706; +2 Ответить
225. HAMAZ 7 28.01.20 08:54 Сейчас в теме
106. mega 77 01.06.19 20:11 Сейчас в теме
Спасибо за труд! очень помогли. взлетело без проблем. АТОЛ Smart.Lite . Платформа 8.3.14.53. Android 7.0
109. herfis 498 04.06.19 11:42 Сейчас в теме
Успешно получаю сканирование с Zebra TC25 через extra data "com.symbol.datawedge.data_string", автору респект.
110. user598613_svp_gamma 31 05.06.19 00:40 Сейчас в теме
Спасибо за труд! Очень помогла компонента. Сканер ТСД Honeywell EDA50K работает. Не подскажете, почему при сканировании штрихкода отсекается последний символ... Подозреваю, что где то в настройках, но не могу найти. Заранее признателен
111. herfis 498 06.06.19 12:42 Сейчас в теме
Поторопился похвалить :( При работе через мобильный клиент с файловой базой опубликованной на веб-сервере все отлично.
При попытке же работы с этой же базой, но клиент-серверной - падает при подключении к внешней компоненте с ошибкой
Файл не обнаружен
'\data\user\0\com.e1c.mobile.client\files\1C\1cem\595d4e06-1d25-fa92-0dea-9b19560ed6b4\ExtCompT\libcom_iksoftware_unimes.so.cfl'.2 (0x00000002)
112. IgorKissil 350 06.06.19 12:55 Сейчас в теме
(111) Внешняя компонента взаимодействует с мобильным движком 1С. Если все ее файлы корректно развернуты в папке ExExtCompT, то ей абсолютно без разницы, работает ли приложение или клиент. Следовательно, в Вашем случае скорее всего проблемы либо с 1С либо с конфигурацией вашей системы. Сообщение говорит, что библиотека компоненты недоставлена по назначению.
113. herfis 498 06.06.19 13:25 Сейчас в теме
(112) Ура! Помогло исправление манифеста как в (56). Релиз платформы - 12.
Подозреваю, это неочевидные багофичи интерпретации манифеста на разных версиях платформы.
Т.е, пока не был прописан атрибут name для конкретной платформы, почему-то именно в клиент-сервере мобильный клиент сохранял библиотеку не под этим именем.
115. bavkyz 3 21.06.19 12:01 Сейчас в теме
Для АТОЛ SMART.LITE:
Компонента.УстановитьПараметр("FilterName", "com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST");
Компонента.УстановитьПараметр("CaptureData",СтрокаПараметров, "EXTRA_BARCODE_DECODING_DATA",XMLСтрока(Ложь), XMLСтрока(0))

Не могу понять почему не работает , сборщик не использую, Платформа 8.3.64
116. bavkyz 3 24.06.19 08:53 Сейчас в теме
1.
(115)
Платф

Сам себе отвечу

ИмяСобытия = "com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST"
		
		Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");
		Компонента.УстановитьПараметр("FilterName", ИмяСобытия);
		
		ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();		
		
		CaptureData = "EXTRA_BARCODE_DECODING_DATA";
		barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,CaptureData,XMLСтрока(Ложь),XMLСтрока(0));
Показать


работает на Атол Smart Lite начиная с версии 8.3.11 и выше (ниже не пробовал), обязательно надо собрать приложение в APK.

2. у меня есть еще один аппарат Атол Smart Droid, проверка батарейки работает. Не могу поймать событие по ScanWedge
ИмяСобытия = "DATA_SCAN";
CaptureData = "DATA_STRING";
, может кто разобрался ....
user831148; +1 Ответить
148. WellMaster 104 29.08.19 14:58 Сейчас в теме
(116) Для чего обязательная сборка в APK?
167. Azamatex 12 28.10.19 18:00 Сейчас в теме
(116) с Атол Smart Droid смогли разобраться?
172. bavkyz 3 30.10.19 04:41 Сейчас в теме
(167)
атьс


Я через буфер обмена сделал.
174. Azamatex 12 30.10.19 07:10 Сейчас в теме
(172)попробуйте "com.hht.emdk.datawedge.data_string" у меня на АТОЛ Smart.Touch получилось.
117. bavkyz 3 26.06.19 06:18 Сейчас в теме
118. ared20 28.06.19 15:27 Сейчас в теме
Добрый день! Кто знает имя переменной для ТСД CipherLAB RK25. Не могу событие поймать.
119. bavkyz 3 01.07.19 04:58 Сейчас в теме
(118)
erLAB RK

Посмотрите в настройках сканера.
120. ared20 01.07.19 11:26 Сейчас в теме
(119) В тот то и дело, что нет там таких настроек
121. bavkyz 3 01.07.19 14:53 Сейчас в теме
(120) у меня есть один аппарат, там тже нет настроек , пока незнаю что делать. Попробую найти apk которая отвечает за настройки и декомпелировать, может что и получится
122. tricolor 23 15.07.19 11:27 Сейчас в теме
(121)удалось найти имя события для cipherlab?
123. tricolor 23 15.07.19 13:54 Сейчас в теме
Может кому пригодится, сам разбирался полдня, для CipherLab 9700A:
ИмяСобытия = "com.cipherlab.barcodebaseapi.PASS_DATA_2_APP";
barcodeCipher = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"Decoder_Data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcodeCipher);
user831148; eeeio; eaa; dbachinsky; +4 Ответить
180. dbachinsky 347 01.11.19 23:59 Сейчас в теме
(123)
barcodeCipher = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"Decoder_Data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcodeCipher);


Спасибо тебе добрый человек. Тоже пол дня убил пока не нашел твой комментарий!
366. eaa 21.04.22 12:03 Сейчас в теме
(123)
Decoder_Data

Спасибо! Заработало на CipherLab RK25
Спасибо всем кто оставляет свои полезные комментарии!
Спасибо автору за труд!
(123)
124. herfis 498 22.07.19 13:02 Сейчас в теме
Есть огромное пожелание по развитию компоненты - добавить возможность не только перехватывать интенты, но и посылать их.
В 1С есть для посылки интентов ЗапускПриложенияМобильногоУстройства(), но насколько я понял через него можно послать не любой интент. У тех же ТСД Zebra есть DataWedge API, позволяющий с помощью интентов управлять сканером. Ни один из этих интентов не получилось послать через ЗапускПриложенияМобильногоУстройства(), в то время как из простейшего андроид-приложения это делается элементарно.
125. bavkyz 3 24.07.19 04:43 Сейчас в теме
(123) Как получилось добыть данные?
128. IgorKissil 350 08.08.19 16:45 Сейчас в теме
(124)Для управления Zebra посмотрите https://infostart.ru/public/1043267/ Отправку интентов как будет время возможно добавлю
130. herfis 498 09.08.19 09:30 Сейчас в теме
(128) Ооо! Спасибо огромное!
126. Pim 180 03.08.19 20:08 Сейчас в теме
Добрый день.
Хорошая компонента. Я прикрутил её к мобильному клиенту. Платформы (моб. и серверная) 8.3.14. ТСД Honeywell EDA50. Но есть 2 вопроса.
1. Настроил всё на тестовой базе. Всё хорошо. При подключении 2-ой базы появляется ошибка "Файл не обнаружен..." на моменте подключить внешн. компоненту (см. картинку).
2. Никак не могу завести на 2-м терминале Zebra. Я попробовал, как написано в комментариях, но ничего не вышло. Может быть, проблема с настройкой Data wedge...
Прикрепленные файлы:
127. Pim 180 08.08.19 12:56 Сейчас в теме
(126).
2-ой вопрос снят.
Для тех, кто как я не сразу "въехал" то, о чём писали коллеги, выкладываю полный текст для Зебры:
Компонента.УстановитьПараметр("FilterName", "scan.rcv.message");
if модельТСД = ПредопределенноеЗначение("Справочник.DCT_МоделиТСД.Zebra_TC8000") then
/// Zebra TC8000
Компонента.УстановитьПараметр("Category", "android.intent.category.DEFAULT");
ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
ТипМетки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных, "com.symbol.datawedge.label_type", XMLСтрока(Ложь), XMLСтрока(0));
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных, "com.symbol.datawedge.data_string", XMLСтрока(Ложь), XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData", ТипМетки);
/// ---
else///If модельТСД = ПредопределенноеЗначение("Справочник.DCT_МоделиТСД.Honetwell_EDA50") then
/// Honeywell EDA50
ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных, "data", XMLСтрока(Ложь), XMLСтрока(0));
/// ---
endIf;

Компонента.УстановитьПараметр("CaptureData", barcode);
129. mrAndy 09.08.19 08:31 Сейчас в теме
Подскажите, будет ли работать эта компонента в связке Bluetooth сканер + смартфон/планшет? Если да, то есть ли какие-то требования к сканеру?
131. Grivba 14 12.08.19 15:22 Сейчас в теме
Уточните,
Что делать для устройств с процессором ARM64?

По какой то причине не подключается компонента при запуске 1с "1cem-arm64".

Как решить эту проблему?
132. IgorKissil 350 12.08.19 15:53 Сейчас в теме
(131)Поддержка 64 бит появилась в релизе платформы 8.3.15, который вышел меньше недели назад
133. Grivba 14 12.08.19 16:23 Сейчас в теме
(132) Все верно. Вот только Гугл требует в публикациях наличие 64. Потому и вопрос.
Т.к. на 64 битной 1с компонента не запускается
134. IgorKissil 350 13.08.19 06:13 Сейчас в теме
(131)Компоненты под 64 бит перекомпилил. Но 1С как всегда "радует". Сборщик мобильных приложений 15-го релиза не работает с приложениями, содержащими внешние компоненты. Не создаются папки в темпах для 64-разрядных версий компоненты. (Справочник MobileConfigurations, форма ItemForm, строка 311 - там нужно наверное дописать вроде

CreateDirectory(ComponentFolder + "Android\ARM64\");
CreateDirectory(ComponentFolder + "Android\x86_64\");

Не исправлял и не факт, что не будет проблем дальше. Подождем рабочего релиза.
135. Grivba 14 13.08.19 16:42 Сейчас в теме
(134) Принято. Вы обновляли публикацию?
На данный момент это не критично, необходим запуск и тестирование в разработке. Будем ждать нормального сборщика. С 1с будем уже разбираться.

Сейчас гугл отказывается выкладывать АПК без х64
137. Grivba 14 19.08.19 11:14 Сейчас в теме
(134) Игорь, Как можно получить перекомпелированную версию компоненты?
138. IgorKissil 350 19.08.19 17:46 Сейчас в теме
(137)Выложу позже как вернусь из отпуска. Вы можете дать ссылку на ваше приложение в макете?
139. Grivba 14 22.08.19 18:01 Сейчас в теме
(138) Да конечно. Думаю тут выкладывать на форуме нельзя (вдруг реклама), в личку отправить не получается.
141. Grivba 14 22.08.19 18:03 Сейчас в теме
(138) На проверке у модератора
136. asdfgcom 415 14.08.19 13:05 Сейчас в теме
Великолепно!
Работает на моб. платформе 8.3.14.78
Настройки для сканеров ZKC. Они же Vioteh.
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда

ИмяСобытия = "com.zkc.scancode";

Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");
Компонента.УстановитьПараметр("FilterName",ИмяСобытия);
ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
code = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"code",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",code);


Теперь пытаюсь отловить нажатия на кнопки. Знаю, что должен кидать broadcast нажатий и отпусканий. Неясно что ставить в фильтр.
142. Grivba 14 27.08.19 09:21 Сейчас в теме
(136) Тут лучше через лог просмотреть в отладчике.
143. asdfgcom 415 27.08.19 09:42 Сейчас в теме
(142) LogCat имеется в виду? Да. Так и сделаю. Не ясно можно ли в этой ВК ставить 2 фильтра на разные broadcast'ы.
К примеру
ИмяСобытия1 = "com.zkc.scancode";
ИмяСобытия2 = "android.view.KeyEvent"; //это неправильно. Просто для примера.
144. IgorKissil 350 27.08.19 18:47 Сейчас в теме
В релизе 1.1.3 добавлена поддержка 64-битных платформ
145. Grivba 14 28.08.19 13:17 Сейчас в теме
(144) Спасибо. Будем тестировать.
Игорь, присоединюсь к вопросу "asdfgcom". Возможно ли поддержание нескольких фильтров??
147. Grivba 14 28.08.19 16:42 Сейчас в теме
(144) Черт не могу скачать............
146. adapter 417 28.08.19 13:54 Сейчас в теме
Всем привет, посмотрел различные решения по теме сканера для Андроид - кажется это лучшее. Попробовал на ТСД dsic-ax (DS5), там уже встроена утилита Barcode Tray - заработало идеально, спасибо!
149. Vladimir45 90 03.09.19 10:05 Сейчас в теме
Игорь, мы можем пообщаться по поводу добавления ещё двух режимов работы в компоненту?
152. Tlrd 16.09.19 11:18 Сейчас в теме
При добавлении в сборщике, платформа 8.3.15.1489, система ругается на ошибку перемещения файлов из папки temp пользователя com_iksoftware_unimes.apk
Подскажите, где исправить
Версия сборщика 2.0.10.55
Прикрепленные файлы:
153. Tlrd 17.09.19 12:19 Сейчас в теме
154. Vortigaunt 96 01.10.19 15:31 Сейчас в теме
Скачал последнюю версию компоненты. При подключении все равно выдает ошибку, как будто она не поддерживает 64 бит.
155. IgorKissil 350 01.10.19 16:15 Сейчас в теме
(154)Ну как-бы текст ошибки обо всем говорит правильно (пытаемся загрузить 32bit компоненту, причем для x86 :) вместо нужной). А почему так? А потому что 1С издевается как ей вздумается. Сборщик приложений 15-го релиза тасует файлы как хочет, файлы компонент все перепутаны. (посмотрите apk как zip - по размеру все поймете). Более того, перепутаны иконки, тексты конфигураций из apk теперь можно свободно читать. Такое впечатление, что элементарное тестирование у них отсутствует.
Я уже плюнул на это, перешел на xamarin.
156. пользователь 03.10.19 22:31
Сообщение было скрыто модератором.
...
157. Bertruger 04.10.19 12:21 Сейчас в теме
Подскажите FilterName на acode a420, не могу на него найти документацию.
158. Bertruger 04.10.19 13:42 Сейчас в теме
Пробую стандартный пример по батарейке на 8.3.13. Делаю:
Если не Компонента.Подключить(НомерУстройства) Тогда
ТекстОшибки = "";
КодОшибки = Компонента.ПолучитьОшибку(ТекстОшибки);
Сообщить(,"Ошибка: "+КодОшибки+", "+ТекстОшибки);
КонецЕсли;

По отладчику заходит в это условие, но Код ошибки и текст ошибки пустые. как определить проблему ?
159. Bertruger 04.10.19 22:18 Сейчас в теме
Выше я описывал способ установки базы через публикацию (Ранее я всегда так делал, внешняя компонента rsdriver всегда нормально становилась). Пробовал на 3х устройствах ТСД acode a420 ( Андроид 4.1), ТСД UROVO (Андроид 5) Планшет Huawei (Андроид 7).
И везде Компонента.Подключить = Ложь.

Сейчас всё переделал под 1с сборщик apk. Создал приложение. Приложение стало вылетать на
Компонента.УстановитьПараметр("CaptureData" - Просто вылетает на экран андроида. Только комментируешь, всё запускается без ошибок и Компонента.Подключить дает истину.
163. asdfgcom 415 25.10.19 10:52 Сейчас в теме
Приветствую. Качал компоненту 14.08.19
Были ли изменения с того момента? При запуске на МП 8.3.14.78 Андроид 7.1 ругается на ошибку формата потока. На Андроид 5.1 загружается и работает без проблем.
164. Azamatex 12 26.10.19 15:27 Сейчас в теме
Добрый день. АТОЛ Smart.Touch. Не могу решить проблемку).
При использовании "AddIn.Broadcasts.UniversalBroadcast" событие сканирования у меня перехватывается, но самого штрихкода я не вижу. Что нужно прописать чтобы вышел штрихкод?
При использовании "AddIn.Broadcasts.Clipboard" событие тоже отрабатывает, и даже показывает штрихкод, но там не отрабатывает FilterName, и соответственно попадает весь мусор. Вопрос как все таки наложить фильтр?
Из двух способов для меня конечно предпочтительнее чтобы заработал первый).
165. Azamatex 12 27.10.19 14:02 Сейчас в теме
"FilterName", "DATA_SCAN"
"CaptureData", ? - что тут нужно написать?
Оставьте свое сообщение