Имя: Пароль:
1C
1С v8
отключить отбор в динамическом списке по одному параметру
0 Kurbash
 
24.06.15
08:58
Всем привет. На произвольной форму (УФ) есть динамический список.
При создании формы на сервере задаю отбор:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

теперь тумкаю как удалить один из вариантов отбора по кнопке

СписокНарядов.Отбор.Элементы.Удалить("Ссылка.Участок");

не канает

где ошибся?
1 fisher
 
24.06.15
09:04
Чего бы это оно канало? Где ты в СП увидел, что в Удалить() можно строку передавать?
2 Kurbash
 
24.06.15
09:07
да, там нужен элемент отбора компоновки данных, но как на него выйти я не догадываюсь, пробовал СПисок.Элементы.Получить() но там нужен индекс
3 fisher
 
24.06.15
09:08
А нету в этой коллекции готовых методов для поиска нужного элемента. Нужно перебирать все и определять нужный элемент отбора по искомому левому значению. Бананов нема, к сожалению...
4 Kurbash
 
24.06.15
09:10
тупо перебором?
        Для Каждого стр из Список.Отбор.Элементы Цикл
            Если стр.тратата
                КонецЕсли;
            КонецЦикла;
так? не через ..опу получится?
5 fisher
 
24.06.15
09:10
Оно и понятно, в принципе, потому как неясны критерии поиска нужного элемента отбора в общем случае. Может же быть несколько элементов с одинаковым левым значением.
6 fisher
 
24.06.15
09:11
(4) Других вариантов я не вижу.
7 fisher
 
24.06.15
09:12
Можно еще запоминать ссылку на нужный элемент отбора при его создании, если бизнес-логика это допускает.
8 Kurbash
 
24.06.15
09:20
Для Каждого стр из Список.Отбор.Элементы Цикл
            Если стр.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Ссылка.Участок") Тогда
                стр.Использование=Ложь;
                КонецЕсли;
            КонецЦикла;
9 Kurbash
 
24.06.15
09:20
взлетело
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший