На форме есть динамический список. Выведены поля "номенклатура, код"
Добавляю отбор программно по полю булевного типа "номенклатура.условие1" (равно истина)

отбор корректно добавляется, но вылезает такая ошибка

```1c
    Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля "номенклатура.условие1 Равно ..."
```

Не понимаю чего не хватает. Это из-за того, что это поле не выведено в динамическом списке?
---
Нашел в чем была трабла. При поиске в уже имеющихся отборах случайно присваивал не то значение.

В итоге вот процедурка для установки произвольного отбора (вытаскивать явно в запросе динамического списка ничего не надо)

```1c
    //Параметры:
    // ПолеОтбора - тип строка
    // ДСП - Динамический список
    // УстановитьОтбор - условие по которому либо устанавливаем отбор, либо удаляем его
    &НаСервере
    Процедура УстановитьПараметрыОтбораДинамическогоСписка(ПолеОтбора, ДСП, УстановитьОтбор)

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

    Если ПолеОтбораДоступно Тогда

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

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

    КонецЕсли;

    КонецПроцедуры
```
---
Вроде в УФ решалось галочкой "использовать всегда" у нужного реквизита динамического списка
---
на реквизите "Номенклатура" такая галочка на форме стоит, но на дочернем реквизите я ее поставить не могу, так как реквизит "условие1" в запросе явно не выбирается
---
Вытащил явно в запросе необходимое поле. Вроде сначала помогло (отбор сработал и осталось все необходимое), а теперь опять эта ошибка
---
Нашел в чем была трабла. При поиске в уже имеющихся отборах случайно присваивал не то значение.

В итоге вот процедурка для установки произвольного отбора (вытаскивать явно в запросе динамического списка ничего не надо)

```1c
    //Параметры:
    // ПолеОтбора - тип строка
    // ДСП - Динамический список
    // УстановитьОтбор - условие по которому либо устанавливаем отбор, либо удаляем его
    &НаСервере
    Процедура УстановитьПараметрыОтбораДинамическогоСписка(ПолеОтбора, ДСП, УстановитьОтбор)

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

    Если ПолеОтбораДоступно Тогда

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

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

    КонецЕсли;

    КонецПроцедуры
```
---
А не могли бы Вы подробнее описать, что именно не так Вы присваивали? Какие именно инструкции приводят к описанной в топике ошибке?

К сожалению, приведенная процедура вызывает больше вопросов, нежели дает какие-либо ответы.
---
я просто вместо проверки в этой процедуре в месте

```1c
    Если ОтборИзСписка.ЛевоеЗначение = ИскомоеПолеОтбора Тогда
    ОтборУжеЕсть = истина;
    Прервать;
    КонецЕсли;
```

Случайно оставил такое:

```1c
    ОтборИзСписка.ЛевоеЗначение = "ПолеСтрокой";
    ОтборУжеЕсть = истина;
    Прервать;
```

и получается что присваивал в первый попавшийся элемент найденого отбора динамического списка в левое значение еще и другой тип "Строка",
а мне надо было его найти.