Открыть форму в управляемом приложении 1С, обработать результат после закрытия
Управляемые формы;

Рассмотрим несколько основных примеров открытия управляемых форм для разных случаев.

1)  Необходимо открыть форму нового объекта (документа, справочника или др.) на примере документа Реализация товаров и услуг:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
СтруктураПараметров = Новый Структура;
ФормаДокумента = ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта",СтруктураПараметров,ЭтаФорма);
// По необходимости можно сразу же заполнить нужные реквизиты объекта
ФормаДокумента.Объект.Комментарий = "Документ создан без основания";
КонецПроцедуры

    В данном примере создается новый объект и заполняется по умолчанию без основания, как прописано в обработке заполнения в модуле объекта. В СтруктураПараметров по надобности можно передать необходимые параметры, которые можно обработать в открываемой форме в обработчике ПриСозданииНаСервере.
    
2)  Необходимо открыть форму нового объекта (документа, справочника или др.) на примере документа Реализация товаров и услуг, и произвести заполнение на основании Заказа клиента:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
// ЗаказКлиента - это ссылка на конкретный документ
СтруктураПараметров = Новый Структура("Основание", ЗаказКлиента);
ФормаДокумента = ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта",СтруктураПараметров,ЭтаФорма);
// По необходимости можно сразу же заполнить нужные реквизиты объекта
ФормаДокумента.Объект.Комментарий = "Документ создан на основании документа Заказ клиента";
КонецПроцедуры

    В данном примере создается новый объект и заполняется на оснвании документа Заказ клиента, как прописано в обработке заполнения в модуле объекта. В СтруктураПараметров по надобности можно передать необходимые параметры, которые можно обработать в открываемой форме в обработчике ПриСозданииНаСервере.
    
3)  Необходимо открыть форму уже созданного объекта (документа, справочника или др.) на примере документа Заказ клиента:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
// ЗаказКлиента - это ссылка на конкретный документ
СтруктураПараметров = Новый Структура("Ключ", ЗаказКлиента);
ФормаДокумента = ОткрытьФорму("Документ.ЗаказКлиента.ФормаОбъекта",СтруктураПараметров,ЭтаФорма);
КонецПроцедуры

    В данном примере, по сути, открывается форма уже записанного документа в базе данных.
    
4)  Необходимо открыть форму выбора Заказов клиента, и произвести программную обработку выбранного документа.

    Первый способ - воспользуемся стандартным обработчиком ОбработкаВыбора на форме, из которой производим открытие формы выбора Заказов клиента.
    Здесь важно обязательно в методе ОткрытьФорму передать третьим параметром значение ЭтаФорма, который указывает, что владельцем для открываемой формы выбора является данная форма, из которой мы производим открытие:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
ПараметрыФормы = Новый Структура;
ФормаВыбора = ОткрытьФорму("Документ.ЗаказКлиента.ФормаВыбора",ПараметрыФормы,ЭтаФорма);
КонецПроцедуры
    

     В обработчике ОбработкаВыбора обрабатываем полученный результат:

    &НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
// Получаем выбранный Заказ клиента и производим с ним необходимые действия
ВыбранныйЗаказКлиента = ВыбранноеЗначение;
КонецПроцедуры

    Второй способ - воспользуемся методом оповещения:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
ПараметрыОповещения = Новый Структура;    
ПараметрыОповещения.Вставить("ПараметрДляПримера",100);
// Данный параметр передали для примера
Оповещение = Новый ОписаниеОповещения("ВыборЗаказаКлиентаЗавершение",ЭтотОбъект,ПараметрыОповещения);
ПараметрыФормы = Новый Структура;
ФормаДокумента = ОткрытьФорму("Документ.ЗаказКлиента.ФормаВыбора",ПараметрыФормы,,,,,Оповещение);
КонецПроцедуры
  
   
&НаКлиенте
Процедура ВыборЗаказаКлиентаЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение <> Неопределено Тогда
// Получаем выбранный Заказ клиента и производим с ним необходимые действия
ВыбранныйЗаказКлиента = ВыбранноеЗначение;
// в структуре ДополнительныеПараметры будет находится свойство "ПараметрДляПримера" со значением 100, которое было передано в ПараметрыОповещения
КонецЕсли;    
КонецПроцедуры

5) Необходимо просто открыть форму обработки и заполнить ее какой-либо реквизит:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
СтруктураПараметров = Новый Структура;
ФормаОбработки = ОткрытьФорму("Обработка.ПечатьЦенника.Форма",СтруктураПараметров,ЭтаФорма);
ФормаОбработки.Объект.Штрихкод = "123456789";
КонецПроцедуры
        

6) Необходимо открыть любую произвольную форму и обработать результат после ее закрытия. Например, в Заказе клиента мы хотим открыть специальную форму, на которой нужно выбрать сборщика и при утверждении закрыть эту форму и вернуть выбранного сборщика. Здесь также воспользуемся методом оповещения:

    &НаКлиенте
Процедура КомандаОткрытьФорму(Команда)
ПараметрыОповещения = Новый Структура;
Оповещение = Новый ОписаниеОповещения("УстановкаСборщикаЗавершение",ЭтотОбъект,ПараметрыОповещения);
ПараметрыФормы = Новый Структура;
ФормаДокумента = ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаДляУстановкиСборщика",ПараметрыФормы,,,,,Оповещение);
КонецПроцедуры
    

    В открываемой форме для указания сборщика ФормаДляУстановкиСборщика будет находиться поле для выбора сборщика и, например, кнопка "Выбрать сборщика" с кодом:

    &НаКлиенте
Процедура ВыбратьСборщика(Команда)
Закрыть(ВыбранныйСборщик);
КонецПроцедуры
 

    И на форме Заказа клиента, откуда открывали форму для выбора сборщика, ловим оповещение:

    &НаКлиенте
Процедура УстановкаСборщикаЗавершение(ВыбранноеЗначение, ПараметрыОповещения) Экспорт
Если ВыбранноеЗначение <> Неопределено Тогда
// Получаем выбранного сборщика и производим с ним необходимые действия
ВыбранныйСборщик = ВыбранноеЗначение;
КонецЕсли;    
КонецПроцедуры