Здравствуйте.
Подскажите как провести отбор в выпадающем списке (быстрый выбор), на форме элемента справочника в зависимости от значения реквизита (булево) в (этой же) форме элемента справочника.
8.3
Обычная форма.
Спасибо.
---
Событие НачалоВыбора используй.

Простой пример:

```1c
    СтандартнаяОбработка = Ложь;

    Элемент.СписокВыбора.Очистить();

    СвойМассивЗначений = СформироватьСвойМассивЗначений();

    Элемент.СписокВыбора.ЗагрузитьЗначения(СвойМассивЗначений);
```
---
Если кому-то нужно, вот готовое решение:

```1c
    Процедура ВидТовараНачалоВыбора(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ЭлементыФормы.ВидТовара.СписокВыбора.Очистить();

    Если СправочникОбъект.Услуга = истина Тогда; // если отмечена галочка реквизита "Услуга"

    СписокВыбора = Новый СписокЗначений;

    СписокВыбора.Добавить(Справочники.ВидыТоваров.Ремонт); // или (если не использовать предопределееные элементы справочника) Справочники.ВидыТоваров.НайтиПоНаименованию("Ремонт",Истина);
    СписокВыбора.Добавить(Справочники.ВидыТоваров.Установка);

    ВыбранноеЗначение = ВыбратьИзСписка(СписокВыбора, ЭлементыФормы.ВидТовара);

    Если ВыбранноеЗначение <> Неопределено Тогда
    ВидТовара = ВыбранноеЗначение.Значение;
    КонецЕсли;

    Иначе // если неотмечена галочка

    СписокВыбора = Новый СписокЗначений;

    СписокВыбора.Добавить(Справочники.ВидыТоваров.ЗапасныеЧасти);
    СписокВыбора.Добавить(Справочники.ВидыТоваров.БытоваяТехника);

    ВыбранноеЗначение = ВыбратьИзСписка(СписокВыбора, ЭлементыФормы.ВидТовара);

    Если ВыбранноеЗначение <> Неопределено Тогда
    ВидТовара = ВыбранноеЗначение.Значение;
    КонецЕсли;

    КонецЕсли;
    КонецПроцедуры
```
---
```1c
    ЭлементыФормы.ВидТовара.СписокВыбора.Очистить()
```
---
Событие НачалоВыбора используй.

Простой пример:

```1c
    СтандартнаяОбработка = Ложь;

    Элемент.СписокВыбора.Очистить();

    СвойМассивЗначений = СформироватьСвойМассивЗначений();

    Элемент.СписокВыбора.ЗагрузитьЗначения(СвойМассивЗначений);
```
---
Спасибо.
Подскажите как прописать по какому критерию проводить отбор?
---
какому критерию проводить отбор?

```1c
    Функция СформироватьСвойМассивЗначений()

    //Здесь пиши запрос с отбором по любому критерию и выгружай результат в массив

    КонецФункции
```
---
Что то я совсем запутался.

То что, Вы мне посоветовали работает, вот, что получилось:

```1c
    Процедура ВидТовараНачалоВыбора(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ЭлементыФормы.СписокВыбора.Очистить();

    Если СправочникОбъект.Услуга = истина Тогда; // если отмечена галочка

    СвойМассивЗначений = СформироватьСвойМассивЗначений();

    Элемент.СписокВыбора.ЗагрузитьЗначения(СвойМассивЗначений);

    Иначе // если неотмечена галочка

    СвойМассивЗначений = СформироватьСвойМассивЗначений2();

    Элемент.СписокВыбора.ЗагрузитьЗначения(СвойМассивЗначений);

    КонецЕсли;
    КонецПроцедуры

    Функция СформироватьСвойМассивЗначений ()

    А = Новый Массив();
    А.Добавить(Справочники.ВидыТоваров.Ремонт);
    А.Добавить(Справочники.ВидыТоваров.Установка);

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

    Функция СформироватьСвойМассивЗначений2()

    Б = Новый Массив();
    Б.Добавить(Справочники.ВидыТоваров.БытоваяТехника);
    Б.Добавить(Справочники.ВидыТоваров.ЗапасныеЧасти);

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

Список не большой, поэтому добавил предопределенные значения справочника "вид товаров" и поименно их добавил в массив.
Но, при нажатии на поле "вид товара" выдается ошибка:

{Справочник.Товары.Форма.ФормаЭлемента.Форма(7)}: Поле объекта не обнаружено (СписокВыбора)
 ЭлементыФормы.СписокВыбора.Очистить();
---
Сделал еще проще:

```1c
    Процедура ВидТовараНачалоВыбора(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ЭлементыФормы.СписокВыбора.Очистить();

    Если СправочникОбъект.Услуга = истина Тогда; // если отмечена галочка

    ЭлементыФормы.ВидТовара.СписокВыбора.Добавить(Справочники.ВидыТоваров.Ремонт);
    ЭлементыФормы.ВидТовара.СписокВыбора.Добавить(Справочники.ВидыТоваров.Установка);

    Иначе // если неотмечена галочка

    ЭлементыФормы.ВидТовара.СписокВыбора.Добавить(Справочники.ВидыТоваров.БытоваяТехника);
    ЭлементыФормы.ВидТовара.СписокВыбора.Добавить(Справочники.ВидыТоваров.ЗапасныеЧасти);

    КонецЕсли;
    КонецПроцедуры
```

Но по прежнему, ни чего не понимаю.
Ошибка та же.
Видимо проблема со списком.
---
```1c
    ЭлементыФормы.ВидТовара.СписокВыбора.Очистить()
```
---
Спасибо.
Теперь ошибки нет.
Но и списка тоже(.
Буду изучать как сделать правильно.
У Вас случайно нет ссылки на простой (для новичка) "рукописный" список выбора?
---
Да, можно и так.
---
Как думаете такой пример, списка сработает в форме элемента?
https://its.1c.ru/db/metod8dev/content/2454/hdoc
---
В общем, я запутался. У тебя форма элемента справочника и тебе надо в зависимости от реквизита этого элемента ограничивать список выбора? Тогда связи параметров выбора. Показывай, что ты там сначала сделал и не получилось, скриншот давай (нажимай на три точки в связяхпараметровыбора и показывай что там).
---
Все получилось, спасибо большое написал рабочий кусочек.
Выложу (кусочек) позже.

P.s. Возможно я пошел сложным путем (писать руками), но научился новому.
---
СвязиПараметровВыбора устроят?
---
Что то не выходит.
Что делаю:
Выбираю в связях параметра выбора реквизита (который является ссылкой на другой справочник), реквизит (булево), который присутствует в обоих справочниках (и который по задумке и должен фильтровать что показывать). То есть стоит галочка на форме элемента справочника и в этой же форме в выпадающем списке предлагаются одни варианты, не стоит галочка - другие.
Но что то делаю не так.
---
а, тогда я не то предложил)
---
мой вариант https://infostart.ru/public/893611/
---
Как вариант можно так написать в процедуре НачалоВыбораИзСписка

```1c
    Запрос = Новый Запрос;
    Если СтоитГалочка Тогда
    Запрос.Текст = "Выбрать Спр.Реквизит Из Справочники.Справочник КАК Спр ГДЕ Спр.РеквизитСтоитГалочка = Истина";
    Иначе
    Запрос.Текст = "Выбрать Спр.Реквизит Из Справочники.Справочник КАК Спр ГДЕ Спр.РеквизитСтоитГалочка = Ложь";
    КонецЕсли;
    Массив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Реквизит");

    Элемент.СписокВыбора.Очистить();
    Элемент.СписокВыбора.ЗагрузитьЗначения(Массив);
```
---
Если кому-то нужно, вот готовое решение:

```1c
    Процедура ВидТовараНачалоВыбора(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ЭлементыФормы.ВидТовара.СписокВыбора.Очистить();

    Если СправочникОбъект.Услуга = истина Тогда; // если отмечена галочка реквизита "Услуга"

    СписокВыбора = Новый СписокЗначений;

    СписокВыбора.Добавить(Справочники.ВидыТоваров.Ремонт); // или (если не использовать предопределееные элементы справочника) Справочники.ВидыТоваров.НайтиПоНаименованию("Ремонт",Истина);
    СписокВыбора.Добавить(Справочники.ВидыТоваров.Установка);

    ВыбранноеЗначение = ВыбратьИзСписка(СписокВыбора, ЭлементыФормы.ВидТовара);

    Если ВыбранноеЗначение <> Неопределено Тогда
    ВидТовара = ВыбранноеЗначение.Значение;
    КонецЕсли;

    Иначе // если неотмечена галочка

    СписокВыбора = Новый СписокЗначений;

    СписокВыбора.Добавить(Справочники.ВидыТоваров.ЗапасныеЧасти);
    СписокВыбора.Добавить(Справочники.ВидыТоваров.БытоваяТехника);

    ВыбранноеЗначение = ВыбратьИзСписка(СписокВыбора, ЭлементыФормы.ВидТовара);

    Если ВыбранноеЗначение <> Неопределено Тогда
    ВидТовара = ВыбранноеЗначение.Значение;
    КонецЕсли;

    КонецЕсли;
    КонецПроцедуры
```
---
Добрый день.

Дабы не плодить темы, решил написать в существующей.

В БП 3.0 (8.3) есть документ СчетНаОплатуПокупателю - ФормаСписка. При работе в клиенте на форме появляется поле для быстрого отбора по Организации (см. скрин). Если смотреть в конфигураторе, на форме этого поля нет (см. скрин). В документе РеализацияТоваровУслуг такое поле на форме есть (в конфигураторе) и там проблем нет с тем, чтобы ограничить выпадающий список организаций. А вот в счетах на оплату покупателю есть сложности с этим.

Это ГруппаБыстрыеОтборы.
Добраться к этому элементу при отладке можно так:

Элементы.КомпоновщикНастроекПользовательскиеНастройкиЭлемент1ВидСравн­енияЭлементаОтбора

Подскажите, пожалуйста, как можно у этого поля обработать событие начало выбора, если оно создается динамически?

Спасибо.