Добрый день!

Задача:
Управляемая форма (далее УФ). Существует процедура, устанавливающая отбор в табличной части. Табличная часть состоит из двух колонок: "Продукция" и " Настройка продукции". Входящий параметр процедуры - список значений по которым надо установить отбор в таб.части.

Всегда работал на обычных формах. Там отбор очень просто программируется. Указывается значение, вид сравнения, использование и.т.д.

Для управляемых форм накопал по отборам в интернете только это:

Для динамических списков:

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

Сброс отбора:

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

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

Сброс отбора:

```1c
    Элементы.КонтейнерыФакт.ОтборСтрок = НЕопределено;
```

Дело в том, что я не смог найти информацию, как на УФ для отбора передавать не Значение, а СписокЗначений, другими словами, как на УФ настроить ВидСравнения, аналогично как на ОФ.

Второй день работы на УФ и возник затык.

Большое спасибо за помощь!
---
С таблицей номер не пройдёт. Вообще никак. Таблица УФ не рассчитана на сложные отборы. Используйте ДС.
---
так а в чем проблема разобраться в УФ создать на форме динамический список, если надо, чтобы было определенная ТабЧасть задать отбор на ссылку в фикс настройках. Так не припомню, чтобы мне когда-то приходилось ТЧ ограничивать отбором, для пользователя есть поиск вместо отбора как было в обычных формах
---
Может быть кому-нибудь поможет такой вариант отбора табличной части или результата запроса!

```1c
    СЗ_ДляОтбора = Новый СписокЗначений;

    ТаблицаДанных = Объект.ТаблицаДанных.Выгрузить();
    СЗ_ДляОтбора.ЗагрузитьЗначения(ТаблицаДанных.ВыгрузитьКолонку("НаименованиеКолонки")); // или испльзовать свой массив данных

    Построитель = Новый ПостроительЗапроса;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаДанных);
    // можно сразу - ОписаниеИсточникаДанных(Объект.ТаблицаДанных.Выгрузить()); если не надо выгружать колонку

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

    Построитель.Выполнить();
    ТЗ_Результат = Построитель.Результат.Выгрузить();
```

Далее можно как обрабатывать данные так и их загрузить обратно

```1c
    Объект.ТаблицаДанных.Загрузить(ТЗ_Результат);
```
---
Можно пойти по другому. Создаем массив ссылок, которые нужно подсветить, например все новые созданные документы и заполняем по данным из этого массива булевый реквизит формы «СозданиеНового», который так же создаем. По реквизиту формы уже формируем условное оформление.
---
Вместо
   ВидСравненияКомпоновкиДанных.Равно;
напишите
  ВидСравненияКомпоновкиДанных.ВСписке;
---
ВидСравненияКомпоновкиДанных.ВСписке

Так вроде ВидСравненияКомпоновкиДанных используется для отбора в Динамических списках, а мне нужно в табчасти обработки.
---
Пробовали в фиксированную структуру вставлять в качестве значения список значений, массив, фиксированный массив? Если ничего из этого не помогло, то полагаю, что выход только один: добавить служебную колонку булего типа, заполнить ее значениями Истина в тех строках, что должны проходить отбор, и уже накладывать отбор ТЧ по служебной колонке.
---
Пробовал так:

```1c
    МассивПродукции = Новый Массив;

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

    Элементы.НастройкиПродукции.ОтборСтрок = Новый ФиксированнаяСтруктура("Продукция", МассивПродукции );
```

И так:

```1c
    СписокПродукции = Новый СписокЗначений;

    Для каждого ТекСтр из тзПродукция Цикл
    СписокПродукции .Добавить(ТекСтр.Продукция);
    КонецЦикла;

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

Ничего не работает :( С служебной колонкой, это выход, но костыль. Неужели в УФ нет заложенного механизма наложения программного отбора с видом сравнения "В списке". Это же абсурд о_О
---
А так?

```1c
    МассивПродукции = Новый Массив;

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

    Элементы.НастройкиПродукции.ОтборСтрок = Новый ФиксированнаяСтруктура("Продукция", Новый ФиксированныйМассив(МассивПродукции) );
```

Честно говоря, я гадаю, извините.

Скорее всего у Вас ничего не получится без костылей. Ведь задать список интерактивно при поиске Вы ведь не можете. Значит маловероятно, что можно это сделать программно.
---
С таблицей номер не пройдёт. Вообще никак. Таблица УФ не рассчитана на сложные отборы. Используйте ДС.
---
Подскажите, что такое ДС
---
динамический список

ЗЫ вам надо понять вот что - контейнер таблицы на стороне УФ это отнюдь не таблица - обратите внимание на тип данных в форме с таблицей, таблица значений на стороне клиента вообще недоступна...
---
Если использовать динамический список для табличной части, то теряем возможность работы с этой ТЧ. Ибо Основную таблицу выставить не можем, так?