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

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

Форма 2

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

Комментировал по частям. Сделал вывод, что любая из строк приводит к активации второй формы. Как избежать?
---
Кстати, а может все еще проще?

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    //что-то делаем
    Источник.Активизировать();
```
---
сделай из формы2 оповещении на для формы1 )))
а обязательна ли одновременная работа пользователя сразу в двух формах?
---
О! Точно! :)
---
Нельзя ли открывать форму2 после всех необходимых действий на форме1? И при открытии устанавливать видимость/доступность элементов.

п.с. не совсем понятно как происходит работа с открытыми формами.
---
Может попробовать пересмотреть механизм и отказаться от оповещений?
Форма 2 из Формы 1 ведь вызывается, скорее всего. Тогда где-то в Форме 1 хранить открытое окно Формы 2. И сделать в Форме 2 экспортный клиентский метод по установке нужных параметров. И вызывать его из Формы 1.
---
цепочка длиннее на самом деле. Там есть еще промежуточная форма 3, которая как раз открывает форму 1, а оповещаю форму 2, которая, возможно, и не открыта вовсе. Поэтому не вариант.

Теоретически оповещаемых форм может быть несколько. И во всех, возможно, потребуются изменения.
---
ну закрутил )))
ну пока в голову пришло только одно решение в виде возврата фокуса обратным оповещением, ну как по мне так это не айс ))).
---
На сколько я понимаю, у тебя же УФ, перерисовка формы сделает её в любом случае активной (может не прав).
---
Тут не факт, что из-за перерисовки. Как-то тоже на это наталкивался. И, вроде, только изменение Видимости перерисовывает форму с уходом на сервер.
Но проверить-то просто. Автору нужно закомментить код обработки оповещения и отчитаться, что же будет с фокусом.
---
ну так доступность, просмотр - вроде то же обновляют форму.
---
При изменении доступности форма не бегает на сервер.
Таки попробуйте закомментить и пронаблюдать. Если фокус теряться не будет, то потом по строчке обратно возвращайте. И посмотрим, на чем начнется изменение фокуса.
Нам (мне, по-крайней мере) тоже интересно.
---
А, прошу прощения:) Не по адресу
---
Так я и написал, что любая из строк вызывает смену фокуса. Т.е. все эти строки комментирую - проблем нет.
---
ну оно так и будет, т.к. изменения происходят на форме и на неё переводится фокус и скорее всего это просто так не обработать, надо как то возвращать фокус на нужную форму, ну или форму1 открывать блокируя весь интерфейс.
---
Ну тогда что-то в сторону

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

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

И

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

Активизировать()
---
нееееет. Не хочу таким длинным путем.

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

(17) Свежо! ))) И работает! Сергей, спасибо!
Хотя и костылик, как мне кажется.
---
Кстати, а может все еще проще?

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    //что-то делаем
    Источник.Активизировать();
```