Не работает ВнешнееСобытие в модально открытой форме
Сделал механизм чтобы при сканировании определенного ШК в форме документа открывается модальная форма в которой при помощи СШК можно внести некие данные. Все работало на Windows XP, но на Windows 2008 Server R2 Standart этот же механизм не работает. 1С:Предприятие 8.2 (8.2.19.130)
Поискал в инете - люди все говорят что в модальных формах не работает внешнее событие.
Самое что забавное что если не отключать перехватчик событий в форме документа, то все события которые возникли в модальной форме (визуально их не видно) после ее закрытия сыпятся в обработчик ВнешнеСобытие() формы документа.
При открытии той же модальной формы не модально все события возникают в ней.
Кто-то сталкивался с подобным?
Способы обхода есть, но все они некрасивые по сравнению с исходным вариантом и требуют значительных доработок.
Поискал в инете - люди все говорят что в модальных формах не работает внешнее событие.
Самое что забавное что если не отключать перехватчик событий в форме документа, то все события которые возникли в модальной форме (визуально их не видно) после ее закрытия сыпятся в обработчик ВнешнеСобытие() формы документа.
При открытии той же модальной формы не модально все события возникают в ней.
Кто-то сталкивался с подобным?
Способы обхода есть, но все они некрасивые по сравнению с исходным вариантом и требуют значительных доработок.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
1) пока все указывает на это, но буду скоро тестить на разных ОС и отпишусь
2) забыл сказать СШК в режиме клавиатуры, драйвер стоит 1С:Сканер штрихкода 8.0.17.3
(3) Вы ничего не путаете? Я как раз говорю про то что не возникает ВнешнееСобытие() в модальном окне, но накапливается и после его закрытия все эти события возникают в родительском окне, подключение СШК в обоих формах одинаковое и при открытии формы 2 в обычном режиме все работает четко
1) пока все указывает на это, но буду скоро тестить на разных ОС и отпишусь
2) забыл сказать СШК в режиме клавиатуры, драйвер стоит 1С:Сканер штрихкода 8.0.17.3
(3) Вы ничего не путаете? Я как раз говорю про то что не возникает ВнешнееСобытие() в модальном окне, но накапливается и после его закрытия все эти события возникают в родительском окне, подключение СШК в обоих формах одинаковое и при открытии формы 2 в обычном режиме все работает четко
(6)Вы по ходу не в курсе как работает в 1С 8.х СШК.
Я тоже не спец по этому но вот примерно как это происходит: СШК может работать в режиме COM (эмуляции если это USB) или в режиме клавиатуры, при сканировании ШК вызывается обработчик формы ВнешнееСобытие(), в данном случае он не вызывается для модально открытой формы.
Кстати проблему нашел, драйвера и ОС не при чем, тут особенность работы 1С с внешними событиями и модальными окнами. Я где то встречал описание поумнее но вот примерно как происходит: 1С гасит все события посылаемые всем окнам кроме модального, а у меня произошло следующее - подозревая это я отключал в родительской форме перехват событий (а при закрытии включал), но оказывается у меня при запуске базы по умолчанию открывается еще одна форма которая тоже работает со СШК, и на ней то 1С и глушило событие (возможно по принципу стека а может и просто так), причем настолько тихо что даже отладчик не показывал никакой активности. Обнаружилось это случайно - на ПК с XP из-за особенностей запуска лишней формы (скажем № 3) он не запускалась и все отрабатывало нормально отсюда и возник пост.
Вобщем вывод такой: для того чтобы в модальном окне работать с СШК нужно чтобы только одна форма была подключена к СШК, остальные нужно получается отключать перед (или после запуска - порядок не важен).
PS:
(6) "Смотри драйвера" - как вы предполагаете на них смотреть? Перебирать все версии? по другому бы я не смог т.к. я не разработчик драйверов.
Я тоже не спец по этому но вот примерно как это происходит: СШК может работать в режиме COM (эмуляции если это USB) или в режиме клавиатуры, при сканировании ШК вызывается обработчик формы ВнешнееСобытие(), в данном случае он не вызывается для модально открытой формы.
Кстати проблему нашел, драйвера и ОС не при чем, тут особенность работы 1С с внешними событиями и модальными окнами. Я где то встречал описание поумнее но вот примерно как происходит: 1С гасит все события посылаемые всем окнам кроме модального, а у меня произошло следующее - подозревая это я отключал в родительской форме перехват событий (а при закрытии включал), но оказывается у меня при запуске базы по умолчанию открывается еще одна форма которая тоже работает со СШК, и на ней то 1С и глушило событие (возможно по принципу стека а может и просто так), причем настолько тихо что даже отладчик не показывал никакой активности. Обнаружилось это случайно - на ПК с XP из-за особенностей запуска лишней формы (скажем № 3) он не запускалась и все отрабатывало нормально отсюда и возник пост.
Вобщем вывод такой: для того чтобы в модальном окне работать с СШК нужно чтобы только одна форма была подключена к СШК, остальные нужно получается отключать перед (или после запуска - порядок не важен).
PS:
(6) "Смотри драйвера" - как вы предполагаете на них смотреть? Перебирать все версии? по другому бы я не смог т.к. я не разработчик драйверов.
Помню такое было. Внешнее событие передается окну документа, но очередь сообщений обрабатывает только сообщения модального окна.
Можно сделать обработку внешнего события в модальном окне, тогда сообщения должны посылаться ему.
Можно сделать обработку внешнего события в модальном окне, тогда сообщения должны посылаться ему.
(8) Serginio, CaSH_2004 прав: когда подключается сканер штрих-кода, в настройках "Номер порта" выбирается "Клавиатура".
Процедура ВнешнееСобытие(Источник, Событие, Данные)
ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);
Форма у нас не модальная...
Процедура ВнешнееСобытие(Источник, Событие, Данные)
ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);
Форма у нас не модальная...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот