![]() |
![]() |
![]() |
|
Внешнее событие в обычных формах | ☑ | ||
---|---|---|---|---|
0
SHAS
16.10.20
✎
19:24
|
Добрый день!
Открыта форма документа (Д1). Сканирую ШК, отрабатывает "Внешнее событие" в этой форме, в результате которого создаётся другой документ (Д2) на основании первого. Соответственно, открывается форма нового документа Д2. После чего сканирую другой ШК, попадаем во внешнее событие документа Д2. В этом внешнем событии проводится и закрывается Д2. Сразу после закрытия Д2 программа попадает во внешнее событие Д1, хотя там и написано Если Не ВводДоступен() Тогда Возврат; КонецЕсли; Программа проходит это условие и идёт дальше. Как сделать, чтобы после попадания во внешнее событие Д2, не срабатывало внешнее событие в Д1 (или ВводДоступен() получало Ложь)? |
|||
1
SHAS
16.10.20
✎
20:08
|
Как я понимаю - никак. Выкрутилась через однократный ПодключитьОбработчикОжидания, в процедуре которого 1 строка "Закрыть()"
|
|||
2
Garykom
гуру
16.10.20
✎
20:18
|
какая знакомая штука
тоже обработчик но не открывал/закрывал форму внутри первого сканирования а через обработчик ее т.е. пик - надо открыть новую или закрыть текущую форму (активной станет предыдущая и там отработает ВводДоступен) то не сразу ее а запуская однократный ПодключитьОбработчикОжидания с 0.2-0.5 сек и уже в вызываемой им функции\процедуре выполнял открытие или закрытие формы. |
|||
3
Garykom
гуру
16.10.20
✎
20:19
|
Хотя это дикий костыль, по уму надо свой механизм сканирования куда формы регаются и им передаются события или нет
|
|||
4
Garykom
гуру
16.10.20
✎
20:20
|
Фишка что ВшешнееСобытие прилетает во ВСЕ открытые формы, но обработка пойдет по очереди
|
|||
5
SHAS
16.10.20
✎
20:44
|
Мне пока такой костыль пойдёт.
Оно скорее не "прилетает во все", а обходит все по очереди. Но к следующему оно переходит после того, как обработает предыдущий. И если событие не закрывает форму, то оно прийдёт в следующую форму, а в ней ВводДоступен() вернёт ложь. А если из "Внешнего события" первой формы она же закрывается, то после этого срабатывает в другой форме, которая при закрытии первой стала активной и в ней ВводДоступен() уже истина. Я путём "ПодключитьОбработчикОжидания" разрываю этот порочный круг. Внешнее событие успевает прошвырнуться по всем формам, пока не открывается процедура из ПодключитьОбработчикОжидания... |
|||
6
Сияющий в темноте
18.10.20
✎
20:25
|
по хорошему,нужно вводить флаг СобытиеОбработано,так как ситуаций много и можно попасть в несколько форм сразу.
также,нужно очень аккуратно работать с модально открытыми формами(или лучше вообще не работать) есть вариант,когда в форме мы регистрируем в момент события того,кто будет обрабатывать,а ввзываем его из модуля приложения,куда прилетает событие после всех форм. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |