Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 08:28

Отбор по двум колонкам на управляемой форме списка

Автор Sanz, 25 ноя 2014, 17:24

0 Пользователей и 1 гость просматривают эту тему.

Sanz

Доброго вечера!
Делаю отбор на УФ списка документов, нужно чтобы он одновременно искал по двум колонкам. На форме нарисовала поле фильтра, написала событие:

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


Выдает ошибку:
{Документ.Задачи.Форма.ФормаСпискаУпр1.Форма(162)}: Поле объекта недоступно для записи (Родитель)
Отбор.Родитель = ГруппаОтбор;

Помогите, пожалуйста, советом -  что я делаю не так?

KKurgan

Вместо
Отбор = СписокВсехЗадач.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.Родитель = ГруппаОтбор;
следует
Отбор = ГруппаОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

Sanz

Спасибо, добрый человек!! Заработало!:)
Добавлено: 26 ноя 2014, 14:28


Вылез еще глюк. Каждый раз когда я изменяю отбор или нажимаю кнопку очистки создается новая группа отбора. Как ее можно очистить, подскажете?



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

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

КонецПроцедуры
Добавлено: 26 ноя 2014, 15:53


не работает:
&НаКлиенте
Процедура ФильтрГлобальныйВсеОчистка(Элемент, СтандартнаяОбработка)

СписокВсехЗадач.Отбор.Элементы.Очистить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));

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

Добавлено: 26 ноя 2014, 17:04


Народ, может кто знает все-таки что с этим делать? Весь инет обыскала :fdbsdfbsd:

Codokopatel

Я у себя делал так.
Кнопка очистки группы и к ней код:

&НаКлиенте
Процедура ОчиститьГруппу(Команда)
    Список.Отбор.Элементы.Очистить();
КонецПроцедуры

Sanz

спасибо!
В итоге сделала так, и все заработало:

&НаКлиенте
Процедура ФильтрГлобальныйВсеПриИзменении(Элемент)
      
Отбор = СписокВсехЗадач.Отбор.Элементы;

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

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

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск