Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как узнать, заблокирован ли интерфейс формой?

Как узнать, заблокирован ли интерфейс формой?
Я
   alexei366
 
14.09.16 - 16:33
Есть база на 8.2, обычные формы.
Нужно узнать в коде, не блокирует ли сейчас интерфейс некая форма (самого факта будет достаточно, кто блокирует не важно).
Пока толком ничего не нашел ни в СП, ни в интернете, так что подскажите, кто что знает.
 
 
   Jokero
 
1 - 14.09.16 - 16:42
может это?

ВводДоступен()
Возвращаемое значение:

Тип: Булево.
Истина - ввод данных в форму возможен (форма активна); Ложь - форма не активна.
Описание:

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует