因业务需求新增了一张BOS单据,其中涉及到装配工序有两级,需要在选好“一级工序”后,“二级工序”跳出来的是一级工序下的内容,经过咨询分析研究,解决办法如下。
设置过程
在核算项目中原有的工序中先增加“一级工序”
然后,再新增一个核算项目,作为“二级工序”,其中自定义一个“上级工序”的属性,数据来源于一级工序。
维护好二级工序
然后在BOS平台,对单据中“一级工序”和“二级工序”字段的数据来源和过滤条件进行维护。
过滤还可以设置成
x2.fitemid in (select fitemid from t_Item where FItemClassID=3005 and FLevel=2 and FParentID=222952)
3005是核算项目的归类,222952是一级工序的归类
还可以设置成
x2.fitemid in (select fitemid from t_Item_3007 where f_102=GetFldValue(Fbase,1))
效果如下:
两个过滤条件的不同,个人分析可能和ICClassTableInfo表中这几个字段有关。
如果都是从FSRCTableName中过滤的话,就直接写条件就好。如果过滤条件的要素要从另外表取,就需要写相应语句了。
GetFldValue(FBase,1)的作用:
FBase:界面上的基础资料的字段名(表中fkey的值),若随意修改该键值,设置无效;
1:按F7没有值时提示;0:显示所有;
只维护一个核算项目表
除了上面需要两个核算项目表的方法,还有另外一个只要一个核算项目表的方法
就是要在核算项目中设置成这样的效果
但注意,单据字段显示的是最末级,在录入时“测试一级”是不会显示的,只会显示“测试二级”。要显示出来需要做到两步:
一是在t_item中将“测试一级”的Fdetail字段改成1
二是在核算项目表有一个编号,就是t_item的FitemClassID值,将“测试一级”的fitemid、fnumber和Fname及其他需要的字段,insert到“t_item_FitemClassID值”这个表中
这样,单据中就会显示“测试一级”的值了,然后过滤条件参照上面的来写就行了,就是注意数据都是来源同一个核算项目表,FitemClassID要选对。
但这个方法对于后期维护比较麻烦,仅供参考。