Универсальный фильтр
Contents
Универсальный фильтр#
Как создать дополнительную группу фильтрации по классу#
На операции
lazyInitFilter
инициализируем дополнительную группу:override def lazyInitFilter(): Unit = { if (!fltManager.isPopulatedRootGroup) { Btk_FltPkg().createRootGroupByClass(fltManager, "Bs_Goods", "ТМЦ") } super.lazyInitFilter() }
На
onApplyFiler
получаем текст фильтрации по группе:override def onApplyFilter(): Unit = { super.onApplyFilter() //проверяем, что группы инициализированы и фильтр активен в выборке if (fltManager.isPopulatedRootGroup && fltManager.isActive) { val alias = "tt" val macros = Btk_FltPkg().generateMacroByGroup(fltManager, "Bs_Goods", alias) selection.setMacro("GdsMacro", macros.where) } }
В операции
onRefresh
используем установленный вonApplyFiler
макрос:Через метод
prepareSelectStatement
override protected def onRefresh: Recs = { prepareSelectStatement("&GdsMacro") }
В тексте sql-запроса
override protected def onRefresh: Recs = { """ select ..... from ..... where .... and &GdsMacro """ }
Как создать дополнительную группу фильтрации с произвольными атрибутами#
На операции
lazyInitFilter
инициализируем дополнительную группу:override def lazyInitFilter(): Unit = { if (!fltManager.isPopulatedRootGroup) { Btk_FltPkg().createCustomRootGroup(fltManager, "Some_CustomGroup", "Произвольная группа", (builder) => { builder.addRefObjectAttr("idGds", "Тмц", "Bs_Goods") builder.addBasicAttr("sCode", "Код", AttributeTypes.Varchar, false) }) } super.lazyInitFilter() }
На
onApplyFiler
получаем текст фильтрации по группе:override def onApplyFilter(): Unit = { super.onApplyFilter() //проверяем, что группы инициализированы и фильтр активен в выборке if (fltManager.isPopulatedRootGroup && fltManager.isActive) { val macros = Btk_FltPkg().generateMacroByGroup(fltManager, "Some_CustomGroup", "tt") selection.setMacro("SomeMacro", macros.where) } }
В операции
onRefresh
используем установленный вonApplyFiler
макрос:Через метод
prepareSelectStatement
override protected def onRefresh: Recs = { prepareSelectStatement("&SomeMacro") }
В тексте sql-запроса
override protected def onRefresh: Recs = { """ select ..... from ..... where .... and &SomeMacro """ }