二开案例.基础资料.过滤

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.基础资料.过滤

【应用场景】给单据上的基础资料字段,设置额外的过滤条件。

【案例演示】给采购订单的供应商字段,设置不同的过滤条件,并观察其影响范围。

【基础知识】

<1>单据上的础资料字段,可设置三种过滤条件,分别是过滤、高级过滤和过滤界面条件。

过滤:专用于在单据中进行基础资料查询,最终会和高级过滤的条件合并在一起使用。

高级过滤:专用于在单据中进行基础资料查询,最终会和过滤的条件合并在一起使用。

过滤界面条件:专用于在单据的列表过滤界面中进行基础资料查询,包括过滤条件表格,批量过滤条件表格,快捷过滤等。


<2>单据中的基础资料字段的过滤条件来源有:基础资料.过滤、基础资料.高级过滤、BeforeF7Select事件(https://vip.kingdee.com/article/104945110479021056)等。

列表过滤界面中的基础资料字段的过滤条件来源有:基础资料.过滤界面条件、BeforeFilterGridF7Select事件(https://vip.kingdee.com/article/104956800675357696)等。






实操1-基础资料.过滤

<1>BOSIDE扩展采购订单,选中供应商字段,将过滤属性设置为:FNumber like '%GY%',保存元数据,如下图所示。

此过滤条件的含义为:只查询编码包含GY的供应商,过滤条件需要遵循SQL语法,用于查询的字段名必须使用字段的标识

<2>登录业务站点,打开采购订单,观察供应商字段的模糊查询结果,此时返回的查询结果都是编码包含GY的供应商。

<3>数据库抓包SQL如下:

SELECT TOP 5

        t0.FNUMBER AS FNumber ,

        t0_L.FNAME AS FName ,

        t0.FSUPPLIERID AS FSupplierId

 FROM   T_BD_SUPPLIER t0

        LEFT JOIN T_BD_SUPPLIERBASE t1 ON ( t0.FSUPPLIERID = t1.FSUPPLIERID )

        LEFT JOIN T_BD_SUPPLIER_L t0_L ON ( t0.FSUPPLIERID = t0_L.FSUPPLIERID

                                            AND t0_L.FLOCALEID = 2052

                                          )

 WHERE  ( (( t0.FNUMBER LIKE '%GY%' )

          AND ( t1.FSUPPLYCLASSIFY <> 'WW' ))

        )

        AND t0.FUSEORGID = 100003

        AND t0.FDOCUMENTSTATUS = 'C'

        AND t0.FFORBIDSTATUS = 'A'

 ORDER BY t0.FNUMBER;




实操2-基础资料.高级过滤

<1>在实操1的基础上继续,BOSIDE扩展采购订单,选中供应商字段,将高级过滤的前提条件设置为:FPurchaseOrgId.FNumber = '101.2',将前置条件成立时的过滤条件设置为:FName like '%YS%',保存元数据,如下图所示。


<2>登录业务站点,打开采购订单,观察供应商字段的模糊查询结果,此时返回的查询结果是编码包含GY且名称包含YS的供应商。

<3>数据库抓包SQL如下:

SELECT TOP 5

        t0.FNUMBER AS FNumber ,

        t0_L.FNAME AS FName ,

        t0.FSUPPLIERID AS FSupplierId

 FROM   T_BD_SUPPLIER t0

        LEFT JOIN T_BD_SUPPLIERBASE t1 ON ( t0.FSUPPLIERID = t1.FSUPPLIERID )

        LEFT JOIN T_BD_SUPPLIER_L t0_L ON ( t0.FSUPPLIERID = t0_L.FSUPPLIERID

                                            AND t0_L.FLOCALEID = 2052

                                          )

 WHERE  ( (( ( t0.FNUMBER LIKE '%GY%' )

             AND ( t0_L.FNAME LIKE N'%YS%' )

           )

          AND ( t1.FSUPPLYCLASSIFY <> 'WW' ))

        )

        AND t0.FUSEORGID = 100003

        AND t0.FDOCUMENTSTATUS = 'C'

        AND t0.FFORBIDSTATUS = 'A'

 ORDER BY t0.FNUMBER;

----------------------------------------------------------------------------------------------

观察上面的SQL可知,高级过滤条件会和过滤条件合并在一起。




实操3-基础资料.过滤界面条件

<1>BOSIDE扩展采购订单,选中供应商字段,将过滤界面条件属性设置为:FName like N'%新宇%',保存元数据,如下图所示。

<2>登录业务站点,打开采购订单列表的过滤界面,观察供应商字段的模糊查询结果,此时返回的查询结果是名称包含新宇的供应商。

<3>数据库抓包SQL如下:

SELECT TOP 5

        t0.FNUMBER AS FNumber ,

        t0_L.FNAME AS FName ,

        t0.FSUPPLIERID AS FSupplierId

 FROM   T_BD_SUPPLIER t0

        LEFT JOIN T_BD_SUPPLIER_L t0_L ON ( t0.FSUPPLIERID = t0_L.FSUPPLIERID

                                            AND t0_L.FLOCALEID = 2052

                                          )

 WHERE  t0.FSUPPLIERID = t0.FMASTERID

        AND EXISTS ( SELECT 1

                     FROM   ( SELECT    t0.FMASTERID

                              FROM      T_BD_SUPPLIER t0

                                        LEFT JOIN T_BD_SUPPLIER_L t0_L ON ( t0.FSUPPLIERID = t0_L.FSUPPLIERID

                                                              AND t0_L.FLOCALEID = 2052

                                                              )

                              WHERE     ( (t0_L.FNAME LIKE N'%新宇%') )

                                        AND t0.FUSEORGID IN ( 1, 100001,

                                                              100002, 100003,

                                                              100004, 100005,

                                                              100006, 100007,

                                                              135255, 135713,

                                                              135879, 136122,

                                                              136492, 144050,

                                                              151026, 151043,

                                                              174323, 304707 )

                            ) t0sfq

                     WHERE  t0.FMASTERID = t0sfq.FMASTERID )

 ORDER BY t0.FNUMBER;






【知识点】

<1>过滤条件查询常量值时要严格按照字段的数据类型来选择格式(是否加N),例如:

如果字段FName是VARCHAR类型,格式是:FName like '%新宇%'

如果字段FName是NVARCHAR类型,格式是:FName like N'%新宇%'

如果未按字段的真实数据类型来写SQL语句,可能导致索引失效,严重影响查询性能。




【参考资料】

【二开案例.基础资料.联动查询(GetValue)】https://vip.kingdee.com/article/127710528226504960













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.基础资料.过滤

【应用场景】给单据上的基础资料字段,设置额外的过滤条件。【案例演示】给采购订单的供应商字段,设置不同的过滤条件,并观察其影响范围。...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息