Выбор из справочника с отбором в управляемой форме

Новая тема
"Требуется при выборе реквизита открыть ФормуВыбора справочника с отбором по списку кодов.<br> <br>****************************************<br> &НаКлиенте<br><br>Процедура РеквизитНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)<br><br> СтандартнаяОбработка = Ложь;<br> УстановитьОтбор(Элемент.Имя);<br><br>КонецПроцедуры<br>*****************************************<br>&НаКлиенте<br> <br>Процедура УстановитьОтбор(ИмяЭлемента)<br> <br>СписокОтбора = ПолучитьСписокОтбора(ИмяЭлемента); //получили список нужных кодов для отбора<br> <br>  Форма = ПолучитьФорму("Справочник.ИмяСправочника.ФормаВыбора",,);<br><br> ЭлементОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));<br> ЭлементОтбора.ЛевоеЗначение =  Новый ПолеКомпоновкиДанных("Код");<br> ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;<br> ЭлементОтбора.Использование = Истина;<br> ЭлементОтбора.ПравоеЗначение = СписокОтбора; <br>  <br> Форма.Открыть();<br> <br>КонецПроцедуры<br>**************************************************<br> <br>Форма открывается с необходимым отбором, но при выборе значения из этой формы в поле реквизита оно не встает.<br> <br>Нашла на форумах что в модуль формы выбора справочника нужно добавить<br> <br>*************************************************<br>  &НаКлиенте<br><br> Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)<br><br>  ОповеститьОВыборе(ВыбранноеЗначение);<br><br>КонецПроцедуры<br>*************************************************<br> <br>Не помогло. При отладке туда даже не заходит... При двойном клике на выбранном элементе справочника форма выбора закрывается но поле остается пустым."
"> Не помогло. При отладке туда даже не заходит...<br>Потому как сама отключила<br>СтандартнаяОбработка = Ложь;"
Ну да, иначе открывалось две формы выбора, одна с отбором и одна без
Конечно, ведь ты потом в процедуре установки выбора сама открываешь форму.
>При отладке туда даже не заходит...<br>Потому что "Процедура ОбработкаВыбора" надо писать на той же форме, где РеквизитНачалоВыбора. Как событие этого реквизита.<br>И в ней написать что-то типа:<br>Реквизит= ВыбранноеЗначение<br> <br>А "ОповеститьОВыборе(ВыбранноеЗначение)" надо написать в обработке события "Выбор" и "ВыборЗначения" в форме выбора, как события элемента "Список".
"Во первых Вы не передали владельца формы при вызове "ПолучитьФорму" поэтому и не возвращается выбранное значение<br>Во вторых, 1С рекомендует использовать не "ПолучитьФорму" а "ОткрытьФорму" и туда передавайте параметры открытия формы, т.е. у Вас должно быть что-то типа:<br> <br>&НаКлиенте<br>Процедура РеквизитНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)<br>СтандартнаяОбработка = Ложь;<br>СписокОтбора = ПолучитьСписокОтбора(Элемент.Имя); //получили список нужных кодов для отбора<br>ПараметрыФормы = Новый Структура ("Отбор", СписокОтбора );<br>ОткрытьФорму("Справочник.ИмяСправочника.ФормаВыбора",ПараметрыФормы ,Элемент);  <br>КонецПроцедуры"
Если делаю через ОткрытьФорму, то форма открывается без отбора. Отбор должен быть Код в списке СписокОтбора . Через ОткрытьФорму я так понимаю можно только установить Код равно СписокОтбора?<br>В процедуру ОбработкаВыбора не приходит совсем, то есть я понимаю что Форма справочника значение вобще не передает.
какой у Вас код в процедуре ПолучитьСписокОтбора?
"Skromnyi, спасибо огромное, все получилось!<br> <br> ПараметрыФормы = Новый Структура ("Отбор", СписокОтбора );<br>Форма = ПолучитьФорму("Справочник.ИмяСправочника.ФормаВыбора",ПараметрыФормы,);<br> ЭлементОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));<br> ЭлементОтбора.ЛевоеЗначение =  Новый ПолеКомпоновкиДанных("Код");<br> ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;<br> ЭлементОтбора.Использование = Истина;<br> ЭлементОтбора.ПравоеЗначение = СписокОтбора;<br>//изменения, вот это вставила и все заработало<br> Форма.Параметры.РежимВыбора = Истина;<br> Форма.ВладелецФормы = ЭтаФорма.Элементы.ИмяРеквизита;<br>//конец изменений<br> Форма.Открыть(); <br> <br>, а с ОткрытьФорму на форумах пишут , что можно сделать отбор только с видом Равно"
"нет, не только равно. Если Вы передаете массив в качестве параметра, то автоматом будет "ВСписке". <br>В предыдущем посте я немного ошибся, надо поменять строки:<br> <br><pre>СписокОтбора = ПолучитьСписокОтбора(Элемент.Имя); //получили список нужных кодов для отбора<br>УсловияОтбора = Новый Структура ("Код", СписокОтбора);<br>ПараметрыФормы = Новый Структура ("Отбор", УсловияОтбора ); </pre><br><br><br><pre> </pre>"

Читают тему

(гостей: 1)

Быстрый переход