Студия/OnAfterFilterChange

From SunFlurry wiki
Revision as of 10:58, 27 August 2020 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  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;