В моем случае задача состояла в открытии произвольной формы с полем HTML документа, при переходе на определенные подсистемы в веб интерфейсе. Для примера приведу скриншот:
Это конечный результат которого я добился. Теперь по-порядку.
Была создана общая форма с именем "ФормаСайт", с элементом типа поле HTML документа.
В модуле формы размещен следующий код:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Сайт = "www.youtube.com";
КонецПроцедуры
Где Сайт - это поле вида "поле html документа" .
Затем в общих командах была создана команда "Сайт", в которой вызывалась эта общая форма.
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("ОбщаяФорма.ФормаСайт", , ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
На данном этапе все выглядело следующим образом, т.е нужно было нажать на ссылку сайт, чтобы запустить команду, которая откроет нашу форму, но хотелось бы
чтобы форма загружалась сразу при переходе в данную подсистему. В интернете нашел информацию, что стандартными средствами в 1С нельзя запустить команду программно.
Пришлось искать выход из данной ситуации, пойдем дальше.
Следующим этапом нужно было отловить событие переключение между подсистемами. Было реализованно с помощью следующего кода,
размещенного в модуле управляемого приложения.
перем ТекущаяПодсистема;
Процедура ПередНачаломРаботыСистемы(Отказ)
ТекущаяПодсистема = "desktop";
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
ПодключитьОбработчикОжидания("УзнатьТекущуюПодсистему", 0.5, Истина);
КонецПроцедуры
Процедура УзнатьТекущуюПодсистему() Экспорт
Ссылка = АктивноеОкно().ПолучитьНавигационнуюСсылку();
Подсистема = СтрЗаменить(Ссылка, "e1cib/navigationpoint/", "");
Знак = Найти(Подсистема, "/");
Если Знак > 0 Тогда
Подсистема = Лев(Подсистема, Знак-1);
КонецЕсли;
Если ТекущаяПодсистема <> Подсистема Тогда
Если СокрЛП(Подсистема) = "Форум" Тогда
WSHShell = Новый COMОбъект("WScript.Shell");
WSHShell.SendKeys("+{1}");
КонецЕсли;
Если СокрЛП(Подсистема) = "Сайт" Тогда
WSHShell = Новый COMОбъект("WScript.Shell");
WSHShell.SendKeys("+{2}");
КонецЕсли;
ТекущаяПодсистема = Подсистема;
КонецЕсли;
ПодключитьОбработчикОжидания("УзнатьТекущуюПодсистему", 0.5, Истина);
КонецПроцедуры
Подробнее вопрос как отловить событие при смене подсистемы освещен на сайте "www.develplatform.com/2012/12/blog-post_28.html"
Для команды в свойствах сочетание клавиш, я поставил shift+1 для команды сайт и shift+2 для команды форум, вы соответственно можете поставить любые другие сочетания клавиш.
Имитацию нажатия клавиш в форме можно вызвать через функцию SendKeys() объекта WScript.Shell. Что я и реализовал в процедуре
УзнатьТекущуюПодсистему(). Вот в кратце и все. Если будут вопросы с удовольствием отвечу.