|
Как узнать, заблокирован ли интерфейс формой? | ☑ | ||
---|---|---|---|---|
0
alexei366
14.09.16
✎
16:33
|
Есть база на 8.2, обычные формы.
Нужно узнать в коде, не блокирует ли сейчас интерфейс некая форма (самого факта будет достаточно, кто блокирует не важно). Пока толком ничего не нашел ни в СП, ни в интернете, так что подскажите, кто что знает. |
|||
1
Jokero
14.09.16
✎
16:42
|
может это?
ВводДоступен() Возвращаемое значение: Тип: Булево. Истина - ввод данных в форму возможен (форма активна); Ложь - форма не активна. Описание: Определяет, возможен ли ввод данных в форму. Может быть использован для того, чтобы определить, активизирована ли текущая форма. |
|||
2
alexei366
14.09.16
✎
17:10
|
(1) Представим что я нахожусь в модуле приложения, в процедуре вызванной обработчиком ожидания. То есть у меня нет формы в которой я работаю, тогда я не смогу использовать данный метод.
Есть ли еще у кого какие идеи? |
|||
3
Fragster
гуру
14.09.16
✎
17:15
|
(2) а ты уверен, что твой обработчик ожидания при открытой, блокирующей весь интерфейс форме, сработает?
|
|||
4
alexei366
14.09.16
✎
17:32
|
(3) Сам офигел, но он работает(((((
|
|||
5
alexei366
14.09.16
✎
17:33
|
(3) Собственно в этом то и проблема, чтобы разные обработчики не наплодили блокирующих окон сотни
|
|||
6
Fragster
гуру
14.09.16
✎
17:40
|
(4) именно "блокировать весь интерфейс"?
|
|||
7
Fragster
гуру
14.09.16
✎
17:40
|
(5) открывать окно моветон. сделай форму на рабочий стол и показывай оповещение периодически
|
|||
8
Fragster
гуру
14.09.16
✎
17:40
|
ну, на краяняк воспользуйся ключем уникальности, чтобы вторую форму не открывать
|
|||
9
Fragster
гуру
14.09.16
✎
17:41
|
в БСП в напоминаниях это реализовано
|
|||
10
alexei366
14.09.16
✎
17:57
|
(9) Может, может. Но желание пока такое. Есть различные обработчики ожидания, которые могут выкидывать блокирующие окна, чтоб пользователь обязательно среагировал. Но в текущей ситуации могут быть случаи когда такие окна будут наслаиваиться, если каждый обработчик не будет чекать заблокирован ли интерфейс или нет.
И хотелось бы чекать каждым обработчиком, а не писать какие-нибудь механизмы флагов и т.п., и оставить жесткую блокировку интерфейса. |
|||
11
Vaflya
14.09.16
✎
18:56
|
константу поставь Заблокирован
|
|||
12
ifso
14.09.16
✎
20:58
|
(10)
> Есть различные обработчики ожидания, которые могут > выкидывать блокирующие окна, чтоб пользователь обязательно > среагировал. чё за афтоматизация когда фсёвручную? |
|||
13
Torquader
14.09.16
✎
22:22
|
В данном случае, пишется одно окно, в котором будут отображаться все предупреждения - для этого просто кнопка "Закрыть" переименовывается в кнопку "Следующее" и хранится массив сообщений.
По крайней мере, у меня с 7.7 так было сделано, и - форма не была блокирующей - просто пользователю, если требовалась его реакция - не давали форму закрыть. |
|||
14
alexei366
14.09.16
✎
23:09
|
(12) Не все конечно, но есь операции не требующие отлагательсв, ну или такие могут повлятся. Да даже представим, что при рабое пользоваел просто выпадает блокируещее окно, при выборе чегото там, и обрабочик ожидания тоже хоче заблокировать, во от этих моментов хочу и избавиться.
|
|||
15
alexei366
14.09.16
✎
23:12
|
(13) Думалось об этом, но капаться придется долго и много всего всего переписывать. Такие затраты пока неоправданы. Проблема, которую я описал, в жизни почти встречаться не будет, при работе пользователя, но хочется конечно решить.
|
|||
16
Torquader
14.09.16
✎
23:14
|
(15) Просто, если пользователь занят чем-то одним, а в этот момент всплывает окно, то у пользователя одно желание - побыстрее закрыть окно.
|
|||
17
alexei366
14.09.16
✎
23:21
|
(16) Это уже организаторский уровень, есть события на которые нужно реагировать оперативно.
|
|||
18
youalex
14.09.16
✎
23:40
|
(17) это кривая организация. Если, конечно, не сам юзер задает, какие окна у него должны вылазить и блокировать всю работу в тот момент, когда он реализацию на тыщу строк колбасит.
|
|||
19
youalex
14.09.16
✎
23:43
|
Кстати, очень жаль, что Оповестить() - это не функция, результатом которой является (условно) - массив ответов всех открытых форм, способных ответить на данное сообщение.
|
|||
20
alexei366
14.09.16
✎
23:43
|
(18) Возможно. Тут еще подумаем. Но сам вопрос по определению в коде блокирован ли интерфейс всеже инересен
|
|||
21
Torquader
14.09.16
✎
23:44
|
(20) Вообще-то, 1С призывает отказаться от модальности, так что эти вопросы, со временем, станут совсем не актуальными.
|
|||
22
alexei366
14.09.16
✎
23:45
|
(19) Можно по другому завернуть, передавать в параметрах форму котора вызывае события, а из других уже юзать экспортный метод или както еще
|
|||
23
alexei366
14.09.16
✎
23:46
|
(21) Прими это как не модальные окна, а окна блокирующие интерфейс, такие и при отказе о модальности остаются)
|
|||
24
youalex
14.09.16
✎
23:53
|
(22) без полновесного обмена сообщениями между формами - лучше заюзать контекст сеанса, что угодно - параметр сеанса, разного рода блокировки (от блокировки сеанса до ЗаблокироватьДанныеДляИзменения()) . Через параметр сеанса (в который в виде ХЗ можно пихать всё, и структуру в т.ч.)- думаю, можно нормально рулить. Но через оповещения было бы красивше.
|
|||
25
Torquader
15.09.16
✎
00:01
|
(23) Так это тоже самое - например - в Windows модальный диалог всего-лишь блокирует интерфейс основного окна, просто убивая сообщения ввода данных из его очереди.
|
|||
26
youalex
15.09.16
✎
00:09
|
(25) в 1с 77 (проверял в недавней теме) - при открытии модального окна - тупо все остальные окна приложения становятся disabled (смотрел через Windows Scanner). Сомневаюсь, что при этом они не способны ловить сообщения.
|
|||
27
Torquader
15.09.16
✎
00:19
|
(26) Так это и есть "неспособность принимать сообщения ввода".
|
|||
28
Torquader
15.09.16
✎
00:21
|
В семёрке, я, играясь с очередью сообщений, заставлял её пересчитывать бухгалтерские итоги в момент проведения документа - и оно даже работало.
|
|||
29
alexei366
15.09.16
✎
13:03
|
Эх, задача с определением состояния интерфейса, или получением списка открытых форм (без модернизации этих форм) в обычном интерфейсе не решается встроенными процедурами и функциями 1С((((
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |