Как сделать аналог подбора в управляемых формах

1. Anjut-ka4 18.09.17 20:59 Сейчас в теме
Здравствуйте! Подскажите пожалуйста, как в управляемых формах в документе, например, поступление, добавить кнопку, по которой открывалась форма подбора справочника номенклатур, и из нее пользователь делал выбор, а в табличную часть соответственно попадала выбранная номенклатура (и другие необходимые реквизиты).
я разобралась, как это реализовать, но только если пользователь выбирает одну номенклатуру.
&НаКлиенте
Процедура ПоКаталогу(Команда)
Форма = ПолучитьФорму("Справочник.ХарактеристикиНоменклатуры.ФормаВыбора", ,);
Результат = Форма.ОткрытьМодально();
...
КонецПроцедуры

в результате я получаю всего одну позицию и форма выбора закрывается. А как сделать чтоб по выбору пользователя в табличную часть заполнялась каждая выбранная им позиция?
(И не множественный выбор, а именно юзер выбирает номенклатуру, соответственно в табл. части сразу добавляется строка.)
По теме из базы знаний
Найденные решения
2. starik-2005 3039 18.09.17 21:31 Сейчас в теме
(1) Ну, во-первых, "Форма.ОткрытьМодально()" - это нехорошо. Сейчас в моде ковровые бомбардировки и управляемые баллистические ракеты.
Во-вторых, при выборе в форме, открытой для подбора/выбора, генерится событие, передающееся форме-владельцу.

В итоге что-то такое должно быть:
&НаКлиенте
Процедура Подбор(Команда)
	ОткрытьФорму(
		"Справочник.Справочник1.ФормаВыбора", 
		Новый Структура("ЗакрыватьПриВыборе, РежимВыбора", 
			Ложь, Истина), 
			ЭтаФорма
			, , , ,
			Новый ОписаниеОповещения(
				"ПриЗакрытииФормыПодбора", 
				ЭтаФорма, 
				"Подбор"), 
			РежимОткрытияОкнаФормы.БлокироватьОкноВладельца
	);

КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытииФормыПодбора(Рез, Доп) Экспорт 
	Сообщить("Ура, форма подбора закрыта!");
КонецПроцедуры

// вот эта процедура ниже - это не просто процедура, а обработчик событий, поэтому ее недостаточно просто скопипастить - ее нужно выбрать в соответсвующем событии формы.
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Объект.ТабличнаяЧасть1.Добавить().ФИО = ВыбранноеЗначение;
КонецПроцедуры
Показать
Maxanamoon; sermalp; evgaid; Prikum; +4 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3039 18.09.17 21:31 Сейчас в теме
(1) Ну, во-первых, "Форма.ОткрытьМодально()" - это нехорошо. Сейчас в моде ковровые бомбардировки и управляемые баллистические ракеты.
Во-вторых, при выборе в форме, открытой для подбора/выбора, генерится событие, передающееся форме-владельцу.

В итоге что-то такое должно быть:
&НаКлиенте
Процедура Подбор(Команда)
	ОткрытьФорму(
		"Справочник.Справочник1.ФормаВыбора", 
		Новый Структура("ЗакрыватьПриВыборе, РежимВыбора", 
			Ложь, Истина), 
			ЭтаФорма
			, , , ,
			Новый ОписаниеОповещения(
				"ПриЗакрытииФормыПодбора", 
				ЭтаФорма, 
				"Подбор"), 
			РежимОткрытияОкнаФормы.БлокироватьОкноВладельца
	);

КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытииФормыПодбора(Рез, Доп) Экспорт 
	Сообщить("Ура, форма подбора закрыта!");
КонецПроцедуры

// вот эта процедура ниже - это не просто процедура, а обработчик событий, поэтому ее недостаточно просто скопипастить - ее нужно выбрать в соответсвующем событии формы.
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Объект.ТабличнаяЧасть1.Добавить().ФИО = ВыбранноеЗначение;
КонецПроцедуры
Показать
Maxanamoon; sermalp; evgaid; Prikum; +4 Ответить
6. Anjut-ka4 18.09.17 22:39 Сейчас в теме
3. DarkUser 18.09.17 22:04 Сейчас в теме
Вообще, для пользователей гораздо удобнее когда форма подбора содержит две таблицы, а не одну. Некоторых вводит в заблуждение - почему они щелкнули по выбираемому элементу а ничего не произошло. То, что выбранный элемент добавился в форму из которой они открыли подбор - не очевидно.
4. Anjut-ka4 18.09.17 22:21 Сейчас в теме
5. Prikum 3 18.09.17 22:24 Сейчас в теме
(4)посмотрите как в типовых это реализовано, там нет ничего сложного
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот