У меня платформа 8.3.5.924 и мобильная 8.3.5.52, приложение собирается без ошибок, но на телефоне пишет "ошибка синтаксического анализа" или типа того. На платформе 8.3.4 всё работало нормально, версии андроид и джава сдк не обновлял.
1 собираете на новом сборщике (1.0.3.13) ?
2 в кладовщике в регистр сведений по объектам штрихкодов укажите правильно штрихкод для номенклатуры и проверьте ее в форме Информация по штрихкоду.
Подскажите пожалуйста, почему картинка со сканированием ШК получается перевернутой на 90 гр. и спозиционировать на ШК не получатся -ведешь в одну сторону, картинка двигается в повернутой на 90 гр. плоскости.
Спасибо!
Спасибо за пример. Сталкивались с тем что при сканировании CODE_39 приложение просто отваливается без предупреждения. EAN_13 - отлично обрабатывает. Другие приложения обрабатывают любые типы кодов. Проблема видимо только с CODE_39, проверил на Codabar, QR, CODE_128 - работает
а кто нибудь сталкивался с тем что ЗакрытьСканированиеШтрихКодов() не работает? собирал приложение на API 17, пробовал в мобильной конфе, результат один. samsung galaxy s3
(16) Nuobu, в компоненту автофокус встроен. когда наводите камеру на штрихкод программа пытается считать код и видно как меняется резкость на экране. у вас так сейчас работает?
не получается закрыть камеру после сканирования (еще бы звук вставить но не Сигнал() не ВоспроизвестиЗвуковоеОповещение() не пашут)
как заставить работать ЗакрытьСканированиеШтрихКодов() ?
А у кого-нибудь есть примеры с получением штрихкода через внешнее Android-приложение. Сканер из мобильной платформы прямо скажем на троечку. Или где-то в платформе настраивается возможность обращения к другому приложению (что все-таки вызывает сомнения). Если конкретно, то интересен вот этот:
(23) Пока не раскопал, но и времени на эксперименты особо много не было.
Нашел такой пример, но тут речь о другом, более известном приложении, но беда в том, что оно не не сильно лучше того, которое в платформу вшито. Иногда даже кажется, что это оно и есть.
&НаКлиенте
Процедура ЗапуститьСканированиеBarcode()
#Если МобильноеПриложениеКлиент Тогда
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие="com.google.zxing.client.android.SCAN";
Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл
Если сокрЛП(Стр.Ключ) = "SCAN_RESULT" Тогда
Штрихкод = Стр.Значение;
//Сообщить(Стр.Ключ+" - "+Стр.Значение);
Структура = ОбщегоНазначенияСервер.ПолучитьОбъектПоШтрихКоду(ШтрихКод);
Если Структура = Неопределено Тогда
пТовар = Неопределено;
Иначе
пТовар = Структура.Номенклатура;
ОткрытьЗначение(пТовар);
КонецЕсли;
КонецЕсли;
КонецЦикла;
#КонецЕсли
КонецПроцедуры
(23)получилось со сканером zxing. Результат лучше, чем с встроенным в платформу, но специфические коды все-равно не берет (В частности GS1 - (двустрочный), причем читает отдельные его части как EAN8). Однако, если столь экзотических кодов на практике не нужно, то подойдет. процедура из примера в итоге модифицировалась к следующему:
&НаКлиенте
Процедура СканироватьШК_Внешнее(Команда)
#Если МобильноеПриложениеКлиент Тогда
НовВз = Новый ЗапускПриложенияМобильногоУстройства("com.google.zxing.client.android.SCAN");
НовВз.Запустить(Истина);
КлючИЗначение = НовВз.ДополнительныеДанные.Получить("SCAN_RESULT");
Если КлючИЗначение <> Неопределено Тогда
Штрихкод = КлючИЗначение.Значение;
ОбработчикШК(Штрихкод,Истина,"",Неопределено);
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Показать
С приложением от Cognex Corporation к сожалению пока ничего не вышло.
(25) Напишу тут, может пригодится кому. Искал решение для сканирования и разбора GS1. По умолчанию zxing не передает спецсимволы в результате сканирования, в частности FNC1, поэтому невозможно получить значения идентификаторов применения c переменной длиной. Включается передача спецсимволов параметром ASSUME_GS1:
НовВз = Новый ЗапускПриложенияМобильногоУстройства("com.google.zxing.client.android.SCAN");
НовВз.ДополнительныеДанные.Добавить("ASSUME_GS1", Истина);
НовВз.Запустить(Истина);
Вот спасибо, толкнул в нужную сторону как это работает. А то кругом написано "можно" через камеру, а как даже не намекают. Шел от сканеров поэтому всю БПО перекопал.
Параметр "Результат" является выходящим, поэтому для того чтобы надпись была красная нужно в коде обработчика присвоить ему Ложь. А проверять на входе не надо потому как он всегда Истина.
&НаКлиенте
Процедура ОбработкаСканирования(Штрихкод, Результат, Сообщение, ДополнительныеПараметры) Экспорт
Ошибка = ЕстьОшибкаВвода(Штрихкод);
Если Ошибка = Ложь Тогда
Сообщение = "Обработали";
Иначе
Сообщение = "Не обработали";
Результат = Ложь;
КонецЕсли;
КонецПроцедуры