Студия/OnAfterFilterChange
OnAfterFilterChange (Визуальные события) | |||||||
---|---|---|---|---|---|---|---|
|
Событие, возникающее после изменения быстрого фильтра в столбике таблицы. Событие будет вызываться только для таблиц, не связанных с базами данных, с установленной опцией IfQFiltersAlwaysAllowed. Событие может обновить таблицу в соответствии с визуальными фильтрами, наложенными пользователем.
Примеры
//Пример обработчика OnAfterFilterChange //Функция программного наложения визуальных фильтров Function _НаложитьФильтр(ВТаб,ИзТаб) For i:=1 To ВТаб.SizeC() Do пИмя:=ВТаб.Column(i).Name; j:=ИзТаб.GetColumnIndex(пИмя); If j=0 Then Continue; EndIf; //Получить визуальный фильтр Стр:=Uppercase(ВТаб.Column(i).Filter); If Стр="" then Continue; EndIf; Стр2:=Uppercase(ИзТаб.Get(ИзТаб.CurLine,j)); //Если значение текущей строки не подходит под фильтр, вернуть ноль If pos(Стр,Стр2)=0 Then Exit 0; EndIf; EndDo; Exit 1; EndFunction оТекущееЗадание:=Form.оТекущееЗадание.Value; //Удалить все строки оТекущееЗадание.ClearLines(); //Заданы визуальные фильтры? флФильтры:=0; For i:=1 To Таб.SizeC() Do If Таб.Column(i).Filter<>"" then флФильтры:=1; Break; EndIf; EndDo; //Получить таблицу, которая должна быть сортирована и загружена в оТекущееЗадание Таб:=ТабПолнТС.Таб; If Form.оТекущееЗадание.SortString<>"" then Таб.Sort(Form.оТекущееЗадание.SortString); EndIf; //Заполнить таблицу результата из таблицы Таб Таб.Select(); While Таб.Next() Do If флФильтры then If not _НаложитьФильтр(оТекущееЗадание,Таб) Then Continue; EndIf; EndIf; оТекущееЗадание.AddLine("Документ,Зона,Масса,Адрес,ДатаДоставки,ВремяДоставки,Комментарий,Контрагент",Таб.Документ,Таб.Зона,Таб.Масса,Таб.Адрес, Таб.ДатаДоставки,Таб.ВремяДоставки,Таб.Комментарий,Таб.Контрагент); EndDo;