Здравствуйте!
Не подскажите, как открыть форму выбора справочника с отбором из нескольких элементов?
Нужно отобрать в форме выбора сотрудников по физлицу и дате увольнения, которая либо больше какой-то даты, либо пустая(это условие одновременно нужно)
На форме таблица, в которой нужен отбор, это динамический список
спасибо
---
Сделал так

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

    ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    ГруппаЭлементовОтбора.Использование = Истина;
    ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
    ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
    ЭлементОтбора3.Использование = Истина;
    ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    КонецПроцедуры
```
---
такой способ вроде отрабатывает как надо

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

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора3 = Стр.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
    ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
    ЭлементОтбора3.Использование = Истина;
    ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    КонецЕсли;
    КонецЦикла;
    ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    ГруппаЭлементовОтбора.Использование = Истина;
    ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

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

```1c
    &НаКлиенте
    Форма = ОткрытьФорму("Справочник.Сотрудники.Форма.ФормаСписка"); //Открываем форму
    ОтборВладелец = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //Добавлям отбор
    ОтборВладелец.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; //Как будем сравнивать
    ОтборВладелец.Использование = Истина; // Устанавливаем галку использованияНовый ПолеКомпоновкиДанных("ФизическоеЛицо")
    ОтборВладелец.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизЛицо"); //По какому реквизиту будем делать отбор
    ОтборВладелец.ПравоеЗначение = Объект.ФЛ; // И само значение отбора
```
---
Конфа ЗКБУ 3
С одним параметром у меня все тоже легко получается)
Теперь к этому нужно добавить условие с группировкой ДатаУвольнения >= какая-то дата ИЛИ ДатаУвольнения не заполнено)
---
Ну, по аналогии добавляете ещё элементы отбора, в том числе с "ВидСравненияКомпоновкиДанных.БольшеИлиРавно".
---
Меня больше волнует как сгруппировать два отбора на одно поле ДатаУвольнения. Группировка ИЛИ. вот это я не пойму
---
Посмотрите как в настройках СКД сделано. Условия отбора можно также программно группировать.
---
я делаю так
НаКлиенте

```1c
    СписокДокументов = СписокДокументов();
    ПараметрыОбъекта = Новый Структура;
    Если ЗначениеЗаполнено(СписокДокументов) Тогда
    ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокДокументов));
    ОткрытьФорму("Документ.ПередачаМатериаловВЭксплуатацию.ФормаВыбора", ПараметрыФормы, Элемент);
    КонецЕсли;
```

НаСервере

```1c
    &НаСервереБезКонтекста
    Функция СписокДокументов()
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    | ";

    Возврат НекийМассивЗначенийЗапроса
    КонецФункции
```
---
Одна особенность - нету у них документов вообще .
Это справочник
---
Это пример)))
У справочника есть же форма выбора, либо форму списка прекрути. Суть в том что запросом получается необходимые данные, и загружаются в динамический список
---
Есть форма, отбора нет. Втаком виде имею ввиду как у вас
---
Если БСП, то:

ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
---
```1c
    ГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = 100;

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = 200;
```

попробую подобно этому
---
Сделал так

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

    ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    ГруппаЭлементовОтбора.Использование = Истина;
    ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
    ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
    ЭлементОтбора3.Использование = Истина;
    ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    КонецПроцедуры
```
---
Хотя решены не все проблемы. Форма сохраняет пользовательские настройки и они не сбрасываются при следующем открытии. Пользовательские настройки нужно переписывать или можно их как-то сбрасывать при каждом открытии формы через обработку?
---
такой способ вроде отрабатывает как надо

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

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора3 = Стр.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
    ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
    ЭлементОтбора3.Использование = Истина;
    ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    КонецЕсли;
    КонецЦикла;
    ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    ГруппаЭлементовОтбора.Использование = Истина;
    ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

    ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
    ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
    ЭлементОтбора3.Использование = Истина;
    ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    Для Каждого Стр Из Форма.Список.Отбор.Элементы Цикл
    Если Стр.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОформленПоТрудовомуДоговору") Тогда
    //Форма.Список.Отбор.Удалить(Стр);
    Стр.Использование = Ложь;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```