Добрый день.

Имеется следующая ситуация: открывается форма выбора справочника. При этом передается отбор по Ссылке, а также Оповещение. Примерно так:

Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФилиала", ЭтотОбъект);

ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", ДоступныеФилиалы));
ОткрытьФорму("Справочник.Филиалы.ФормаВыбора", ПараметрыФормы,,,,, Оповещение);

Но данный справочник очень "тяжелый", отбор по ссылке (а там практически все элементы) очень долго открывает форму выбора.

Если Использовать конструкцию
ФормаВыбора = ПолучитьФорму(..);
И затем обратиться к ФормаВыбора.Список.Отбор.Элементы, то можно добавить необходимые отборы (не по ссылке, а по двум полям в группе Или, которые оставят те же элементы что отбор по ссылке в первом случае), то форма открывается быстро.
Но в ПолучитьФорму нельзя указать Оповещение.

Получается проблема, в первом случае (ОткрытьФорму) "тяжелый" отбор из-за того, что можно передать только отбор на равенство или Список, передаем отбор по ссылке, форма оооочень медленно открывается.
В ОткрытьФорму можно обратиться к форме и установить отборы программно, в результате откроется форма быстро, не нельзя использовать оповещение.

Оповещение использовать необходимо обязательно, указывать владельца в ОткрытьФорму и обработать событие ОбработкаВыбора не подходит. Вносить изменения в модуль формы выбора справочника нельзя.

Как выйти из этой ситуации?
---
параметр формы ФиксированныеНастройки
http://infostart.ru/public/565658/
---
Нарисовать для выбора свою форму?
---
Этот вариант рассматривается, но не самое лучшее решение, ибо в форме выбора реализован определенный функционал, который придется дублировать в новой форме.
---
Может поясните почему же так важно использовать именно оповещение и почему нельзя воспользоваться расширением, а не вносить изменения в конфигурацию?
---
потому что реализовано уже всё через оповещение, процедура, которая вызывает форму выбора вызывается из кучи других обработчиков. Реализовать необходимо минимально изменив уже реализованный алгоритм.
---
тогда так через ОбработкуВыбора, можно владельцем формы выбора назначить элемент формы

```1c
    &НаКлиенте
    Процедура Команда1(Команда)
    Форма1=ПолучитьФорму("Справочник.КакойТоСправочник.ФормаВыбора",,ЭтаФорма);
    Форма1.Открыть();
    КонецПроцедуры

    &НаКлиенте
    Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    ВызватьПроцедуруОповещения(ВыбранноеЗначение, ИсточникВыбора)
    КонецПроцедуры
```
---
У меня в оповещение передается параметр, с помощью которого я анализирую откуда была вызвана процедура работы с формой выбора. В этом случае не вижу возможным сохранить такой параметр. В ОбработкеВыбора он будет потерян.
---
тогда может сделать реквизит формы, и перед открытием формы его заполнять и в оповещении его анализировать, или в той же процедуре оповещения добавить параметр типа

```1c
    Процедура Оповещение(,,,,ВызовОттуда=Неопределено)
```

И в обработке выбора вызвать

```1c
    оповещение(.,,,, "Запущено оттуда")
```
---
параметр формы ФиксированныеНастройки
http://infostart.ru/public/565658/
---
При закрытии формы выбора используйте метод Оповестить("МоеСобытие",ПараметрыДляПередачи). Тут же можно указать источник - вашу форму выбора. Но на мой взгляд не обязательно.

В вызывающей форме в ОбработкаОповещения пишите что-то вроде

Если ИмяСобытия = "МоеСобытие" Тогда
 // Обработать параметры
КонецЕсли;