Собственно, как можно задать табличной части отбор строк по нескольким колонкам?

 Элементы.Настройка.ОтборСтрок =
 Новый ФиксированнаяСтруктура("ГруппаСкладов,Склад,Полуфабрикат",
 ?(ЗначениеЗаполнено(ФильтрГруппаСкладов),ФильтрГруппаСкладов,Неопределено),
 ?(ЗначениеЗаполнено(ФильтрСклад),ФильтрГруппаСкладов,Неопределено),
 ?(ЗначениеЗаполнено(ФильтрНоменклатура),ФильтрНоменклатура,Неопределено));

Хотел передать все 3 колонки, но я так понял, что можно только одну.
Если устанавливать по одному, то при установке следующего отбора сбрасывается предыдущий.

Кроме как завести реквизит "булево" на форме, и при установке отборов перезаполнять его, а уже потом по нему строить ОтборСтрок, ничего в голову не приходит.
---
Вот тут Павел Чистов приводит пример , в котором ФиксированнаяСтруктура Имеет параметром Структуру, в которой не один элемент отбора
https://expert.chistov.pro/public/803449/

В самом конце статьи это видно
---
До этого накидал свой велосипед, и пришлось засунуть допреквизит в таб часть для отбора.
Но тоже работало)

```1c
    &НаКлиенте
    Процедура ФильтрСкладПриИзменении(Элемент)
    УстанавитьСнятьОтбор();
    КонецПроцедуры

    &НаКлиенте
    Процедура УстанавитьСнятьОтбор()

    Если ЗначениеЗаполнено(ФильтрГруппаСкладов)
    ИЛИ ЗначениеЗаполнено(ФильтрСклад)
    ИЛИ ЗначениеЗаполнено(ФильтрНоменклатура) Тогда
    ЗаполнитьСтрокуОтбора();
    Иначе
    ЗаполнитьСтрокуОтбора(Ложь);
    КонецЕсли;
    УстановитьСтрокуОтбора();

    КонецПроцедуры

    &НаСервере
    Процедура ЗаполнитьСтрокуОтбора(ЗначенияОтбораЗаданы = Истина)

    ТабНастройка = объект.Настройка.Выгрузить();

    Если ЗначенияОтбораЗаданы Тогда
    СтруктураПоиска = Новый Структура();

    Если ЗначениеЗаполнено(ФильтрГруппаСкладов) Тогда
    СтруктураПоиска.Вставить("ГруппаСкладов",ФильтрГруппаСкладов);
    КонецЕсли;

    Если ЗначениеЗаполнено(ФильтрСклад) Тогда
    СтруктураПоиска.Вставить("Склад",ФильтрСклад);
    КонецЕсли;

    Если ЗначениеЗаполнено(ФильтрНоменклатура) Тогда
    СтруктураПоиска.Вставить("Полуфабрикат",ФильтрНоменклатура);
    КонецЕсли;

    ТабНастройка.ЗаполнитьЗначения(Ложь,"ВыбратьСтроку");

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

    Иначе
    ТабНастройка.ЗаполнитьЗначения(Истина,"ВыбратьСтроку");
    КонецЕсли;

    объект.Настройка.Загрузить(ТабНастройка);

    КонецПроцедуры
```
---
Элементы.Настройка.ОтборСтрок = Новый ФиксированнаяСтруктура("Колонка1,Колонка2", ЗначениеОтбора1, ЗначениеОтбора2);
Передавай сначала реальные значения, чтобы убедиться что рабоатет отбор
---
не работает,Передаю Неопределено,Значение,Неопределено, т.е отбор по одной колонке, в результате пустая табличная часть.
---
Вы попробуйте передавать не Неопределено а существующие значения сначала
---
Позволяет установить отбор по значению колонки.
В качестве ключа используется имя реквизита табличной части, а в качестве значения - значение, по которому осуществляется отбор.
Чтобы снять отбор нужно присвоить свойству либо значение Неопределено, либо пустую ФиксированнаяСтруктура.

Да и в справке нет упоминания, что можно передать несколько колонок.
---
Вот тут Павел Чистов приводит пример , в котором ФиксированнаяСтруктура Имеет параметром Структуру, в которой не один элемент отбора
https://expert.chistov.pro/public/803449/

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

    СтруктураПоиска = Новый Структура;
    Если ТекЗначениеОтбора <> " Тогда
    СтруктураПоиска.Вставить(ТекЭлементОтбора,ТекЗначениеОтбора);
    КонецЕсли;
    Если ЭтотОбъект[ВторойРеквизитыФормы] <> " Тогда
    СтруктураПоиска.Вставить(ВторойЭлементОтбора,ЭтотОбъект[ВторойРеквизитыФормы]);
    КонецЕсли;
    Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПоиска);

    КонецПроцедуры
```
 Таким образом, мы для поиска товаров по табличной части мы можем настроить наши, произвольные отборы, при этом даже не по одному, а по нескольким колонкам.
---
это вы читаете, но не понимаете. "произвольные отборы, при этом даже не по одному, а по нескольким колонкам." означает не буквально сразу по нескольким, а выборочно по одному из. Смотрите внимательно код.
---
так ответьте на вопрос на засыпку все же , если догоните...
---
да, признаю. Был не прав.
---
Уважения к вам прибавилось на порядок!
Извините за грубоватый тон... )))
мир-дружба?
---
все нормально. Критика была правильной по сути.
---
Вопрос на засыпку - Сколько элементов может иметь СтруктураПоиска перед использованием в строке

```1c
    Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПоиска);
```

(секретный ответ - 1 или 2 , в зависимости от ТекЗначениеОтбора <> "" )
---
да, помогло, последовательно получается можно устанавливать, а не сразу все 3 параметра.
---
До этого накидал свой велосипед, и пришлось засунуть допреквизит в таб часть для отбора.
Но тоже работало)

```1c
    &НаКлиенте
    Процедура ФильтрСкладПриИзменении(Элемент)
    УстанавитьСнятьОтбор();
    КонецПроцедуры

    &НаКлиенте
    Процедура УстанавитьСнятьОтбор()

    Если ЗначениеЗаполнено(ФильтрГруппаСкладов)
    ИЛИ ЗначениеЗаполнено(ФильтрСклад)
    ИЛИ ЗначениеЗаполнено(ФильтрНоменклатура) Тогда
    ЗаполнитьСтрокуОтбора();
    Иначе
    ЗаполнитьСтрокуОтбора(Ложь);
    КонецЕсли;
    УстановитьСтрокуОтбора();

    КонецПроцедуры

    &НаСервере
    Процедура ЗаполнитьСтрокуОтбора(ЗначенияОтбораЗаданы = Истина)

    ТабНастройка = объект.Настройка.Выгрузить();

    Если ЗначенияОтбораЗаданы Тогда
    СтруктураПоиска = Новый Структура();

    Если ЗначениеЗаполнено(ФильтрГруппаСкладов) Тогда
    СтруктураПоиска.Вставить("ГруппаСкладов",ФильтрГруппаСкладов);
    КонецЕсли;

    Если ЗначениеЗаполнено(ФильтрСклад) Тогда
    СтруктураПоиска.Вставить("Склад",ФильтрСклад);
    КонецЕсли;

    Если ЗначениеЗаполнено(ФильтрНоменклатура) Тогда
    СтруктураПоиска.Вставить("Полуфабрикат",ФильтрНоменклатура);
    КонецЕсли;

    ТабНастройка.ЗаполнитьЗначения(Ложь,"ВыбратьСтроку");

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

    Иначе
    ТабНастройка.ЗаполнитьЗначения(Истина,"ВыбратьСтроку");
    КонецЕсли;

    объект.Настройка.Загрузить(ТабНастройка);

    КонецПроцедуры
```
---
Последовательность тут не шлавное
Вы же сразу ищете

```1c
    МассивСтрокОтбора = ТабНастройка.НайтиСтроки(СтруктураПоиска);
```

И сравните ради прикола
СтруктураПоиска , заполненную через вставить и сделайте паралельно другую

```1c
    Если ЗначениеЗаполнено(ФильтрГруппаСкладов) И ЗначениеЗаполнено(ФильтрСклад) И ЗначениеЗаполнено(ФильтрНоменклатура) Тогда
    СтруктураПоиска1 = Новый Структура(«ГруппаСкладов,Склад, Полуфабрикат»,ФильтрГруппаСкладов,ФильтрСклад,ФильтрНоменклатура);
    КонецЕсли
```

Она будет также работать прекрасно...
Вся суть в том что вы пытались в СтруктуруПоиска впихнуть Неопределенности , а вот этого поиск не поддерживает!
---
Отбор = Новый Структура();
  Отбор.Вставить("Должник",ТекущиеДанныеНомерЛиста.Должник);
  Отбор.Вставить("НомерИЛ",ТекущиеДанныеНомерЛиста.НомерИЛ);

  Элементы.ИсполнительныеЛисты.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);

У меня такое работает в тонком клиенте, а в браузере второе условие игнорируется.