Управляемые формы открыли разработчику новый механизм использования подсистем. Использование подсистем позволяет организовывать очень удобный и гибкий интерфейс пользователя. Решим одну из нестандартных задач, связанную с подсистемами.
Например, при каждом переходе пользователя из подсистемы в подсистему, нам нужно выдавать ему соответствующее сообщение. Первое. что может прийти в голову начинающему разработчику - это попытаться найти стандартное событие "при изменении" для нужной подсистемы. Но увы и ах, данной возможности не существует.
Для отлавливания события перехода между подсистемами будем использовать механизм навигационных ссылок. Для справки, навигационная ссылка несет в себе путь к объекту информационной базы, либо даже формы. То есть при изменении активности окна будет изменяться и навигационная ссылка.
Проведем инициализацию переменной "АктивнаяПодсистема" строкового типа в модуле управляемого приложения. Эта переменная будет нести в себе название текущей активной подсистемы. В процедуре "ПриНачалееРаботыСистемы" подключим обработчик ожидания с интервалом обновления одна секунда. Подключаемая процедура будет получать ссылку текущего активного окна приложения и находить в этой ссылке название активной подсистемы.
Пример навигационной ссылки: e1cib/navigationpoint/ТекущаяПодсистема/Справочник.Номенклатура.Команда.ОткрытьСписок
Выполняя переход по данной ссылке, откроется форма списка справочника "Номенклатура". Обратите внимание, что в этой ссылке находится и наша подсистема.
Также стоит обратить внимание, что рабочий стол приложения аналогично является подсистемой с именем "desktop".
В итоге получаем следующий код модуля приложения:
Хотя рассмотренный пример и является довольно простым в реализации, но использование этого механизма позволяет совершить практически любое действие при перемещении между подсистемами. Этот способ особо не влияет на производительность работы, если не выполнять при переходе ресурсоемкие операции.