Добрый день.
Есть отчет, на основании документа, в котором два реквизита ("реквизит1" и "реквизит2"), оба числовые.
Также есть отчет, в котором создан реквизит с предопределенными значениями "1" и "2".
Программное заполнение отбора работает, однако при изменении значения, например "1" на "2" предыдущий отбор не удаляется, а к нему добавляется новый.
Подскажите, как исходя из этой конструкции удалить предыдущий отбор?

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

Спасибо.
---
попробуйте перед установкой отборов сначала чистить старые

Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
//затем все как было
НовыйЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
...
---
Если конфигурация содержит общий модуль КомпоновкаДанныхКлиентСервер, то используйте

```1c
    КомпоновкаДанныхКлиентСервер.ДобавитьОтбор()
```

с ДополнительныеПараметры.ЗаменятьСуществующий = Истина

В этом же модуле есть функция УдалитьОтбор если возникнут сложности
---
Увы, конфигурация самописная и данного модуля в ней нет, но буду знать, спасибо.
---
```1c
    /// Установить отбор
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Отчет.КомпоновщикНастроек,"реквизит1",0,ВидСравненияКомпоновкиДанных.Равно,,Истина);

    /// Удалить отбор
    ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Отчет.КомпоновщикНастроек.Настройки.Отбор,"реквизит1")
```
---
попробуйте перед установкой отборов сначала чистить старые

Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
//затем все как было
НовыйЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
...
---
Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
Этот вариант подойдет, если не будет других отборов, мне подошёл, спасибо.
---
Это не совсем правильный вариант. У компоновщика желательно получить настройки

```1c
    Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();

    НовыйЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
```

Дело в том, что вы изменяете настройки компоновщика без учета пользовательских настроек. ПолучитьНастройки() как раз объединяет настройки из СКД с теми настройками, который сделал пользователь (взял и добавил новый отбор руками)
---
Согласен, но в рамках текущего отчета, где всего пара реквизитов вполне достаточно.
---
Отбор.Элементы = это коллекция элементов, там левое значение будет типа поле компоновки данных с именем
Пробежи "для каждого Элемент из Отбор.Элементы Цикл"
проверь что за левое значение и если оно равно твоему - перезапиши правое значение и вид сравнения на нужные тебе. Или удали текущий элемент и напиши новый.