Горим! Якобы теряются штрихкоды при потере фокуса клиентским сеансом 1С (Розница, ред.1)
Сканер ШК подключен через COM (RS232)
Вопрос: Возможно ли вообще с технической точки зрения каким-то образом записывать все сканы в текстовый файл параллельно с их передачей в 1С? Средствами драйвера или сторонней утилиты или как-то еще? Таким образом, чтоб запись в файл происходила, даже если закрыт 1С. Но если 1С РМК открыто, чтоб запись в файл не мешала (или мешала незначительно) продажам
Зачем: хотим по итогам дня сравнить ВСЕ сканы сканера с тем, что дошло до 1С. Хотим убедиться что будет совпадать. Контрольный механизм. Возможно? Если да, то как?
3.
starik-2005
303913.07.21 18:11 Сейчас в теме+5 $m
А сканер правда через COM подключен? Через клавиатуру понятно - окно не в фокусе, данные бегут не в него. Хотя и тут драйвер перехватывает ввод, и если между нажатиями прошло не более нескольких мс, то он копит данные, а после передачи #13 он их вываливает во внешнее событие. На COM вообще фокус влиять никак не должен...
Другое дело - буфер. Не знаю, на сколько он в этих 1С-ных внешних компонентах глубокий и есть ли вообще, но при, допустим, сканировании трех ШК подряд если 1С что-то обрабатывает, то событие не может вызвать 1С - 1С висит. И если буфера нет, то из трех сканирований в 1С после "отвисания" прилетит только первое (ну или последнее, если драйвер не ждет 1С, а если ждет - не сможет ничего прочитать с COM, пока ждет, и не известно, есть ли буфер у самого сканера).
(2) На кассах 64-битная система, Portmon запускается, но пишет "Not connected"...
Нашёл платный аналог для x64 http://www.eltima.com/products/serial-port-monitor/ с 2хнедельным демо-периодом, по идее нам должно хватить чтоб разобраться... Попробуем, спасибо
(4) Супермаркет, заполнение чека сканированием товаров по штрихкодам
Но есть нюанс. К кассе подключен второй монитор (для покупателя), где во время сканирования отображается содержимое чека, а после пробития чека - покупатель может тапнуть на смайлик (оценить удовлетворённость). В этот момент касса может потерять фокус, но он сразу (не позже чем, через 0.3 сек) возвращается кассе (специальное решение для этого у нас есть).
Так работало довольно давно и всё было ок, но сейчас сообщили о паре инцидентах, когда сканы не прошли, хорошо, что кассир заметил и пересканировал эти несколько товаров... Разбираемся. И хотим понять "А о скольких случаях еще НЕ сообщили? Допустим кассир не заметил что скан не прошёл"
(8) Прошу организационные вопросы здесь не обсуждать, если хотите с удовольствием в личке детально опишу Вам почему в нашем случае количество "пиков" должно максимально совпадать с количеством товаров в чеке, а я моя задача - максимально снизить человеческий фактор на данном участке
3.
starik-2005
303913.07.21 18:11 Сейчас в теме+5 $m
А сканер правда через COM подключен? Через клавиатуру понятно - окно не в фокусе, данные бегут не в него. Хотя и тут драйвер перехватывает ввод, и если между нажатиями прошло не более нескольких мс, то он копит данные, а после передачи #13 он их вываливает во внешнее событие. На COM вообще фокус влиять никак не должен...
Другое дело - буфер. Не знаю, на сколько он в этих 1С-ных внешних компонентах глубокий и есть ли вообще, но при, допустим, сканировании трех ШК подряд если 1С что-то обрабатывает, то событие не может вызвать 1С - 1С висит. И если буфера нет, то из трех сканирований в 1С после "отвисания" прилетит только первое (ну или последнее, если драйвер не ждет 1С, а если ждет - не сможет ничего прочитать с COM, пока ждет, и не известно, есть ли буфер у самого сканера).
(3) Хотите сказать, если РМК не в фокусе, внешнее событие всё равно отработает?
Буфер или нет - это и хотим понять. Поток сканов большой, редко, но бывает что теряются сканы. Типа 5 секунд товары проводят, сканер пикает, но в 1С внешнее событие не вызывается (есть видеозапись с камер и логи зарегистрированных внешних событий в 1С)
если РМК не в фокусе, внешнее событие всё равно отработает?
Проверил - действительно, если окно не в фокусе, то 1С-ный драйвер (Native) через клавиатуру не работает, остальные дрова в 64-битной системе не ставятся. Предположу, что COM ведет себя также.
(11) Проверили, да, Вы абсолютно правы! Сканы через COM проходят независимо от фокуса, то есть если активно другое приложение или даже если 1С свёрнута
Оказалось, что у нас не работало из-за доработки, в начале процедуры ВнешнееСобытие было прописано
Если НЕ ВводДоступен() Тогда
Возврат;
КонецЕсли;
Убрали - и сканы отрабатывают всегда независимо от фокуса, спасибо большое, Сергей, то, что нужно (несмотря на то, что изначально в топике запрос был другой)! Всех благ!
(15) А может также подскажете, как правильно избавиться от ВводДоступен() ?
Убрали его, и получили лишние сканы на основной форме от открытых модально окон всяких дополнительных операций РМК...
Попробовал обойти ВводДоступен() через отключение сканера во время дополнительных операций, с последующим включением обратно
На мой взгляд все эти модальные окна - это уже устарело. В современных конфигурациях обработка события одна и располагается она в модуле приложения, т.е. именно туда приходит событие, и только там оно и обрабатывается. Дальше менеджером оборудования оно передается формам, которые подключены к соответствующему оборудованию. Это функционал последней БСП. Как работать с Вашими костылями я Вам вряд ли подскажу - не пользуюсь ни обычными формами давно, ни модальными вызовами.
(17) Ну зачем там грубо, да, версия до_БСП_шная, но костыли? Хм... И дело ведь не в модальности.
Дальше менеджером оборудования оно передается формам, которые подключены к соответствующему оборудованию.
Правильно ли я понял Ваши слова, что в новых версиях каноничным решением является отключать/подключать оборудование от основной формы при открытии дополнительных?
(18) Там сам ШК передается в остальные формы уже оповещением, а не внешним событием. Внешнее событие одно - в модуле управляемого приложения (фактически, вызов обработчика из модуля управления оборудованием, который уже передает в остальные, подключенные, формы, а формы "подключают" и "отключают" себя - вызывают соответствующую функцию модуля менеджера оборудования).
Ну может и не костыли, для этого теперь есть слова legacy и depricated.