Форма выбора

1. _Vanda_ 29.09.16 16:35 Сейчас в теме
Всем Добрый день!
Есть справочник Значения Свойств Объектов, в нем содержатся значения и их свойства. На этот справочник ссылается поле ввода "дивизион" в справочнике Контрагенты.Делаю отбор, чтоб выводились только те значения, у которых свойство="Дивизион".Вся загвоздка в том, что у этого справочника нет формы выбора...есть только формы списка,группы и элемента. Так вот, когда я ссылаюсь на Форму списка, он не дает мне выбрать значение,но отбор делает. Но, если убрать нижеприведенные процедуры и функции, при нажатии "Выбрать из списка" -"Показать все" он открывает форму выбора значений свойств...второго похожего справочника нет.Вопрос где он берет эту форму выбора?
&НаСервере
Функция ПолучитьДивизион()
	Запрос= Новый Запрос;
	Запрос.Текст="ВЫБРАТЬ
	|	ЗначенияСвойствОбъектов.Наименование
	|ИЗ
	|	Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Владелец = &Владелец";
	Владелец=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дивизион");
	Запрос.УстановитьПараметр("Владелец",Владелец);
	СписокДивизионов= Новый СписокЗначений;
	Результат = Запрос.Выполнить().Выбрать();
	Пока Результат.Следующий() Цикл
 	 СписокДивизионов.Добавить(Результат.Наименование);
	КонецЦикла; 
	Возврат СписокДивизионов;
КонецФункции
	
&НаКлиенте
Процедура арсДивизионНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ЗначениеОтбора= Новый Структура("Наименование", ПолучитьДивизион());
 	ПараметрыВыбораФ= Новый Структура("Отбор", ЗначениеОтбора);
	ОткрытьФорму("Справочник.ЗначенияСвойствОбъектов.Форма.ФормаСписка", ПараметрыВыбораФ,элемент);
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. olegmedvedev 66 29.09.16 16:54 Сейчас в теме
там при открытии формы списка должен отрабатывать такой код и делать доступным на форме списке возможности выбора:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

...

	// Элементы.Список - основной реквизит с динамическим списком
	Элементы.Список.РежимВыбора = Параметры.РежимВыбора;
	Если Параметры.МножественныйВыбор <> Неопределено Тогда
		Элементы.Список.МножественныйВыбор = Параметры.МножественныйВыбор;
	КонецЕсли;

...

КонецПроцедуры
Показать

http://infostart.ru/public/549160/

или посмотрите как вызывается ваша форма в типовой конфигурации и сделайте по аналогии
3. _Vanda_ 30.09.16 11:55 Сейчас в теме
(2) olgerd666,
Не отрабатывает ОбработкаВыбора.Ставлю точку остановки - не заходит вообще.В чем может быть дело?
&НаКлиенте
Процедура арсДивизионНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ЗначениеОтбора= Новый Структура("Наименование", ПолучитьДивизион());
 	ПараметрыВыбораФ= Новый Структура("Отбор,РежимВыбора", ЗначениеОтбора,истина);
	ФормаСписка=ПолучитьФорму("Справочник.ЗначенияСвойствОбъектов.Форма.ФормаСписка",ПараметрыВыбораФ);
	ОткрытьФорму(ФормаСписка,,элемент);
КонецПроцедуры

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

Показать
4. mazechild 30.09.16 12:51 Сейчас в теме
В других местах по точке останавливается?
5. _Vanda_ 30.09.16 13:10 Сейчас в теме
(4) mazechild, да,останавливается.
6. _Vanda_ 30.09.16 13:50 Сейчас в теме
Добавила "элемент" в
	ФормаСписка=ПолучитьФорму("Справочник.ЗначенияСвойствОбъектов.Форма.ФормаСписка",ПараметрыВыбораФ,Элемент);

теперь заходит, но выдает ошибку, что поле объекта недоступно для записи.
&НаКлиенте
Процедура арсДивизионОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Элементы.арсДивизион =  ВыбранноеЗначение;    
КонецПроцедуры
7. _Vanda_ 30.09.16 14:12 Сейчас в теме
Элементы.арсДивизион в табло дает значение и тип "поле формы", "Элемент" тоже самое.
Обратилась к реквизиту,заработало.
Процедура арсДивизионОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Объект.арсДивизион =  ВыбранноеЗначение;	
КонецПроцедуры
8. AlekseySipaev 30.09.16 14:40 Сейчас в теме
а если так:
Процедура арсДивизионОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Элемент.Значение =  ВыбранноеЗначение;    
КонецПроцедуры
9. _Vanda_ 01.10.16 14:02 Сейчас в теме
(8) cassper, у Элемента нет "Значение"
10. AlekseySipaev 03.10.16 09:02 Сейчас в теме
(9) Ольга Валитова, достаточно сделать так:
&НаКлиенте
Процедура ВыбранноеЗначениеСвойстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ПараметрыВыбора = Новый Структура;
	ПараметрыВыбора.Вставить("РежимВыбора", Истина);
	Отбор = Новый Структура;
	Отбор.Вставить("Владелец", Свойство);
	ПараметрыВыбора.Вставить("Отбор", Отбор);
	
	ОткрытьФорму("Справочник.ЗначенияСвойствОбъектов.ФормаСписка", ПараметрыВыбора, Элемент, ЭтаФорма);
	
КонецПроцедуры
Показать


Тестировалось на УТ11.
Единственное, что у меня иначе - на форме есть реквизит "Свойство" (ПВХ ДОполнительныеРеквизитыИСведения). Так проще, чтобы не искать само свойство по наименованию или какому-либо другому реквизиту.

А далее все просто. Задаем параметры открытия для формы выбора (списка) справочника "ЗначенияСвойствОбъектов" - это РЕжимВыбора и Отбор.Владелец, чтобы можно было точно отсеять ненужные значения других свойств и отобразить только те, что необходимы.

Далее, т.к. в качестве владельца открытия формы я указал "Элемент", то событие обработки выбора указывать не нужно - значение само подставится в поле формы (если конечно у вас не спец.обработка выбранного значения)
_Vanda_; olegmedvedev; +2 Ответить
Оставьте свое сообщение

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