Конфигурация-основа для мобильного приложения — сканер штрихкода (фото сканер и ТСД) + фото




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

99 Comments

  1. bubus

    А с простыми сканерами ШК, не ТСД это будет работать?

    Reply
  2. olegmedvedev
    Поддержка закуска/остановки
    Reply
  3. Vladimir45

    (1) это какими? bluetooth? или через usbOTP? В любом случае только если есть intent у драйвера сканера.

    Reply
  4. bubus

    (3)USB OTG

    Reply
  5. Vladimir45

    (4)В любом случае, только если есть intent у драйвера сканера.

    Reply
  6. DMon

    (2) Та что Вы прям к словам цепляетесь? ))) Нравится мне закуска))

    …защита от копипаста 😉

    Reply
  7. Vladimir45

    добавить можно тсд

     ИначеЕсли Устройство = «iData 95W» Тогда
    
    ActionName = «android.intent.action.SCANRESULT»;
    BarcodeData  = «value»;
    ТипBarcodeData = «string»;

    Исходный код отправки броадкаста этого сканера выдран из приложения iScan_com.android.auto.iscan

    Intent localIntent = new Intent();
    localIntent.setAction(«android.intent.action.SCANRESULT»);
    localIntent.setFlags(268435456);
    localIntent.putExtra(«value», paramString);
    localIntent.putExtra(«length», paramString.length());
    getApplicationContext().sendBroadcast(localIntent);
    Reply
  8. D_K_Programm

    можно сделать так чтобы в момент сканирования аппарат оставался вертикально?

    или в идеале вставить поле сканера на форму?

    Reply
  9. johnnyshut23

    спасибо! очень интересная статья/разработка

    Reply
  10. Vladimir45

    (8) сканирования чего? фото-сканирование через Barcode Scanner? помогите разобраться с документацией от него, как в него передать — «не переворачивайся», я с ходу не нашел.

    Reply
  11. VladimirMelnychenko

    Добрый день. Установил на ТСД конфигурацию (версия 1.1.1), с существующими настройками не пошло, заменил имя интента («Action name») на «rrr», но при сканировании не выдавало сообщения от какого либо интента. Скажите пожалуйста в чем может быть проблема?

    Терминал Sunlux xl-868.

    Сканирует только в родное приложение «ScanData» (файл apk во вложении), ну и в любое поле ввода.

    Может встроенный сканер эмулирует ввод и из за этого не возникает интента?

    Reply
  12. asdfgcom

    Прошу прощения, если не разобрался в сути вопроса. Скачал, установил. На планшете Самсунг работает, на ТСД не работает, но это не важно, все-равно переворачивает экран. С ТСД работать при этом становится невозможно. Не понял, компонента для сканирования та же, что вызывается стандартно СредстваМультимедиа.ПоказатьСканированиеШтрихКодов? Не нашел разницы.

    Почему тогда просто нельзя было сделать стандартно:

    ОбработчикСканирования = Новый ОписаниеОповещения(«ОбработкаСканирования», ЭтаФорма);
    ОбработчикЗакрытия = Новый ОписаниеОповещения(«ОбработкаЗакрытияИнтерфейса», ЭтаФорма);
    СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(НСтр(«ru=’Наведите камеру на штрихкод’;en=’Aim the camera at an barcode'»), ОбработчикСканирования, ОбработчикЗакрытия, ТипШтрихКода.Все);

    Надеялся, что используется иная компонента для сканирования.

    Ну, и, раз пошла такая пляска, надо добавить функционала:

    1. Подсветка

    2. Обратная связь с компонентой (после удачного сканирования выводить на экран строку с текстом, переданным из 1С, к примеру Товар такой-то, количество такое-то, цена такая-то)

    3. Привязать кнопку (например #) или, в случае с ТСД, «Scan» или «F1» или какие у кого там еще есть кнопки. А лучше, настройку в 1С, типа, нажмите кнопку, используемую для сканирования. Зачем? Пока сканируем нужный ШК ненароком зацепим еще пару ненужных, которые были рядом.(Оборудование может иметь несколько ШК, EAN, UPS, SN, MAC ID рядом. Пока «поймаем в прицел» EAN, зацепим все 4) А так, нацелились, жмакнули, опа — штрихкод прилетел.

    4. Ну, переверните уже экран!

    5. На ТСД можно даже не показывать окно фотосканера, а просто включить подсветку. Она дает пятно, в которое надо поймать ШК. Нажал кнопку — ШК прилетел прямо в форму. (на самом деле окно сканирования — только мешает)

    Reply
  13. Vladimir45

    (11)нету в исходном коде команды sendBroadcast. может есть ещё apk ?

    Отладку включили?

    Основные ошибки:

    не выбрали string

    не указали идентификатор базы

    не перезагрузили 1с после установки драйвера

    (обновил шапку)

    Reply
  14. Vladimir45

    (12) Используется apk — Barcode Scanner (4pda) https://4pda.ru/forum/index.php?showtopic=141132 (там ссылки и на гугл плей) но при первом обращении — оно попросит его скачать с гугл-плея. (сча внесу данные в саму статью)

    1 — подсветка? фонарик в смысле?

    2 — это делается не компонентой а вашей фантазией самого приложения.

    3 — тоже самое делается в самом приложении 1с. в оповещении просто выводите запрос — точно этот шк? к компоненте это ну никак не относится, тем более к перехвату broadcast intent

    4 — на чем перевернуть? я так и не понял? на фото? я перевернул через стандартную камеру в версии 1.3

    5 — найдите такое приложение на гугл плей — я попробую его встроить.

    Reply
  15. Vladimir45

    (11) поищите сами — я не нашел совсем.

    Reply
  16. VladimirMelnychenko

    (13)

    Основные ошибки:

    не выбрали string

    не указали идентификатор базы

    не перезагрузил

    Пробовал устанавливать разные настройки, к сожалению не пошло.

    При считывании штрих-кода в LogCat возникает следующее событие:

    11-30 09:15:29.632 V/InputMethodManager(3386): START INPUT: android.widget.LinearLayout{41c84f38 VFE….. .F….I. 0,35-0,35} ic=null tba=android.view.inputmethod.EditorInfo@42033558 controlFlags=#105

    По поводу другой APK, по умолчанию больше никакой утилиты не установлено. И вообще в мануале написано что настройка самого сканера (скорость считывания, задержка и т.д.) происходит путем сканирования штрихкодов-команд из мануала в эту утилиту (SCANDATA).

    Reply
  17. Vladimir45

    (16) ну а в книжке со штрихкодами — есть евенты?

    Reply
  18. VladimirMelnychenko

    (17)Весь мануал состоит из вот таких «команд» которые нужно считывать в родную утилиту.

    https://ibb.co/c3dukG

    https://ibb.co/mAhyCw

    Reply
  19. Vladimir45

    (18) ну он COM И что-то там дефаулт — наверное клавиатура. и broadcast не поддерживает видимо. напиши модель — добавим в список не поддерживаемых. На них только если драйвер на com порт писать.

    Reply
  20. VladimirMelnychenko

    (19) Спасибо что затратили время. Модель Sunlux xl-868.

    Дополнительный вопрос.

    А взлетит если допилить родную утилиту и заставлять ее отправлять броадкаст после формирования строки?

    Reply
  21. Vladimir45

    (20)взлетит, только то что я вам «исходники» вытащил, обратно не «скомпилятся» 100%

    Но знающий человек на основе их сможет что-то наваять.

    Reply
  22. VladimirMelnychenko

    (21)Спасибо.

    Reply
  23. asdfgcom

    (14) Компонента похожа или та же самая, что вызывается стандартной командой мобильного приложения 1С:

    СредстваМультимедиа.ПоказатьСканированиеШтрихКодов()

    Точно также разворачивает изображение в Ландшафт и мигает желтыми точечками по красной полосе. Видимо она же и используется мобильной платформой.

    (1) Многие устройства оснащены подсветкой (не исключая планшета или мобильника) для освещения при фотографировании или чтении ШК. Если есть, почему не использовать. Со стороны 1С невозможно, если не предусмотрено в apk.

    (2) При последовательном чтении ШК без закрытия окна чтения мы не видим, что там происходит у нас в программе. Если позволить компоненте принимать строку с текстом и выводить ее на окно сканирования, пользователь увидит, что произошло. Нашел, не нашел или каково фактическои и учетное количество по этому товару.

    (3) Согласен, без переделки самой компоненты не получится, но, как я это вижу, было бы удобно.

    (4) Когда появляется окно сканирования оно принимает «Ландшафт» на любом из тестируемых устройствах. А экран устройства «Портрет» Приходится переворачивать устройство для сканирования, а потом обратно переворачивать для работы. Представьте, что камера не на задней стороне устройства а на верхнем срезе. Как тогда его крутить?

    (5) я могу скинуть готовое СДК. с описанием функций. Причем apk от моего ТСД работает и с самсунговской камерой. Там и фонарь и вибрация и повороты и циклы маштабирования (краем глаза посмотрел, что понял на jawa) читает любой ШК, за долю секунды.

    Надо заметить, что компоненту удается вызвать из мобильной платформы, но, в момент распознавания ШК 1С падает. Видимо компонента что-то пытается вернуть обратно, неверно.

    Reply
  24. Vladimir45

    (23)

    я могу скинуть готовое СДК. с описанием функций.

    Кидай, посмотрю на досуге.

    Reply
  25. Vladimir45

    (23)

    Компонента похожа или та же самая, что вызывается стандартной командой мобильного приложения 1С:

    СредстваМультимедиа.ПоказатьСканированиеШтрихКодов()

    Точно также разворачивает изображение в Ландшафт и мигает желтыми точечками по красной полосе. Видимо она же и используется мобильной платформой.

    помоги найти в sdk Barcode Scanner как его повернуть? я не нашел.

    Reply
  26. Vladimir45

    (23)

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

    хм, по идее через мой apk приложение должно закрываться сразу после одного ШК. у тебя не закрывается? продолжает дальше?

    Reply
  27. asdfgcom

    (26) да, проверил, закрывается. Я уже столько компонент перепробовал… Запутался в них. В ЛС скиньте свою почту. Отправлю СДК. В ответ прошу ссылку на СДК Barcode Scanner. Однако, я в jawa не силен… В этом и проблема.

    Reply
  28. evgeny43

    Добрый день, написал свою простенькую вариацию на андроид студии

    Однако почемуто не попдает в обработку доставляемых уведомлений

    код выглядит так :

    public void onReceive(Context context, Intent intent) {
    //byte[] barcode = intent.getByteArrayExtra(«barocode»);
    // int lng = intent.getIntExtra(«length», 0);
    String Barcode = intent.getStringExtra(«data»);
    Toast.makeText(context, «Обнаружено сообщение: «+
    Barcode, Toast.LENGTH_SHORT).show();
    Intent intentFor1C = new Intent(WHERE_MY_CAT_ACTION);
    intentFor1C.putExtra(«text»,1);
    intentFor1C.putExtra(«title», «1C»);
    intentFor1C.putExtra(«data», Barcode);
    intentFor1C.putExtra(«base»,»668e4c97-91e2-4f35-c914-85791064d881″);
    context.sendBroadcast(intentFor1C);
    WHERE_MY_CAT_ACTION=»com.google.android.c2dm.intent.RECEIVE»; что может быть не так,
    Toast.makeText(context, «Обнаружено сообщение: «+
    Barcode, Toast.LENGTH_SHORT).show();—подает сообщение на кэран что все гуд перехватил от сканера
    ид базы для отладки вбита гвоздями ,
    }

    Показать

    Reply
  29. evgeny43

    Вопрос не актуален (28) , ошибка синтаксиса передачи -intentFor1C.putExtra(«text»,1); —>intentFor1C.putExtra(«text»,»1″);

    Reply
  30. grrus

    Уважаемые коллеги!!!

    Подскажите, собрал мобильное приложение для андроид 7ого, появились проблемы

    1. Сканер не работает, запускается камера и видно что очень жутко тормозит

    2. при выводе значения в Поле HTML документа — ОписаниеИнформации, иногда выходит ошибка отображения страницы (http#k8SjZc9Dxklocalhost/…./…..).

    НайтиСтроку = ТЧСписокНовостей.НайтиСтроки(новый Структура(«Номер»,НовостьПодНомером));

    Если НайтиСтроку.Количество() > 0 Тогда

    ОписаниеИнформации = «<html>» + НайтиСтроку[0].ОписаниеИнформации + «</html>»

    КонецЕсли;

    Reply
  31. grrus

    В продолжении

    Если запускать конфигурацию мобильную через мобильную платформу 1С8, то всё работает без проблем.

    Reply
  32. Vladimir45

    (30)

    Сканер не работает, запускается камера и видно что очень жутко тормозит

    Уточните какой сканер?

    В данной конфигурации сканер запускается через приложение на гугл-плее ЛИНК

    Может дело в этом приложении? а не мобильной платформе 1с,

    (30)

    при выводе значения в Поле HTML документа

    Попробуйте правильно теги html поставить, может мобильная платформа чувствительна к ним, как минимум добавить body, как максимум и боди и P

    Reply
  33. Vladimir45

    (31) Может при сборке использовали старый SDK?

    дайте больше информации, чем собирали, какие версии использовались?

    Reply
  34. grrus

    (33)

    Reply
  35. YFred

    Установил конфигурацию на устройство, когда в настройке сканера жму кнопку «Установить драйвер», ничего не происходит. Драйвер не устанавливается и ошибку не выдает. Что может быть?

    Reply
  36. Vladimir45

    (35)

    Проверьте галочку в настройках в разделе безопасность — сторонние источники, как-то так.

    Как вариант выгрузить apk из конфигурации.

    Reply
  37. superlexa2008

    скачал версию 1.3, где кнопка записать настройки ?? на видео есть на форме нет

    Reply
  38. superlexa2008

    дописал сам кнопку, все заработало, спасибо!

    Reply
  39. Vladimir45

    (37) в версии 1.3 настройка записывается при изменении. Как и положено по новым правилам 1С.

    Reply
  40. superlexa2008

    да, только я нажимаю кнопку загрузить настройки и мне их менять не нужно и при этом их нельзя никак сохранить без кнопки сохранить.

    Reply
  41. Vladimir45

    (40) точно, надо поправить!

    Reply
  42. greyhedgehog

    Коллеги, добрый день!

    Скачал версию 1.1.1 в надежде на чудо, но на «железке» Honeywell EDA50K так и не заработало. Уже после в комментариях к указанной в начале описания публикации Дмитрия (в районе п.70) нашел про поле «dataBytes» и проблемы с его преобразованием в строку. У меня при сканировании с включенной отладкой выдает «Start intent search: scan.rcv.message» и затем «Get valid intent data:». Тип barcode data = byte. При = string, BC2OneCBT «падает». Я вроде все вариации настроек перепробовал. Владимир, скажите, пожалуйста, есть ли возможность подправить сервис с учетом комментариев Евгения Буглова по данной модельке ТСД? Ну или если этот момент уже учтен, может у меня просто «руки кривые», тогда подскажите, пожалуйста, как настроить правильно параметры?

    Спасибо.

    Reply
  43. greyhedgehog

    (42) Все, спасибо, уже не актуально, для EDA50K помогло вот это решение https://infostart.ru/public/779912/

    Reply
  44. greyhedgehog

    Добрый день! Поторопился, не совсем помогло указанное выше решение, с подключенной отсюда https://infostart.ru/public/779912/ компонентой 1С-ка на EDA50K с android 4.4.4 прекрасно ловит ШК, но непредсказуемо тормозит и «крашится».

    Владимир, скажите пожалуйста, возможно ли подправить apk, чтобы работало на Honeywell EDA50K и ему подобных? Исходников нет, чтобы подружить с этой моделью. А то получается зря все скачивал.

    Спасибо.

    Reply
  45. Vladimir45

    (44) так, давай-ка в личку, Надо понять почему краш происходит.

    Reply
  46. greyhedgehog

    Настройки конфигурации для ТСД Honeywell Scanpal EDA50K.

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

    1. Сначала настраиваем сам сканер в ТСД:

    Настройки —> Scan Settings —> Internal Scanner —> Default profile —> Data Processing Settings —>

    Поставить галку Scan to Intent. Ткнуть в поле Data Intent (Именно в строку, а не в галку), откроются настройки Data Intent. Там поставить галку Data Intent и в поле Action вбить произвольное уникальное имя действия. Я ввел: «scan.rcv.message» (без кавычек).

    2. В конфигурации 1С:

    В форме настроек сканера в поле Action name ввести заданное на первом шаге имя действия (у меня это «scan.rcv.message» без кавычек). В поле Barcode data ввести имя поля, в которое возвращается штрихкод: «data» (без кавычек). В поле Тип barcode data выбрать String.

    У меня с такими настройками на EDA50K все работает и на Android 4.4.4 и на Android 7.1.1.

    Reply
  47. menen

    Добрый день!

    В версии 1.3 Вы специально убрали кнопку Записать настройки ? ))

    Reply
  48. menen

    (47) В комментариях уже заметил проблему. Допишу сам.

    Reply
  49. menen

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

    ТСД MobileBase DSIC 5 — ничего лишнего не устанавливали (как пришел с завода).

    Запустили конфигурацию через мобильное приложение 1С.

    При сохранении настроек выдавал ошибку запуска службы, поскольку возвращал Результат = 0.

    После долгих выяснений оказалось, что НЕ запускался драйвер перехвата, т.е. не срабатывал метод ЗапуститьПриложение после помещения драйвера из макета во временный файл. Меняли путь на КаталогДокументов(), не помогло.

    Конфигурация заработала после ручного запуска этого apk-файла через диспетчер файлов.

    У Вас, насколько я понял, почти такой же терминал DSIC 9. Возникали ли такие проблемы и как их решить (поскольку собираемся далее покупать такие ТСД)?

    Reply
  50. Vladimir45

    (49)Нет, такой проблемы нет, а какой андройд? в каком-то запретили запускать не свои apk по безопасности.

    Reply
  51. rem2222

    День добрый.

    Попробовал запустить на ТСД Acode, в родных настройках которого можно задать и имя Интент и ИмяСтроки. Настройки и там и в 1С идентичные. Сервис стартует, но во время сканирования вылетает с ошибкой «В приложении «BC2OneCBT» произошла ошибка». Куда рыть, не подскажите?

    Reply
  52. Vladimir45

    (51) Обычно помогал ребут при первой установке. К кого такое было.

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

    Reply
  53. rem2222

    (52) Если имя интента указано неверно, запускается нормально, но во время считывания ШК ничего не происходит. Если интент задан, как в настройках ТСД, то с любыми настройками имени строкивида ШК при сканировании вываливается в ошибку, как я описал выше…

    Reply
  54. Vladimir45

    (53) а тип сообщения строка или дата — меняли?

    Reply
  55. rem2222

    (54) Да, и так и так вылетает с ошибкой. Может там еще чего передается? Массив например…

    Оригинальная обработка тоже не работает. Но она не вылетает с ошибкой, а просто не вызывает обработку события при пикании. А у вас есть возможность пересобрать apk под более старый Андроид? 4.4 у нас…

    Reply
  56. Vladimir45

    (55)великом в телегу @mc_1c там попробуем решить.

    Reply
  57. menen

    Владимир, добрый день, прошу помочь разобраться.

    На базе Вашей обработки сделали конфигурацию под мобильное приложение (ТСД MobileBase DSIC 5 — обновили до Андроид 6) .

    Конфигурация работала через мобильную платформу 1С на ТСД.

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

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

    Сообщения отладчика драйвера показывают, что он нормально получает (get valid intent data …) сканированное значение ШК, но в мобильном приложении не срабатывают Оповещения.

    Снова запускаю конфигурацию 1С через мобильное приложение 1С — Оповещения срабатывают.

    Пробовали варианты — сносили с ТСД Мобильную платформу 1С, устанавливали только собранное мобильное приложение — результат тот же.

    Такое подозрение, что в драйвере перехвата где-то есть жесткая привязка …

    Спасибо.

    Reply
  58. Vladimir45

    (57) там имя надо менять, я этот процесс ещё не изучил.

    Смотрите, там получается передаётся имя базы — его надо на что-то попробовать подменять.

    Или же надо менять уже в самом драйвере перехвата имя интента для 1С (а это только в исходниках)

    Попробуйте узнать этот момент, я готов помочь чем смогу.

    Reply
  59. menen

    (58) Владимир, не понял фразу: «Там получается передаётся имя базы — его надо на что-то попробовать подменять. »

    Откуда и куда передается имя (какое) ?

    Reply
  60. menen

    (58) Имя интента зависит же от ТСД? По исходникам мне к кому обратиться?

    Reply
  61. Vladimir45

    (59) вы задаёте имя интента, имя поля данных, а трети то параметр выбираете из списка — само имя базы.

    Reply
  62. Vladimir45

    (60) вы говорите имя интента сканирования, оно перехватывается.

    Но после перехвата оно отправляет свойи интент для 1С. А раз у вас своё приложение, то имя этого приложения уже другое, и он может не видеть интент который отправляется для 1С

    Reply
  63. arcadics

    Попробовал на двух смартфонах, сканирование с помощью Barcode Scanner не работает.

    Оповещения не происходят.

    Не могу разобраться почему.

    Reply
  64. Vladimir45

    (63) дагностировать без, хотябы, скриншота настроек, как гадание на картах таро.

    Reply
  65. arcadics

    (64) Особо настроек много нет. Проводили тест на обычном смартфоне?

    Reply
  66. Vladimir45

    (65)версия андройд хотя бы какая?

    На 6 работать не будет. Там запрет на перехват сейчас.

    Reply
  67. arcadics

    (66) Тестил на 7.0 и на 4.4.2. На 4.4.2 камера плохая поэтому в основном на 7.0

    Версия мобильной платформы 8.3.12.67

    Reply
  68. Vladimir45

    (67)на 7-рке я пока не нашёл информацию как делать перехват. Сейчас это запрещено в андройде на уровне платформы.

    Если есть информация как это сделать, я выпущу версию апк под 6-7.

    Reply
  69. arcadics

    (68) А нужен перехват с помощью драйвера для Barcode Scanner?

    Может быть обработать результат запуска приложения.

    Reply
  70. arcadics

    (69) Вот ответ на решение задачи

    https://infostart.ru/public/301851/

    Reply
  71. Vladimir45

    (69)это тогда пишется просто на самом 1С.

    Данная конфигурация создавалась как одна универсальная платформа. Чтоб в одном приложении можно было и сканировать оборудованием и через камеру.

    Если вы заранее используете сканирование через камеру, то можно просто использовать стандартный механизм 1С.

    глава 26 руководства разработчика

    26.3.5.5. Сканирование штрихкодов

    А вот со сканированием когда у вас у руках терминал — это только через перехват. Я пока других решений не видел.

    (70) это решение для КАМЕРЫ, а не ТСД.

    Reply
  72. PawloAkulow

    Добрый день, подскажите пожалуйста будет ли работать ваша ВК в мобильном клиенте 8.3.12?

    Reply
  73. Vladimir45

    (72) Я не пробовал, терминалы взять и попробовать не могу, они валидированы под 8.3.10

    Reply
  74. user1028927

    не работает на платформе 8.3.12

    Reply
  75. Vladimir45

    (74)не проверял, но может версия андройда больше чем 4?

    Reply
  76. user1028927

    (75) версия именно 4, ставишь платформу 8.3.10 или 8.3.11 и нормально работает

    кроме того на 8.3.11 и 8.3.12 проблема со сканированием при помощи камеры смартфона

    Reply
  77. Vladimir45

    (76)Как приедут новые сканеры, я попробую адаптировать под 11 и 12.

    А пока, как я писал выше, я не могу забрать сканеры с работы, тк они валидированы под 10. И вносить изменений в ПО сканера я не могу.

    Reply
  78. Corso

    Добрый день. Подскажите, при сканировании штрихкода с помощью камеры — не срабатывает ОбработкаОповещения.

    Т.е. штрихкод сканируется — но не добавляется (в том числе в форме тестирования сканера). В чем может быть проблема?

    Нужно ли для сканирования с помощью камеры заполнять Action name и barcode data?

    Reply
  79. Vladimir45

    (78) андройд какой?

    Reply
  80. Corso

    8.0.0

    Reply
  81. pri_hod

    Может кому пригодится ТСД Kcosit V7

    ActionName = «ACTION_BAR_SCAN»;

    BarcodeData = «EXTRA_SCAN_DATA»;

    ТипBarcodeData = «byte»;

    Reply
  82. Vladimir45

    (81)вынес в список устройств.

    Reply
  83. pri_hod

    Если Устройство = «Caribe PL-50L» ИЛИ

    Устройство = «Caribe PL-40L» ИЛИ

    Устройство = «Kcosit V80S»

    Тогда

    ActionName = «scan.rcv.message»;

    BarcodeData = «barocode»;

    ТипBarcodeData = «byte»;

    Reply
  84. viva17

    Добрый день. Имею ТСД Datalogic DL-Axist, андроид — 4.4.4. Настройки прикрепляю. Поля в мобильной 1с ActionName и BarcodeData заполнил с настроек ТСД. Перехват не работает, ШК не добавляется. Подскажите где и что надо подправить?

    Reply
  85. Vladimir45

    (84)

    галочку клавы убрать

    1) тут вроде верно, но не уверен, там что ещё есть?

    2) категория не должна влиять, но в приложении указана дефолтная — android.intent.category.DEFAULT

    стрелками указал что куда.

    Если со string не сработает то по 3 можно поменять на дата — как вариант.

    Reply
  86. viva17

    Если убрать галочку клавы, то ШК у форме не отображается.

    категорию менял и тип менял, результата нету((.

    Может префикс влияет?

    Reply
  87. Vladimir45

    (86) броадкаст верно, а вот что-то scan он ответил — Это тогда когда сканировали?

    тоесть как в тестировании в видео написано? так и сделали?

    Reply
  88. viva17

    Это при запуске программы, при сканировании нету сообщений.

    Reply
  89. Vladimir45

    (88)Пишите в личку, потому-что

    1) не отключил клавиатуру,

    2) не верно указали код информации шк (barcode data)

    3) не верно указали тип (byte)

    4) и я так понимаю не сменили категорию на дефольную

    Reply
  90. родственник

    (46) Спасибо.

    сделал аналогично на Honeywell EDA60K под Android 7.

    Reply
  91. mchammer4

    (46)

    scan.rcv.messag

    в режиме отладки выходят всплывающие сообщения. но в форме тестирования не добавляется строка.

    Reply
  92. mchammer4

    (46)

    выходит всплывающее сообщение, но в форме тестирования не добавляется строка

    Reply
  93. zhernikov

    (45) Здравствуйте. Удалось понять причину краша? На трех разных моделях везде краш.

    Reply
  94. Vladimir45

    (93)Что-то с безопасностью у кого-то было. И АПК ставили выгруженным из конфигурации. А не через кнопку.

    Reply
  95. Vladimir45

    (93)И чуть ниже сообщение прочитали?

    Reply
  96. solarisman

    (62) Коллеги, подскажите — удалось ли решить вопрос?

    Имею на руках Honeywell EDA50K

    Всё установил, так же получаю get valid intent data …

    Стоит мобильная платформа (не отдельным приложение), одна конфигурация

    Но ШК всё равно не добавляется. Куда копать?

    Reply
  97. Vladimir45

    (119) какая версия платфоры?

    Reply
  98. solarisman

    (120) Актуальная, 8.3.14.78

    Reply
  99. Vladimir45

    (121)работает на 8.3.10.51 выше 1с поменяло все. там видимо надо уже патчить саму 1С.

    Я пока инормации не нашел об интентах для 10+

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *