0
Отвечен

Urovo DT30 как получить ШК как внешнее событие

БухСервис 6 месяцев назад в UROVO обновлен Михаил Феоктистов 6 месяцев назад 14

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

ХОРОШО, МНЕ ПОНРАВИЛОСЬ
Оценка удовлетворенности от БухСервис 6 месяцев назад
На рассмотрении

Добрый день.

Для этого ТСД нужен другой драйвер, пример можно посмотреть в конфигурации RSDriverAPI 0.0.9:

cf файл

apk файл.

Получилось, спасибо!!!!

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

Я заметил, возможно вам это как-то поможет, что если после "пикания" выводить какое-то сообщение (я в качестве теста выводил на экран сообщение с номером штрихкода) то нет описанного задвоения. Но это получается надо тогда каждый раз  после "пика" нажимать на ОК чтобы скрыть сообщение, то есть не так удобно работать конечному пользоваелю и конечно хорошо было бы это "победить". Возможно где-то какую-то задержку по времени поставить, раз с выводом собщения задвоение пропадает.

И еще один момент вылез неожиданный, это не к вам вопрос конечно, но вдруг вы что-то подскажите. Я при "пикании" вывожу опознанную номенклатуру в первой строке табличной части документа. То есть вместо НоваяСтрока = Объект.Товары.Добавить(); я делаю НоваяСтрока = Объект.Товары.Вставить(0); Делается это с той целью чтобы кладовщик видел последнюю сканированную номенклатуру (ведь на экране ТСД видно только две первых строки табличной части документа). Это им удобно и делалось по их просьбе. На старом ТСД я сделал как писал выше они сказали что все отлично, более мне не писали, на этом устройстве почему -то первая строка держится в окне пока в документе не более 49 строк,  после 49-ой строки на 50 строке вместо первой и второй строки табличной части отображется вторая и третья и далее они начинают каждый раз сдвигаться как пикаешь следующий штрихкод. Пробовал ЭтаФорма.Элементы.Товары.ТекущаяСтрока = ИндексПервойСтроки; (он всегда равен нолю если они не будут удалять строки руками) удивительно но не работает.

Я понимаю что это не ваш вопрос, но мало ли, может  сталкивались. Это не принципиально для внедрения, наверное как-то обойду или оставлю как есть (документов с табличной частью более 50 строк не дожно быть много) но если есть возможность надо конечно устранить.

Попробуйте заменить драйвер OmnilDD.zip, удвоение при сканировании должно исчезнуть.

Вы не могли бы выложить обновленный RSDriverAPICore 0.1.0.cf, я оттуда скопировал себе макет "OIDD" в свою конфигурацию, или напишите пожалуйста каким образом использовать это файл zip

Стало лучше, но тем не менее бывают задвоения. Но я нашел способ справиться, поэтому этот вопрос более не актуален. Я сделал на форме документа реквизит "ВремяОповещени", там хранится дата и время последнего сканирования. Если разница дат менее 250 (подобрал это число в результате тестов) тогда игнорирую внешнее событие, считая его задвоением. В раком режиме ТСД работает прекрасно. На всякий случай, может кому пригодится выложу код

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
РазницаМеждуСобытиямиОповещения = ОКР((ТекущаяДата()-ЭтаФорма.ВремяОповещения)*1000, 0);
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "Barcode"
И ВводДоступен()
И РазницаМеждуСобытиямиОповещения>250 Тогда

ДобавитьШтрихКод(Параметр);

КонецЕсли;

При тестировании я записывал в табличную часть документа разницу между событиями оповещения, тестирование проводил несколько тысяч раз, в результатеи выяснил что разница в ошибочных событиях в диапазоне от 68 ло 226 (в моем случае). А "правильные" нажатия идут от 400 и то это очень быстро, поэтому ограничение в 250 было наиболее приемлемым.

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

Да, и одну строчку не докопировал

ЭтаФорма.ВремяОповещения = ТекущаяДата();

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

РазницаМеждуСобытиямиОповещения = ОКР((ТекущаяДата()-ЭтаФорма.ВремяОповещения)*1000, 0);

Провел еще одно тестирование и поднял ограничение до 300, все таки иногда вылетают задвоения на 263, 266.

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

Сервис поддержки клиентов работает на платформе UserEcho