Как открыть открыть форму выбора у реквизита с составным типом данных

Источник с кодом здесь


&НаКлиенте
Процедура ТаблицаДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)	
	
	ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
	
	Если ТекущиеДанные.Документ = Неопределено Тогда
		Возврат
	КонецЕсли;
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)	
	
КонецПроцедуры

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

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

&НаСервереБезКонтекста
Функция ПолучитьИмяФормыВыбораПоСсылке(Ссылка)
	Возврат Ссылка.Метаданные().ПолноеИмя() + ".ФормаВыбора";
КонецФункции