Открытие формы внутри другой формы

10 октября 2013

Файлы для загрузки

Предисловие

Управляемые формы позволяют достаточно гибко работать с открытием/переключением форм и окон приложения. В настоящей статье рассмотрим пример открытия одной управляемой формы внутри другой.

Пример

Для демонстрации напишем простую обработку, в которой будет единственный реквизит формы "ИмяФормыДляОткрытия" строкового типа и команда формы.

Состав реквизитов и команд управляемой формы

Программный код обработчика команды следующий:

&НаКлиенте
Процедура ОткрытьФормуПоИмени(Команда)
                             
     ОткрытьФорму(         // Параметры:
       ИмяФормыДляОткрытия,// 1. Имя формы, введенной в реквизит 
                           //"ИмяФормыДляОткрытия"
       ,                   // 2. Параметры открытия формы 
                           // (в нашем случае их нет)                  
       ЭтаФорма,           // 3. Владелец открываемой формы  
                           // (текущая форма)       
       УникальныйИдентификатор,// 4. GUID текущей формы
                   
       ЭтаФорма.Окно);     // 5. Окно приложения, в котором 
                           // будет открыта // форма.
                 
КонецПроцедуры

Тестируем

В качестве примера имени формы введем путь основной формы объекта справочника "Номеклатура" (пример актуален для конфигурации "Управление торговлей" релиза 11):

"Справочник.Номенклатура.Форма.ФормаЭлемента"

Вот так это выглядит в режиме 1С:Предприятия:

Форма в режиме "1С:Предприятие"

нажав на кнопку команды "ОткрытьФормуПоИмени" в текущем окне будет открыта форма элемента номенклатуры:

Результат открытия формы внутри другого окна

Эта возможность повсеместно используется в типовых конфигурациях, например, при переходе от элемента справочника "Номенклатура" к списку присоединенных файлов по общей команде "Присоединенные файлы".

Открытие формы внутри другой формы в типовых конфигурациях от фирмы "1С"

Обработчик общей команды представлен на следующем листинге:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
 
 ПараметрыФормы = Новый Структура;
 ПараметрыФормы.Вставить("ВладелецФайла",  
                                ПараметрКоманды);
 ПараметрыФормы.Вставить("ТолькоПросмотр",
           ПараметрыВыполненияКоманды.Источник.ТолькоПросмотр);
 
 ОткрытьФорму("ОбщаяФорма.ПрисоединенныеФайлы",
              ПараметрыФормы,
              ПараметрыВыполненияКоманды.Источник,
              ПараметрыВыполненияКоманды.Уникальность,
              ПараметрыВыполненияКоманды.Окно); // !!!!
                     // Параметр окна открываемой формы
 
КонецПроцедуры 

Обратите внимание, тут в качестве окна для открываемой формы указывается окно формы-владельца.

Таким образом, открытие формы в текущем окне позволяет экономно использовать экранное пространство и создавать удобный интерфейс для пользователей.


comments powered by Disqus