通过公式来按照不同的价目表询价一例NC产品支持部徐建军xujianjun@ufida.com.cn需求背景:(1)部分存货为辅计量管理,价目表中维护的时候按照辅计量单位来维护(2)部分存货为非辅计量管理,价目表中维护的时候按照主计量单位来维护客户需求:在询价的时候能够直接根据存货是否辅计量管理来自动按照不同的单位询价,换句话说,只要输入存货就能询到价格。需求分析:以前在系统中的处理方式如下:(1)对于按照主计量单位维护价目表的存货,可以直接询价;(2)对于按照辅单位维护价目表的存货,需要将报价计量单位改成辅计量单位才能询价;需求解决方案:(1)因此可以通过写公式将存货的辅计量单位取到单据的报价计量单位上,这样就能寻到价格,可以将存货的辅单位写到销售默认单位上,然后将这个单位取到报价计量单位中。在销售订单单据模板上的存货编码字段写编辑公式如下:cquoteunitid->getColValue(bd_invbasdoc,pk_measdoc1,pk_invbasdoc,cinvbasdocid);cquoteunit->getColValue(bd_measdoc,measname,pk_measdoc,cquoteunitid)(2)此公式写完以后发现辅计量管理的存货询价没有问题,但是对于非辅计量管理的存货却无法询价,原来,我们在给报价计量单位赋值的时候对于非辅计量管理的存货,赋值为空(按照公式取出来的值就是空的),所以需要将上面的公式修改一下,加上一个iff判断,如果是辅计量管理的,取销售默认单位,如果是主计量管理的,取主计量单位,如下:cquoteunitid->iif(getColValue(bd_invbasdoc,pk_measdoc1,pk_invbasdoc,cinvbasdocid)=null,getColValue(bd_invbasdoc,pk_measdoc,pk_invbasdoc,cinvbasdocid),getColValue(bd_invbasdoc,pk_measdoc1,pk_invbasdoc,cinvbasdocid));cquoteunit->iif(getColValue(bd_invbasdoc,pk_measdoc1,pk_invbasdoc,cinvbasdocid)=null,getColValue(bd_measdoc,measname,pk_measdoc,cquoteunitid),getColValue(bd_measdoc,measname,pk_measdoc,cquoteunitid))(3)注意:此公式写完以后保存单据模板的时候可能会报错:“false模板保存失败”,这个报错是因为单据模板上这个字段的公式超长了,可以用下面的脚本来修改一下:Altertablepub_billtemplet_bmodifyeditformulavarchar(2000)