#0
by skam
Имеется 2 одновременно запущенные базы 1С Предприятие 7.7 на одной машине. В панели задач соответственно 2 закладки. Как отловить момент перехода/переключения между 2-мя базами/1С. Для чего нужно: необходимо реализовать работу сканера штрих-кодов в 2-ух базах запущенных на одной машине. Сканер подключен в usb порт (емуляция COM порта). Программно можно включить и отключить устройство (сканер штрих-кодов). Соответственно когда переходим в другую базу необходимо отключить устройство в первой базе. Может существуют еще какие-то способы? Буду благодарен за советы!
#3
by АЛьФ
А зачем его отключать в "первой базе"? Насколько я понимаю, инфа от сканера будет падать в то окно, которое активно в данный момент. А сколько у тебя баз запущенно сканеру фиолетово.
#4
by Оболтус
Сколько раз сталкивался - работает только в первой запущенной программе. Если её свернуть и открыть вторую - работать не будет.
#6
by у лю 427
не прав, если сканер ком или УСБ - драйвер орет, что порт занят другой программой. в разрыв клавы - может и будет работать, но я такие не рекомендую...
#8
by skam
Это идея но в моем случае не подходит. У меня все документы создаются обработками. Тоесть например открыта база /Магазин 1/ и база /Магазин 2/. В 1-ой и во 2-ой базе открыта обработка /Продажа изделия/. Когда сканируют штрих код, изделие автоматически попадает в эту обработку/форму. Можно вручную перед переходом отключать устройство (сканер) в 1-ой базе и включать во 2-ой. Тогда работает. Но это не очень удобно. Нужно сделать что бы было автоматически. Может как-то можно отловить какая 1С сейчас активна из закладок на панели задач?
#10
by у лю 427
неудобно. Сканер используется не только для подбора в доках, но и поиска в справочнике и еще где то....
#12
by skam
Что каждую секунду юзать ОбработкуОжидания, просто у меня уже каждый час работает ОбработкаОжидания и выйдет что та перекроет ету? Через Олю я и делаю. Вот только как посмотреть какая 1С активная в данный момент?
#15
by у лю 427
в типовой ТиС щелкаешь сканером по товару при всех закрытых окнах - открывается какая то форма с ценой. Типа у кассира спросили почем - он ответил...
#17
by Timaaa
По-моему ПриПовторномОткрытии запускается, если форма уже открыта, а ты в еще раз ее открываешь (из журнала)... как можно олей посмотреть, "какая 1С" в данный момент активна? у меня похожая проблема :)
#18
by skam
Я использую ОЛЕ для отключение устройства в другой базе. А определить какая 1С активна в данный момент пока не получилось. Форма.ОбработкаОжидания Я сделал так: Форма.ОбработкаОжидания(МетодДляВызова,1); дает возможность каждую сек. запускать определенную процедуру и при етом не перекрывает ОбрботкуОжидания в глоб. модуле. Это порадовало! 14 посту Спасибо! ;)
#20
by ValeriTim
Слушайте, а почему все включают ЮСБшный сканер как эмулятор СОМ ? У меня работает без всяких драйверов как в разрыв клавиатуры и ему глубоко фиолетово какая программа в данный момент активная - все передается в нее ... Зачем нужна эмуляция СОМ ? ну никак не пойму ...
#21
by skam
А как отлавливать событие от сканера? Если разрыв клав. то ОбработкаВнешнегоСобытия не видит событие от сканера. На сколько я помню если использовать разрыв клав. то считанные данные попадают только в поле ввода (элемент формы).
#22
by Serginio1
Наверное придется делать приложение читающее ком порт и предавать полученному через GetForegroundWindow (или еще как есть варианты), подключенным к нему через ОЛЕ клиентам, которые и предатут ему свои хэндлы. ВК клиентов подсоединяются в своем потоке к Серверу, получают данне вызывают ОбработкуВнешнегоСобытия. А проще купить второй сканер.
#24
by Злопчинский
(20,21) если юзать в разрыв клавы - то действие на сканирование будет зависеть от того на каком элементе формы находится фокус в момент сканирования, а также и от суффикса сканнера (если это "энтер" - то может много чего произойти....)
#25
by Serginio1
Проще из ВК подключится к серверу чтения из ком порта, передать в него IAsyncEvent и хэндл окна, а в сервере получить активное приложение, и если оно есть в списке вызвать IAsyncEvent.ExternalEvent. Возможно ошибаюсь
#26
by ValeriTim
Ээээээ ... :) Вы кошек не любите ? Так вы не умеете их готовить ... :) Вы просто не хотите немного подумать - у меня стоит 8.1 Розница, там по нажатию клавиши F7 выскакивает окошко для ручного набора штрихкода. Я перепрограммировал сканер - добавил ему префикс. Т.е. сейчас со сканера приходит F7штрихкодEnter - Получается что сначала вызывается то самое окошко, туда попадает код и нажимается ввод. Соответственно мне _вообще_ не надо подключать сканер к 1С. Вот и все ... :)
#28
by Timaaa
У тебя просто в частном случае все хорошо работает, а вот если тебе надо было ОБЯЗАТЕЛЬНО использовать ОбработкаВнешнегоСобытия? Например: распознавать штрихкод по префиксу (документ, товар, юзер и тд). Вот зачем эмуляция.
#30
by ValeriTim
И что мне мешает ? В программу сканер передает _полный_ штрихкод для EAN13 - соответственно все 13 цифр, по этому мне никто не мешает его потом разбирать, а префикс который использую я это немного другое - читайте описания сканера.
#31
by ValeriTim
+ причем префикс который использую я не зависит от считываемого штрихкода, соответственно будет работать на всех типах, поддерживаемых сканером.
#32
by Timaaa
Например: Библиотека. На форме документа есть 2 поля ввода: 1. читатель 2. книга Оба поля надо заполнять со сканера. ТЕ штрихкоды книг и читателей имеют разный префикс. Как ты определишь, куда совать считанный ШК, если (как сказано в ) не можешь использовать ОбработкуВнешнегоСобытия?
#33
by skam
. Например имеется обработка где нужно использовать сканер, при открытии этой обработки я прописал код в посте , после этого каждую секунду будет выполнятся процедура задана в Форма.ОбработкаОжидания(библиотека 1CPP.dll/FormEx.dll) и которая находится/прописана в модуле этой обработки. А вот в этой процедуре не плохо было бы определять какая 1С/форма сейчас активна и если сканер в этой базе отключен то мы его подключаем, если он подключен во второй базе мы его сначала отключаем во 2-ой базе, средствами ОЛЕ, а потом подключаем в 1-ой.
#36
by ValeriTim
Все опять же очень просто - создаем на форме кнопку и назначаем ей клавишу F7. По этой кнопке выскакивает окошко с единственным полем для ввода штрихкода, по нажатию Enter - обработчик, который и проверяет префикс штрихкода. :) Я так и не могу понять необходимость COM эмуляции ...
#37
by Timaaa
Действительно, если не доп. настройку сканера + кнопку на форме, то получается чтьо-то типа ОбработкиВнешнегоСобытия. А с невидимой кнопкой будет работать? :)
#39
by АЛьФ
2 А именно чтоб окошки всякие не выскакивали. Эмуляция ввода с клавиатуры (о которой ты говоришь) - это тоже не фонтан.
#40
by Serginio1
Проверил для интереса GetAppMainFrame совпадает с GetForegroundWindow из любого приложения
#41
by ValeriTim
, Весь процесс происходит настолько быстро, что этого окошка и незаметно, к тому же посмотрите как сделано в Рознице 8.1 - окошка у меня и не видно. "не фонтан" обоснуй.
#46
by Timaaa
Насколько я понял по твоим словам, в рознице у тебя только 1 поле, куда попадает ШК. Там окошко и не нужно
#47
by ValeriTim
Я не менял конфигурацию, а только подстроил сканер штрихкода под нее, так что окошко всеравно присутствует.
#48
by ValeriTim
+ там нету поля - там табличная часть, в которую заполняется номенклатура. Причем табличная часть не доступна для редактирования, так что ... :)
#49
by Timaaa
Не помню точно всех окошек, разговор вообще не об этом был:) Я понял, что ты можешь реализовать работу ЮСБ сканера, эмуляцией ввода с клавиатуры. Но получается все равно как-то кривовато ИМХО
#51
by ValeriTim
Он и так работает как эмуляция ввода с клавиатуры (по умолчанию) "кривовато" обоснуй.
#52
by ValeriTim
+ Зато включение/отключение устройств по ОЛЕ, левые константы на форме, ОбработчикиОжидания на форме это "прямовато" ? :)
#53
by the 13th
подключение сканера через разрыв клавиатуры (или эмуляцию разрыва) + драйвер от Атол и все прекрасно работает через обработку внешнего события
#54
by skam
Событие есть, вот только данные передаются не полностью. Например считал штрих код 00-02544Н, а получил только последний символ Н.
#55
by Timaaa
Кстати... около года назад автоматизировал библиотеку, там точно использовал ОбработкуВнешнегоСобытия, и смутно помню, что сканер был клавиатурный. Точно ли в правда написана? :)
#56
by skam
Привожу скрипт которым можно отследить заголовок активного приложения, загнать его в Форма.ОбработкаОжидания и можем получать какое приложение активно в данный момент. Правда если открыто 2 базы с одинаковым заголовком, нужно смотреть еще хэндл, который получаем через GetForegroundWindow. ТекстСкрипта = "Function VBSFunction
#58
by Serginio1
Можно повесить Хук и отлавливать ативацию приложения и вызывать обработку внешнего события. Но сделать чтение ком порьа и сообщить его значение активному окну. case cwps.message of WM_ACTIVATEAPP: end.
#61
by AcaGost
Поясняю. 1) Добавь константу - "ПриложениеАктивно" 2) На форму твоего документа, обработки, формы списка, в общем на ту форму ,которая всегда активна, добавь текстовик с функцией, отлавливающей изменения. Эта функция будет тебе устанавливать константу в "1", одновременно по Оле в другой базе эту же константу в "0" А далее Форма.ОбработкаОжидания
#62
by skam
Можно исключить использования ОЛЕ. Отключать сканер в 1С сразу если оно не активно, и подключать когда активно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- 1С: Предприятие 7.7. Сельскохозяйственное предприятие
- 1с Предприятие 8.0 Работа с файлами. Возмутительно
- v7: Кто-нибудь пользовался? (1С: Предприятие 7.7. Конфигурация Сельскохозяйственное предприятие.)
- В чём разница между 1С:Предприятие 8.1. Лицензия на сервер (x86-64) и 1С:Предприятие
- Работа со сканером штрих-кодов УТ11
- Апгрейд с 1С:Предприятие 8.2. Сервер x86 на 1С:Предприятие 8.3 (x86-64)
- Интерактивная работа со списком значений в управляемой форме (документа)
- Работа со сканером АТОЛ MS9540 в 1С 7.7 Торговля
В этой группе 1С
- Заполнение документа MS Word из среды 1С:Предприятие .Заполнение закладок
- что такое RFID метка в УТ?
- Где копнуть, от чего происходит: 1sjourn Ошибка блокировки ...
- На какой СУБД работает ваша 1С v8.1?
- Сохранение Excel в текстовый файл с разделителями табуляции
- ЗУП 2.5.13.5 Расчет надбавки (произвольная формула)
- Регистрация документа с движениями в узле плана обмена
- Непонятная ошибка при работе НайтиПоНомеру вышла. Кто знает что это?
- СКД: Как подставить GUID организации в СКД
- МХ-1 в Управление торговлей
- v7: Оприходование Материалов на счет 10.01
- v7: 1С:Подрядчик 2.3
- v7: Как получить значения из строки Таблицы
- Как получить GUID самой информационной базы? платформа 8.0
- Номенклатура и последний документ её поступления
- УПП: Закрытие счетов 20 и 26 документом Расчет себестоимости выпуска
- в закрытии месяца не формируется проводка Дт40 Кт 20
- v7: Как разделить бюджетный и внебюджетный НДФЛ в ЗиК?
- Уход от ИТС
- Как получить имя принтера по умолчанию из 1С?