Difference between revisions of "Студия/OnAfterFilterChange"
m (1 revision imported) |
|
(No difference)
| |
Latest revision as of 07:55, 7 February 2021
| 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;