Обработка оповещения активирует другую форму

1. kraynev-navi 648 20.04.17 09:00 Сейчас в теме
Ситуация. Из формы 1 делаю "Оповестить" на форме 2 происходит обработка оповещения, в результате которого изменяются свойства Доступность и ТолькоПросмотр некоторых элементов. Все изменяется и все хорошо, но активной становится форма 2, а хочется остаться на форме 1.

Активная форма 1.
Выполняю Оповестить "Некоторое событие";

Форма 2
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
		Элементы.ГруппаШапка.ТолькоПросмотр=Истина; // группа
		Элементы.ГруппаИсходноеЗаполнение.ТолькоПросмотр=Истина; // группа
		Элементы.ФормаЗаполнитьПоНомеру.Доступность=Ложь; // кнопка
		Элементы.ФормаСкорректироватьИсходноеЗаполнение.Доступность=Ложь; // кнопка
КонецПроцедуры


Комментировал по частям. Сделал вывод, что любая из строк приводит к активации второй формы. Как избежать?
По теме из базы знаний
Найденные решения
17. ImHunter 315 20.04.17 11:50 Сейчас в теме
Кстати, а может все еще проще?
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    //что-то делаем
    Источник.Активизировать();
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Naposaram 291 20.04.17 10:01 Сейчас в теме
(1) сделай из формы2 оповещении на для формы1 )))
а обязательна ли одновременная работа пользователя сразу в двух формах?
4. ImHunter 315 20.04.17 10:02 Сейчас в теме
5. Naposaram 291 20.04.17 10:05 Сейчас в теме
(4) Нельзя ли открывать форму2 после всех необходимых действий на форме1? И при открытии устанавливать видимость/доступность элементов.

п.с. не совсем понятно как происходит работа с открытыми формами.
2. ImHunter 315 20.04.17 09:55 Сейчас в теме
Может попробовать пересмотреть механизм и отказаться от оповещений?
Форма 2 из Формы 1 ведь вызывается, скорее всего. Тогда где-то в Форме 1 хранить открытое окно Формы 2. И сделать в Форме 2 экспортный клиентский метод по установке нужных параметров. И вызывать его из Формы 1.
6. kraynev-navi 648 20.04.17 10:07 Сейчас в теме
(2) цепочка длиннее на самом деле. Там есть еще промежуточная форма 3, которая как раз открывает форму 1, а оповещаю форму 2, которая, возможно, и не открыта вовсе. Поэтому не вариант.

Теоретически оповещаемых форм может быть несколько. И во всех, возможно, потребуются изменения.
7. Naposaram 291 20.04.17 10:14 Сейчас в теме
(6) ну закрутил )))
ну пока в голову пришло только одно решение в виде возврата фокуса обратным оповещением, ну как по мне так это не айс ))).
8. Naposaram 291 20.04.17 10:17 Сейчас в теме
(6) На сколько я понимаю, у тебя же УФ, перерисовка формы сделает её в любом случае активной (может не прав).
9. ImHunter 315 20.04.17 10:54 Сейчас в теме
(8) Тут не факт, что из-за перерисовки. Как-то тоже на это наталкивался. И, вроде, только изменение Видимости перерисовывает форму с уходом на сервер.
Но проверить-то просто. Автору нужно закомментить код обработки оповещения и отчитаться, что же будет с фокусом.
10. Naposaram 291 20.04.17 10:58 Сейчас в теме
(9) ну так доступность, просмотр - вроде то же обновляют форму.
11. ImHunter 315 20.04.17 11:03 Сейчас в теме
(10) При изменении доступности форма не бегает на сервер.
Таки попробуйте закомментить и пронаблюдать. Если фокус теряться не будет, то потом по строчке обратно возвращайте. И посмотрим, на чем начнется изменение фокуса.
Нам (мне, по-крайней мере) тоже интересно.
12. ImHunter 315 20.04.17 11:04 Сейчас в теме
(10) А, прошу прощения:) Не по адресу
13. kraynev-navi 648 20.04.17 11:20 Сейчас в теме
(9) Так я и написал, что любая из строк вызывает смену фокуса. Т.е. все эти строки комментирую - проблем нет.
14. Naposaram 291 20.04.17 11:29 Сейчас в теме
(13) ну оно так и будет, т.к. изменения происходят на форме и на неё переводится фокус и скорее всего это просто так не обработать, надо как то возвращать фокус на нужную форму, ну или форму1 открывать блокируя весь интерфейс.
15. ImHunter 315 20.04.17 11:33 Сейчас в теме
Ну тогда что-то в сторону

Глобальный контекст (Global context)
ПолучитьОкна (GetWindows)
Синтаксис:

ПолучитьОкна()

И

ОкноКлиентскогоПриложения (ClientApplicationWindow)
Активизировать (Activate)
Синтаксис:

Активизировать()
16. kraynev-navi 648 20.04.17 11:41 Сейчас в теме
(15) нееееет. Не хочу таким длинным путем.

Новая гипотеза. На форме 3 (открыта вместе с другими) тоже стал ловить оповещение и управлять Доступностью в частности. Перенес туда одну команду и кнопку. Так вот на эту форму фокус не переходит! Т.е. работает корректно.
Какая-то особенность/баг конкретной формы 1
18. kraynev-navi 648 20.04.17 12:08 Сейчас в теме
(16) установка указанных в (0) свойств на сервере или клиенте не влияет на результат

(17) Свежо! ))) И работает! Сергей, спасибо!
Хотя и костылик, как мне кажется.
17. ImHunter 315 20.04.17 11:50 Сейчас в теме
Кстати, а может все еще проще?
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    //что-то делаем
    Источник.Активизировать();
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот