как "красиво" проверить возможность открытия формы в разных режимах и понятно сообщить пользователю, если форма не подходит для текущего режима?
например, если управляемую форму открываем в обычном приложении и наоборот?
рассматриваем все варианты, не учитывая признаки "ИспользоватьОбычныеФормыВУправляемомПриложении" и "ИспользоватьУправляемыеФормыВОбычномПриложении".
---
Например так:

```1c
    ТекущийРежимЗапуска = ТекущийРежимЗапуска();

    // Внешнее соединение

    Если ТекущийРежимЗапуска = Неопределено Тогда
    Возврат Ложь;
    КонецЕсли;

    Если ТекущийРежимЗапуска = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение И ТипФормы = "Управляемая" Тогда
    Результат = Истина;
    ИначеЕсли ТекущийРежимЗапуска = РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение И ТипФормы = "Обычная" Тогда
    Результат = Истина;
    КонецЕсли;
```

По большому счету, задача сводится к получению типа формы через метаданные. Иного способа проверить тип нету, т.к. если не использовать признаки "ИспользоватьОбычныеФормыВУправляемомПриложении и т.д." типов УправляемаяФорма или Форма не существует в противоположных режимах.

Ну или просто получать форму в попытке, если форму можно получить то её можно и открыть.
---
infostart user, Можно попробовать сделать перехват в модуле менеджера.
---
во-первых, по-моему, модуль менеджера для других целей предназначен.
во-вторых, скорее всего проверки нужно делать в модуле объекта.
я, в принципе, знаю как, но просто хочется выбрать самый красивый способ, может где-то в типовых решениях есть, не могу вспомнить, чтобы где-то видел.
---
infostart user, во-первых, по-моему, модуль менеджера для других целей предназначен.
ОбработкаПолученияДанныхВыбора, ОбработкаПолученияПолейПредставления, ОбработкаПолученияПредставления, ОбработкаПолученияФормы.
Я вот про последнюю и говорю. А для чего ж тогда этот обработчик предназначен?
во-вторых, скорее всего проверки нужно делать в модуле объекта.
В модуле объекта открытие формы? o_O
---
в том то и дело, что в модуле объекта, открытие еще не происходит, там инициализируется объект. поэтому выгодней еще на этапе инициализации проверить какой режим, какая форма и выдать сообщение, если это необходимо. форму никто открывать не собирается, просто нужно проверить возможность, можно ли открыть ее вообще.

по поводу события в модуле менеджера - не знал, сейчас посмотрю.

АП во внешней обработке нет модуля менеджера, обработку не встраиваем в конфу.
---
Например так:

```1c
    ТекущийРежимЗапуска = ТекущийРежимЗапуска();

    // Внешнее соединение

    Если ТекущийРежимЗапуска = Неопределено Тогда
    Возврат Ложь;
    КонецЕсли;

    Если ТекущийРежимЗапуска = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение И ТипФормы = "Управляемая" Тогда
    Результат = Истина;
    ИначеЕсли ТекущийРежимЗапуска = РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение И ТипФормы = "Обычная" Тогда
    Результат = Истина;
    КонецЕсли;
```

По большому счету, задача сводится к получению типа формы через метаданные. Иного способа проверить тип нету, т.к. если не использовать признаки "ИспользоватьОбычныеФормыВУправляемомПриложении и т.д." типов УправляемаяФорма или Форма не существует в противоположных режимах.

Ну или просто получать форму в попытке, если форму можно получить то её можно и открыть.
---
Merc, угу, норм