На форме присутствует динамический список.
Установил на форму галку "ОтборПоДоговору ", параметр етого реквизита передаю в запрос динамического списка, но увы форма не обновляется

Как обновить отбор в динамическом списке, если я не хочу делать отбор по договору.

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ОтборПоДоговору = Истина;
    Организация = Параметры.Организация;
    Контрагент = Параметры.Контрагент;
    Договор = Параметры.ДоговорКонтрагента;

    Список.Параметры.УстановитьЗначениеПараметра("Организация", Организация);
    Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Контрагент);
    Список.Параметры.УстановитьЗначениеПараметра("Договор", Договор);
    Список.Параметры.УстановитьЗначениеПараметра("ОтборПоДоговору", ОтборПоДоговору);
    КонецПроцедуры
```

текс запроса динамического списка

```1c
    ВЫБРАТЬ
    ДолгиПокупателейПоДокументахОстатки.ДокументОснование КАК ДокументОснование,
    ДолгиПокупателейПоДокументахОстатки.Организация КАК Организация,
    ДолгиПокупателейПоДокументахОстатки.Контрагент КАК Контрагент,
    ДолгиПокупателейПоДокументахОстатки.Договор КАК Договор,
    ДолгиПокупателейПоДокументахОстатки.СуммаОстаток КАК СуммаОстаток
    ИЗ
    РегистрНакопления.ДолгиПокупателейПоДокументах.Остатки(
    ,
    Организация = &Организация
    И Контрагент = &Контрагент) КАК ДолгиПокупателейПоДокументахОстатки
    ГДЕ
    ВЫБОР
    КОГДА &ОтборПоДоговору
    ТОГДА ДолгиПокупателейПоДокументахОстатки.Договор = &Договор
    КОНЕЦ

    УПОРЯДОЧИТЬ ПО
    ДолгиПокупателейПоДокументахОстатки.ДокументОснование.Дата
```
---
Переделал отбор по договору через компановщик.

&НаСервере
Процедура ОтборПоДоговоруПриИзмененииНаСервере()
 Этаформа.Список.Отбор.Элементы.Очистить();

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

 Если ОтборПоДоговору тогда
  Отбор.Использование = Истина;
 Иначе
  Отбор.Использование = Ложь;
 КонецЕсли;
КонецПроцедуры
---
Если я правильно понял

```1c
    Список.ТекстЗапроса = "ВАШ ТЕКСТ ЗАПРОСА"
```

Если запрос был не произвольный тогда, вначале выполним
Список.ПроизвольныйЗапрос = Истина;
---
```1c
    Список.Параметры.УстановитьЗначениеПараметра("ОтборПоДоговору", ОтборПоДоговору);
```

Это нужно делать каждый раз после изменения реквизита (установки галки).

может быть, кстати, сработает Элементы.Список.Обновить(), но это не точно, не помню
---
не помогает.

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

Это убрать.

```1c
    ГДЕ
    ВЫБОР
    КОГДА &ОтборПоДоговору
    ТОГДА ДолгиПокупателейПоДокументахОстатки.Договор = &Договор
    КОНЕЦ
```

А отбор делать так:

```1c
    Отбор = Список.Отбор;
    Отбор.Элементы.Очистить();

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

&НаСервере
Процедура ОтборПоДоговоруПриИзмененииНаСервере()
 Этаформа.Список.Отбор.Элементы.Очистить();

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

 Если ОтборПоДоговору тогда
  Отбор.Использование = Истина;
 Иначе
  Отбор.Использование = Ложь;
 КонецЕсли;
КонецПроцедуры
---
господи! чуть голову не поломал!
весь интернет перерыл, еще и на новой работе - в жизни динамические списки не использовал и тут такое.
СПАСИБО ТЕБЕ ДОБРЫЙ ЧЕЛОВЕК!!!
---
Так красивее будет

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

```1c
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
```
---
в (9) предложили )
---
процедуры из БСП. В любой типовой это е
да, есть, но если нужно делать что то сложное - отбор со вложенными группировками И ИЛИ, тогда нельзя.
---
Как то так

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