Запись в файл всех штрихкодов со сканера попутно и их передачей в 1С

1. METAL 290 13.07.21 18:02 Сейчас в теме
Горим! Якобы теряются штрихкоды при потере фокуса клиентским сеансом 1С (Розница, ред.1)
Сканер ШК подключен через COM (RS232)

Вопрос: Возможно ли вообще с технической точки зрения каким-то образом записывать все сканы в текстовый файл параллельно с их передачей в 1С? Средствами драйвера или сторонней утилиты или как-то еще? Таким образом, чтоб запись в файл происходила, даже если закрыт 1С. Но если 1С РМК открыто, чтоб запись в файл не мешала (или мешала незначительно) продажам

Зачем: хотим по итогам дня сравнить ВСЕ сканы сканера с тем, что дошло до 1С. Хотим убедиться что будет совпадать. Контрольный механизм. Возможно? Если да, то как?
Вознаграждение за ответ
Показать полностью
Найденные решения
3. starik-2005 3039 13.07.21 18:11 Сейчас в теме +5 $m
А сканер правда через COM подключен? Через клавиатуру понятно - окно не в фокусе, данные бегут не в него. Хотя и тут драйвер перехватывает ввод, и если между нажатиями прошло не более нескольких мс, то он копит данные, а после передачи #13 он их вываливает во внешнее событие. На COM вообще фокус влиять никак не должен...

Другое дело - буфер. Не знаю, на сколько он в этих 1С-ных внешних компонентах глубокий и есть ли вообще, но при, допустим, сканировании трех ШК подряд если 1С что-то обрабатывает, то событие не может вызвать 1С - 1С висит. И если буфера нет, то из трех сканирований в 1С после "отвисания" прилетит только первое (ну или последнее, если драйвер не ждет 1С, а если ждет - не сможет ничего прочитать с COM, пока ждет, и не известно, есть ли буфер у самого сканера).
criptid; METAL; +2 Ответить
13. user856012 13 13.07.21 22:44 Сейчас в теме +2 $m
На кассах 64-битная система
Ну извиняйте, об этом не было сказано ни слова.
Нашёл платный аналог для x64 http://www.eltima.com/products/serial-port-monitor/ с 2хнедельным демо-периодом, по идее нам должно хватить чтоб разобраться...
На всякий случай: List of 10 Serial Port Monitor software for Windows in your budget range
criptid; METAL; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 13 13.07.21 18:06 Сейчас в теме
(1)
Сканер ШК подключен через COM (RS232)
Тогда одно из возможных решений этой задачи - утилита Portmon: https://docs.microsoft.com/en-us/sysinternals/downloads/portmon
5. METAL 290 13.07.21 18:29 Сейчас в теме
(2) На кассах 64-битная система, Portmon запускается, но пишет "Not connected"...
Нашёл платный аналог для x64 http://www.eltima.com/products/serial-port-monitor/ с 2хнедельным демо-периодом, по идее нам должно хватить чтоб разобраться... Попробуем, спасибо
13. user856012 13 13.07.21 22:44 Сейчас в теме +2 $m
На кассах 64-битная система
Ну извиняйте, об этом не было сказано ни слова.
Нашёл платный аналог для x64 http://www.eltima.com/products/serial-port-monitor/ с 2хнедельным демо-периодом, по идее нам должно хватить чтоб разобраться...
На всякий случай: List of 10 Serial Port Monitor software for Windows in your budget range
criptid; METAL; +2 Ответить
4. Torin 754 13.07.21 18:26 Сейчас в теме
(1)
Якобы теряются штрихкоды при потере фокуса клиентским сеансом 1С
- с тем же успехом можно сканировать и без запуска 1С . "- мы же сканим и не важно куда и для чего".

Для чего предназначен сканер штрих-кода? Каковы его задачи?
7. METAL 290 13.07.21 18:35 Сейчас в теме
(4) Супермаркет, заполнение чека сканированием товаров по штрихкодам

Но есть нюанс. К кассе подключен второй монитор (для покупателя), где во время сканирования отображается содержимое чека, а после пробития чека - покупатель может тапнуть на смайлик (оценить удовлетворённость). В этот момент касса может потерять фокус, но он сразу (не позже чем, через 0.3 сек) возвращается кассе (специальное решение для этого у нас есть).

Так работало довольно давно и всё было ок, но сейчас сообщили о паре инцидентах, когда сканы не прошли, хорошо, что кассир заметил и пересканировал эти несколько товаров... Разбираемся. И хотим понять "А о скольких случаях еще НЕ сообщили? Допустим кассир не заметил что скан не прошёл"
8. Torin 754 13.07.21 18:43 Сейчас в теме
(7)
Допустим кассир не заметил что скан не прошёл"
- а у кассира монитора нет?

(7)
Супермаркет, заполнение чека сканированием товаров по штрихкодам
- иначе , быстрый поиск и подбор товара в чек!! Тоесть кассир должен убедиться что подбор произошел!!! А не просто сканером "попикал"
9. METAL 290 13.07.21 19:02 Сейчас в теме
(8) Прошу организационные вопросы здесь не обсуждать, если хотите с удовольствием в личке детально опишу Вам почему в нашем случае количество "пиков" должно максимально совпадать с количеством товаров в чеке, а я моя задача - максимально снизить человеческий фактор на данном участке
3. starik-2005 3039 13.07.21 18:11 Сейчас в теме +5 $m
А сканер правда через COM подключен? Через клавиатуру понятно - окно не в фокусе, данные бегут не в него. Хотя и тут драйвер перехватывает ввод, и если между нажатиями прошло не более нескольких мс, то он копит данные, а после передачи #13 он их вываливает во внешнее событие. На COM вообще фокус влиять никак не должен...

Другое дело - буфер. Не знаю, на сколько он в этих 1С-ных внешних компонентах глубокий и есть ли вообще, но при, допустим, сканировании трех ШК подряд если 1С что-то обрабатывает, то событие не может вызвать 1С - 1С висит. И если буфера нет, то из трех сканирований в 1С после "отвисания" прилетит только первое (ну или последнее, если драйвер не ждет 1С, а если ждет - не сможет ничего прочитать с COM, пока ждет, и не известно, есть ли буфер у самого сканера).
criptid; METAL; +2 Ответить
6. METAL 290 13.07.21 18:32 Сейчас в теме
(3) Хотите сказать, если РМК не в фокусе, внешнее событие всё равно отработает?

Буфер или нет - это и хотим понять. Поток сканов большой, редко, но бывает что теряются сканы. Типа 5 секунд товары проводят, сканер пикает, но в 1С внешнее событие не вызывается (есть видеозапись с камер и логи зарегистрированных внешних событий в 1С)
11. starik-2005 3039 13.07.21 20:33 Сейчас в теме
(6)
если РМК не в фокусе, внешнее событие всё равно отработает?
Проверил - действительно, если окно не в фокусе, то 1С-ный драйвер (Native) через клавиатуру не работает, остальные дрова в 64-битной системе не ставятся. Предположу, что COM ведет себя также.
12. METAL 290 13.07.21 20:40 Сейчас в теме
(11) Завтра проверим на COM, отпишусь!
14. METAL 290 14.07.21 12:02 Сейчас в теме
(11) Проверили, да, Вы абсолютно правы! Сканы через COM проходят независимо от фокуса, то есть если активно другое приложение или даже если 1С свёрнута

Оказалось, что у нас не работало из-за доработки, в начале процедуры ВнешнееСобытие было прописано
Если НЕ ВводДоступен() Тогда
	Возврат;
КонецЕсли;

Убрали - и сканы отрабатывают всегда независимо от фокуса, спасибо большое, Сергей, то, что нужно (несмотря на то, что изначально в топике запрос был другой)! Всех благ!
15. starik-2005 3039 14.07.21 12:06 Сейчас в теме
(14)
спасибо большое
Всегда пожалуйста.
16. METAL 290 16.07.21 14:43 Сейчас в теме
(15) А может также подскажете, как правильно избавиться от ВводДоступен() ?
Убрали его, и получили лишние сканы на основной форме от открытых модально окон всяких дополнительных операций РМК...
Попробовал обойти ВводДоступен() через отключение сканера во время дополнительных операций, с последующим включением обратно
ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);
РезультатДополнительнойОперации = ФормаДополнительнойОперацииГдеТожеИспользуетсяСканер.ОткрытьМодально();
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);


Но на некоторых кассах появились жалобы на то, что сканер "отваливается" и приходится перезапускать программу

Соответственно, вопрос: как правильно было бы обыграть этот сценарий? Может так:
мНеОбрабатыватьСканыВОсновнойФорме = Истина;
РезультатДополнительнойОперации = ФормаДополнительнойОперацииГдеТожеИспользуетсяСканер.ОткрытьМодально();
мНеОбрабатыватьСканыВОсновнойФорме = Ложь;

, а в обработке ВнешнегоСобытия() вместо
Если НЕ ВводДоступен() Тогда
    Возврат;
КонецЕсли;

написать
Если мНеОбрабатыватьСканыВОсновнойФорме Тогда
    Возврат;
КонецЕсли;

? Или.... ?
17. starik-2005 3039 16.07.21 18:51 Сейчас в теме
На мой взгляд все эти модальные окна - это уже устарело. В современных конфигурациях обработка события одна и располагается она в модуле приложения, т.е. именно туда приходит событие, и только там оно и обрабатывается. Дальше менеджером оборудования оно передается формам, которые подключены к соответствующему оборудованию. Это функционал последней БСП. Как работать с Вашими костылями я Вам вряд ли подскажу - не пользуюсь ни обычными формами давно, ни модальными вызовами.
18. METAL 290 20.07.21 10:52 Сейчас в теме
(17) Ну зачем там грубо, да, версия до_БСП_шная, но костыли? Хм... И дело ведь не в модальности.

Дальше менеджером оборудования оно передается формам, которые подключены к соответствующему оборудованию.
Правильно ли я понял Ваши слова, что в новых версиях каноничным решением является отключать/подключать оборудование от основной формы при открытии дополнительных?
19. starik-2005 3039 20.07.21 11:50 Сейчас в теме
(18) Там сам ШК передается в остальные формы уже оповещением, а не внешним событием. Внешнее событие одно - в модуле управляемого приложения (фактически, вызов обработчика из модуля управления оборудованием, который уже передает в остальные, подключенные, формы, а формы "подключают" и "отключают" себя - вызывают соответствующую функцию модуля менеджера оборудования).

Ну может и не костыли, для этого теперь есть слова legacy и depricated.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот