ВидСравнения "ВСписке" при отборе в табличной части на управляемых формах

1. Vellosity 20.02.19 13:55 Сейчас в теме
Добрый день!

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

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

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

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


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


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

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


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

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

Большое спасибо за помощь!
По теме из базы знаний
Найденные решения
8. sergathome 4 20.02.19 15:47 Сейчас в теме
(4) С таблицей номер не пройдёт. Вообще никак. Таблица УФ не рассчитана на сложные отборы. Используйте ДС.
Vellosity; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. user623969_dusa 20.02.19 15:45 Сейчас в теме
(1) так а в чем проблема разобраться в УФ создать на форме динамический список, если надо, чтобы было определенная ТабЧасть задать отбор на ссылку в фикс настройках. Так не припомню, чтобы мне когда-то приходилось ТЧ ограничивать отбором, для пользователя есть поиск вместо отбора как было в обычных формах
12. REWS-DES 23.08.20 18:13 Сейчас в теме
Может быть кому-нибудь поможет такой вариант отбора табличной части или результата запроса!

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

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

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


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

Объект.ТаблицаДанных.Загрузить(ТЗ_Результат);
jane_de_rio; +1 Ответить
2. accounting_cons 755 20.02.19 14:06 Сейчас в теме
Вместо
ВидСравненияКомпоновкиДанных.Равно;
напишите
ВидСравненияКомпоновкиДанных.ВСписке;
Vellosity; +1 Ответить
3. Vellosity 20.02.19 14:11 Сейчас в теме
(2)
ВидСравненияКомпоновкиДанных.ВСписке


Так вроде ВидСравненияКомпоновкиДанных используется для отбора в Динамических списках, а мне нужно в табчасти обработки.
4. dhurricane 20.02.19 14:19 Сейчас в теме
(3) Пробовали в фиксированную структуру вставлять в качестве значения список значений, массив, фиксированный массив? Если ничего из этого не помогло, то полагаю, что выход только один: добавить служебную колонку булего типа, заполнить ее значениями Истина в тех строках, что должны проходить отбор, и уже накладывать отбор ТЧ по служебной колонке.
Vellosity; +1 Ответить
5. Vellosity 20.02.19 15:34 Сейчас в теме
(4)
Пробовал так:

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

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


И так:

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

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


Ничего не работает :( С служебной колонкой, это выход, но костыль. Неужели в УФ нет заложенного механизма наложения программного отбора с видом сравнения "В списке". Это же абсурд о_О
6. dhurricane 20.02.19 15:39 Сейчас в теме
(5) А так?
    МассивПродукции = Новый Массив;
    
    Для каждого ТекСтр из тзПродукция Цикл
        МассивПродукции.Добавить(ТекСтр.Продукция);
    КонецЦикла;

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

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

Скорее всего у Вас ничего не получится без костылей. Ведь задать список интерактивно при поиске Вы ведь не можете. Значит маловероятно, что можно это сделать программно.
Vellosity; +1 Ответить
8. sergathome 4 20.02.19 15:47 Сейчас в теме
(4) С таблицей номер не пройдёт. Вообще никак. Таблица УФ не рассчитана на сложные отборы. Используйте ДС.
Vellosity; +1 Ответить
9. Vellosity 20.02.19 16:01 Сейчас в теме
(8)
Подскажите, что такое ДС
10. sergathome 4 20.02.19 16:07 Сейчас в теме
(9) динамический список

ЗЫ вам надо понять вот что - контейнер таблицы на стороне УФ это отнюдь не таблица - обратите внимание на тип данных в форме с таблицей, таблица значений на стороне клиента вообще недоступна...
Vellosity; +1 Ответить
11. Stivens 35 31.10.19 21:25 Сейчас в теме
Если использовать динамический список для табличной части, то теряем возможность работы с этой ТЧ. Ибо Основную таблицу выставить не можем, так?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот