销售订单新变更单的单据类型作前置条件二开试例原创
金蝶云社区-文安根
文安根
62人赞赏了该文章 186次浏览 未经作者许可,禁止转载编辑于2024年03月25日 15:24:21

     销售模块下单据的单据类型字段标识一般都是FBillTypeID,在本身的单据上使用此字段引出编码作比较是没有问题的(比如FBillTypeID.FNumber = 'XSDD01_SYS'),但在销售订单新变更单上却会有问题。以销售订单为例,客户二开了一个页签,使用单据类型动态显示或隐藏此页签,如下图1-1所示:

图1-1


    在销售订单上,这样的配置没有问题,界面上也能动态地根据单据类型显示和隐藏页签,由于销售订单新变更单元数据继承至销售订单元数据,所以销售订单订单上的这个二开实体服务规则也会默认继承到销售订单新变量单上,通常会认为销售订单新变更单上此实体服务规则也会生效且正确运行,实际测试是不行的,为什么呢?下面解释原因:

    单据类型作为特殊字段,一般一个单据最多只会有一个单据类型字段,当然也可以没有,并且继承不了,继承的也是基元数据的单据类型,不是它自己的,从销售订单新变更单的元数据可以看出,出厂默认它有两个单据类型字段,一个是从销售订单继承(继承过来的单据类型不是它自己的,表达式中不能用此字段作条件,且它是隐藏的),一个是新创建的下拉列表(这是它自己的字段,但它不是单据类型,而是下拉列表,新变更单界面上显示的其实是此字段),如下图1-2和图1-3所示:

图1-2


图1-3


    因些这个实体服务规则虽然被继承到销售订单新变更单,但由于是父元数据的单据类型不能在子元数据里使用,导致它的前置条件始终为false,那如何在销售订单新变更单使用单据类型呢?此时只能借用下拉列表的FBillTypeIDX字段,且只能用ID作比较(下拉列表对应的枚举类型里面要先定义个数据源,值为单据类型ID,名称为单据类型名),不能用编码作比较,标准功能会在销售订单新变更单的数据创建时自动给 FBillTypeIDX 字段赋值,以下为销售订单新变更单中与销售订单同等的实体服务规则前置表达式,销售订单新变更单要使用此表达式作前置条件,如下图2-1所示:

图2-1


    另外在系统中也可以看到销售订单新变单是不存在单据类型的,可以认为销售订单新变更单上不存在单据类型字段,这也印证了从销售订单上继承来的FBillTypId字段是不能在销售订单新变更单上用作表达式的,如下图2-2所示:

图2-2


赞 62