День добрый. Как выбрать элемент формы с отбором по значению просто и понятно:

```1c
    СтандартнаяОбработка = Ложь;
    мПараметры = Новый Структура();
    мПараметры.Вставить("РежимВыбора", Истина);
    мПараметры.Вставить("Отбор", Новый Структура("Ревизит1", Ложь));
    ФормаВыбора = ПолучитьФорму("Справочник.Номенклатура.ФормаВыбора", мПараметры, Элемент);
    ФормаВыбора.Открыть();
```

вопрос, какой такой же финт провернуть со списком значений? УФ, 8.3.17
---
Поле номенклатуры должно иметь такие настройки
Код для поля на форме примерно такой
```1c
    &НаКлиенте
    Процедура НоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    мПараметры = Новый Структура();
    мПараметры.Вставить("РежимВыбора", Истина);

    // отбор, чтобы не отображалось в форме списка выбора, если Ревизит1 <> Ложь
    НастройкиКД = Новый НастройкиКомпоновкиДанных;
    ОтборКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Реквизит1");
    ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборКД.ПравоеЗначение = ложь;
    ОтборКД.Использование = Истина;

    ОтборКД.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    мПараметры.Вставить("ФиксированныеНастройки", НастройкиКД);

    ОписаниеВыбора = Новый ОписаниеОповещения("ОбработатьВыборНоменклатуры", ЭтаФорма);

    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", мПараметры,,,,, ОписаниеВыбора,
    РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

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

    &НаКлиенте
    Процедура ОбработатьВыборНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт

    Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда
    Возврат;
    КонецЕсли;

    Номенклатура = РезультатЗакрытия;

    КонецПроцедуры
```
 Для поля в таблице
```1c
    &НаКлиенте
    Процедура ТабличнаяЧасть1НоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    мПараметры = Новый Структура();
    мПараметры.Вставить("РежимВыбора", Истина);

    // отбор, чтобы не отображалось в форме списка выбора, если Ревизит1 <> Ложь
    НастройкиКД = Новый НастройкиКомпоновкиДанных;
    ОтборКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Реквизит1");
    ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборКД.ПравоеЗначение = ложь;
    ОтборКД.Использование = Истина;

    ОтборКД.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    мПараметры.Вставить("ФиксированныеНастройки", НастройкиКД);

    ОписаниеВыбора = Новый ОписаниеОповещения("ТабличнаяЧасть1ОбработатьВыборНоменклатуры", ЭтаФорма);

    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", мПараметры,,,,, ОписаниеВыбора,
    РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    КонецПроцедуры

    &НаКлиенте
    Процедура ТабличнаяЧасть1ОбработатьВыборНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт

    Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда
    Возврат;
    КонецЕсли;

    Элементы.ТабличнаяЧасть1.ТекущиеДанные.Номенклатура = РезультатЗакрытия;

    КонецПроцедуры
```
---
СтандартнаяОбработка = Ложь;

&НаКлиенте
Процедура ОбработатьВыборНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт

    Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда
        Возврат;
    КонецЕсли;

    Номенклатура = РезультатЗакрытия;

КонецПроцедуры
Немного не то, но навело на верную мысль. Спасибо!
---
Здравствуйте.

Можно в цикле обойти и найти нужное значение

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

```1c
    &НаКлиенте
    Процедура Команда1(Команда)
    ПараметрыВыбора = Новый Структура;
    ПараметрыВыбора.Вставить("РежимВыбора",Истина);
    ПараметрыВыбора.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма);

    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПараметрыВыбора,
    ЭтаФорма, , , , ОбработкаВыбора);
    КонецПроцедуры

    &НаКлиенте
    Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

    Если Значение = Неопределено Тогда
    Возврат;
    КонецЕсли;

    Для Каждого Стр Из Значение Цикл
    Сообщить(Стр);
    КонецЦикла;

    КонецПроцедуры
```
---
Множественный выбор дает выбор нескольких строк через shift или ctrl.
А если нужно подбирать двойным кликом - нужно ЗакрыватьПриВыборе установить в ложь, кажись.
Но это не точно! =)
---
Да, не совсем корректно объяснил. Есть список значений на форме, который я заполняю через три точки, потом открывается платформенный диалог, в котором есть кнопка добавить (выше двумя постами картинка). При ее нажатии открывается справочник со всем элементами, я же хочу этот справочник ограничить неким нужным мне отбором. Как это сделать, понять не могу.
---
Если я правильно понял...
 то у меня сделано так:

&НаКлиенте
Процедура ВыбратьРукав(Ключ, ШиринаРукова, ДопускШирины, Плотность, ДопускВеса, Количество, ТекстСообщения) Экспорт

 ПараметрыОтбора = ПолучитьСписокРукововДляВыбораСервер(ШиринаРукова,ДопускШирины,Плотность,ДопускВеса);

 ПараметрыФормы = Новый Структура("РежимВыбора, ЗакрыватьПриВыборе, Отбор, Заголовок", Истина, Истина, ПараметрыОтбора);

 ОбработкаВыбора = Новый ОписаниеОповещения("ВыбратьЭлементСправочникаКонец", ЭтаФорма,
        Новый Структура("Ключ, Количество, НомерФормулы, ШиринаРукова", Ключ, Количество, 1, ШиринаРукова));

   ФормаВыбора =ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы,
        ЭтаФорма, , , , ОбработкаВыбора);

 ФормаВыбора.Заголовок = ТекстСообщения;

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

&НаСервере
Функция ПолучитьСписокРукововДляВыбораСервер(ШиринаРукова,ДопускШирины,ВесПМРукова,ДопускВеса)

 Запрос = Новый Запрос;
 Запрос.Текст =
  "ВЫБРАТЬ
  | Номенклатура.Ссылка КАК Ссылка
  |ИЗ
  | Справочник.Номенклатура.Параметры КАК НоменклатураПараметры
  | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
  | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Параметры КАК НоменклатураПараметры1
  | ПО НоменклатураПараметры1.Ссылка = Номенклатура.Ссылка
  | ПО НоменклатураПараметры.Ссылка = Номенклатура.Ссылка
  |ГДЕ
  | НоменклатураПараметры.Параметр.ДляФормул = &ТипЩиринаИзделия
  | И НоменклатураПараметры1.Параметр.ДляФормул = &ТипПлотность
  | И НоменклатураПараметры.ЗначениеПараметра >= &ЗначениеПараметраШириныОт
  | И НоменклатураПараметры.ЗначениеПараметра <= &ЗначениеПараметраШириныДо
  | И НоменклатураПараметры1.ЗначениеПараметра >= &ЗначениеПараметраВесПгмОт
  | И НоменклатураПараметры1.ЗначениеПараметра <= &ЗначениеПараметраВесПгмДо";

 Запрос.УстановитьПараметр("ЗначениеПараметраВесПгмДо", ВесПМРукова+ВесПМРукова*(ДопускВеса/100));
 Запрос.УстановитьПараметр("ЗначениеПараметраВесПгмОт", ВесПМРукова-ВесПМРукова*(ДопускВеса/100));
 Запрос.УстановитьПараметр("ЗначениеПараметраШириныДо", ШиринаРукова+ДопускШирины);
 Запрос.УстановитьПараметр("ЗначениеПараметраШириныОт", ШиринаРукова-ДопускШирины);
 Запрос.УстановитьПараметр("ТипПлотность", "П");
 Запрос.УстановитьПараметр("ТипЩиринаИзделия", "ШИ");

 ТЗ = Запрос.Выполнить().Выгрузить();
 Ск = Новый Структура;
 Ск.Вставить("Ссылка", ТЗ.ВыгрузитьКолонку("Ссылка"));
 Возврат Ск;

КонецФункции

&НаСервере
Процедура ВыбратьЭлементСправочникаКонец(Значение, ДопПараметры)

 Если Значение = Неопределено Тогда
  ТекстСообщения = "Рассчет не верен!!!";
  Сообщить(ТекстСообщения);
        Возврат;
 Иначе
  Если Значение.ВидНоменклатуры = Справочники.ВидНоменклатуры.Рукава Тогда
   РезатьПополам = Цел(ПолучитьЗначениеПоТипу(Значение,"ШИ")/ДопПараметры.ШиринаРукова);
   ВесПМ = ПолучитьЗначениеПоТипу(Значение,"ВПгм")/100/РезатьПополам;
  Иначе
      ВесПМ = 1;
  КонецЕсли;
    КонецЕсли;

 НоваяСтрока = Объект.Материалы.Добавить();
 НоваяСтрока.Ключ = ДопПараметры.Ключ;
 НоваяСтрока.Материал = Значение;
 НоваяСтрока.Количество = ВесПМ*ДопПараметры.Количество;
 НоваяСтрока.Стоимость = ВесПМ*ДопПараметры.Количество*ПолучитьСтоимость(Объект.Дата, Значение);
 Сообщить("Вес = "+ВесПМ);
 Сообщить("Стоимость = "+ПолучитьСтоимость(Объект.Дата, Значение));
 Сообщить(ДопПараметры.Количество);

КонецПроцедуры
---
Поле номенклатуры должно иметь такие настройки
Код для поля на форме примерно такой
```1c
    &НаКлиенте
    Процедура НоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    мПараметры = Новый Структура();
    мПараметры.Вставить("РежимВыбора", Истина);

    // отбор, чтобы не отображалось в форме списка выбора, если Ревизит1 <> Ложь
    НастройкиКД = Новый НастройкиКомпоновкиДанных;
    ОтборКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Реквизит1");
    ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборКД.ПравоеЗначение = ложь;
    ОтборКД.Использование = Истина;

    ОтборКД.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    мПараметры.Вставить("ФиксированныеНастройки", НастройкиКД);

    ОписаниеВыбора = Новый ОписаниеОповещения("ОбработатьВыборНоменклатуры", ЭтаФорма);

    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", мПараметры,,,,, ОписаниеВыбора,
    РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

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

    &НаКлиенте
    Процедура ОбработатьВыборНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт

    Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда
    Возврат;
    КонецЕсли;

    Номенклатура = РезультатЗакрытия;

    КонецПроцедуры
```
 Для поля в таблице
```1c
    &НаКлиенте
    Процедура ТабличнаяЧасть1НоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    мПараметры = Новый Структура();
    мПараметры.Вставить("РежимВыбора", Истина);

    // отбор, чтобы не отображалось в форме списка выбора, если Ревизит1 <> Ложь
    НастройкиКД = Новый НастройкиКомпоновкиДанных;
    ОтборКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Реквизит1");
    ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборКД.ПравоеЗначение = ложь;
    ОтборКД.Использование = Истина;

    ОтборКД.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    мПараметры.Вставить("ФиксированныеНастройки", НастройкиКД);

    ОписаниеВыбора = Новый ОписаниеОповещения("ТабличнаяЧасть1ОбработатьВыборНоменклатуры", ЭтаФорма);

    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", мПараметры,,,,, ОписаниеВыбора,
    РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    КонецПроцедуры

    &НаКлиенте
    Процедура ТабличнаяЧасть1ОбработатьВыборНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт

    Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда
    Возврат;
    КонецЕсли;

    Элементы.ТабличнаяЧасть1.ТекущиеДанные.Номенклатура = РезультатЗакрытия;

    КонецПроцедуры
```
---
СтандартнаяОбработка = Ложь;

&НаКлиенте
Процедура ОбработатьВыборНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт

    Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда
        Возврат;
    КонецЕсли;

    Номенклатура = РезультатЗакрытия;

КонецПроцедуры
Немного не то, но навело на верную мысль. Спасибо!