Имя: Пароль:
1C
1С v8
Блокировка формы вместо модального вызова работает не так, как хотелось бы
,
0 RedEchidna
 
11.10.18
03:43
Заменяя модальное открытие формы на немодальное с блокировкой владельца, заметил, что заблокированная форма позволяет перемещаться по ее элементам с помощью клавиши Tab, а также вводить данные в активное поле ввода. Помимо этого, заблокированная форма еще и обрабатывает внешнее событие (в моем случае - сканирование штрих-кода). Это мешает, потому что блокирующая форма может закрываться сканированием штрихкода, который следом отрабатывается в разблокированной форме-владельце (вызывая открытие того же блокирующего окна). Решений в голову приходит много, но хотелось бы обойтись без костылей и сделать код универсальным. Возможно ли сделать режим блокировки... более блокирующим, что ли. Или такое поведение таким и задумывалось?

8.3.13, управляемые формы.
1 Sapiens_bru
 
11.10.18
06:28
Блокировать весь интерфейс - более блокирующее, чем блокировать окно владельца
2 RomaH
 
naïve
11.10.18
06:50
(0) и даже ВводДоступен() истину возвращает?
3 RedEchidna
 
12.10.18
03:15
(1) Может быть, но обе проблемы все равно не решаются.
(2) На время блокировки нет, но на момент считывания штрих-кода (который закрывает блокирующее окно) формой-владельцем - да.
4 cons24
 
12.10.18
11:22
(0) пишите на [email protected] пусть доделают. Думаю всем лучше будет.
5 Fragster
 
гуру
12.10.18
11:48
> заблокированная форма позволяет перемещаться по ее элементам с помощью клавиши Tab
похоже на баг. у меня не наблюдается. это веб клиент?

(3) >На время блокировки нет
так ведь в типовых такая проверка есть при получении события (по крайней мере была раньше)
6 RedEchidna
 
15.10.18
03:52
(5) Тонкий клиент.
ВводДоступен() отлично работает, когда нужно сканировать именно в сфокусированную форму, и на время блокировки формы тоже работает правильно.

Проблема в следующем: сканируем в основной форме штрих-код, который вызывает блокирующую форму с предупреждением. Есть штрих-код, закрывающий эту блокирующую форму (подразумевается работа на приличном расстоянии от компьютера). При этом сначала блокирующая форма отрабатывает штрих-код, закрывается, затем заблокированная форма разблокируется, на ней становится доступен ввод, и лишь затем уже она отрабатывает этот же штрих-код (вызывая все ту же блокирующую форму).

Ну и напрягает, что по заблокированной форме можно табом перемещаться, даже вводить данные.
7 RomaH
 
naïve
15.10.18
07:20
(6) логично, код не может работать параллельно
поэтому сначала в одном месте, потом в другом
обработка ожидания - наше все
8 Fragster
 
гуру
15.10.18
09:16
(6) закрывай через однократную обработку ожидания на 0.1 секунды, а лучше вообще сделать все в одной форме (хотя не всегда получается, да)
9 RedEchidna
 
15.10.18
11:51
(7) (8) Да понятное дело, там можно много чего придумать и помимо обработки ожидания. И с последовательным выполнением кода тоже понятно, конечно. Но все равно странно, что внешнее событие в основной форме отрабатывается, ведь на момент сканирования она заблокирована.
10 Fragster
 
гуру
15.10.18
12:15
(9) нет, она работает, например её обработчики ожидания и оповещения продолжают выполняться. а вот как ты по ней табом передвигаешься - я не понимаю. по идее весь ввод до нее не доходит.
11 RedEchidna
 
18.10.18
03:17
(10) Уж не знаю, как я в тот раз проверял, но сейчас перепроверил доступные варианты: при блокировке окна владельца табом можно перемещаться по заблокированной форме (и вводить данные), а при блокировании всего интерфейса - нет. Так что (1) был прав.
2 + 2 = 3.9999999999999999999999999999999...