Управляемые формы, самописная конфигурация.

Есть документ: Ремонт;
В нем, форма списка: ФормаСписка;

На это форме списка я создал группу кнопок. Мне нужно разобраться, как сделать хотя бы для одной кнопки, чтобы по нажатию на нее осуществлялся отбор. С остальными я по примеру разберусь сам.

К примеру, есть кнопка: ПринятВР; У нее есть команда: Ком_ПринятВР.

В списке есть столбец: СтатусРемонта. В нем разные значения, которые выставляются перечислением. Нужно, чтобы по клику на кнопку "ПринятВР" форма списка оставила только элементы содержащие "Принят в ремонт" по столбцу "СтатусРемонта"

У перечисления, принят в ремонт, реквизит выглядит так: "ПринятВРемонт"
А само перечисление: СтатусВыполненияРаботПеречисление
---
открываете синтаксис помошник и поиском ищете ПредопределенноеЗначение
---
Serg, добрый день!
форма - создана, список -заполняется ? Выложите, пожалуйста, скриншот, чтобы понятнее было
---
Да, список заполняется.
---
Если конфа на БСП, то отбор списка настраивается через

```1c
    ОбщегоНазначенияКлиентСервер.УстановитьОтборДинамическогоСписка()
```

Если нет, то смотрите в сторону поля Список.Отбор
---
Управляемые формы, самописная конфигурация.
---
но "подсмотреть" же вам никто не мешает?
---
Я бы не лез сюда, если бы заранее не "подсмотрел". Опыта не хватает досмотреть до верного ответа.
---
Если конфа на БСП то можно наверное вообще форму списка не создавать
пользоваться штатной настройкой списка в т.ч. и отборами, которые в польз.режиме сохраняются на форме списка
---
Как то так:

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

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

Перем - ругается, что Перечисления не определена переменная
---
Видимо вы на клиенте, можно через ПредопределенноеЗначение
---
На клиенте, да. А можно по подробнее? Я тут kinda total нуб в подобных решениях внезапных задачек
---
открываете синтаксис помошник и поиском ищете ПредопределенноеЗначение
---
Понятно, что ничего не понятно. И на том спасибо.
---
{Документ.Ремонт.Форма.ФормаСписка.Форма(7)}: Ошибка при вызове метода контекста (ПредопределенноеЗначение)
ЭОТ.ПравоеЗначение = ПредопределенноеЗначение("Перечисления.СтатусВыполненияРаботПеречисление.ПринятВРемонт");
по причине:
Предопределенное значение "Перечисления.СтатусВыполненияРаботПеречисление.ПринятВРемонт" не найдено.
---
Попробуйте не копипастить, а руками вводить, вам синтаксическая подсказка покажет как правильно
---
Да я никогда не копирую и не вставляю. Ошибку решил. Не перечисления, а перечисление.

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

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

    ЭОТ.ПравоеЗначение = ПредопределенноеЗначение("Перечисления.СтатусВыполненияРаботПеречисление.ПринятВРемонт");
    КонецПроцедуры
```