本文介绍了系统即时库存查询和明细查询的实现方式。即时库存汇总数据查询和即时库存单据列表分别用于查询库存总量和明细。由于库存表由后台维护,BOS设计器仅支持现有字段配置或扩展基础资料属性。增加其他类型字段需通过定时服务或插件维护,但可能影响性能。自定义字段需避免影响库存维度和唯一约束,复杂计算建议通过自定义查询报表实现。
系统的即时库存查询和即时库存明细使用的分别是“即时库存汇总数据查询”和“即时库存”的单据列表,由于即时库存维度固定,且即时库存表的数据都是由库存更新服务后台维护,所以在BOS设计器,仅支持现有字段的配置或者增加现有基础资料属性类的扩展,如果要增加一些其他类型的字段,则需要通过定时服务或者其他单据插件自行维护数据(不建议,会影响系统单据操作的库存更新性能),也可以只增加字段,在查询时通过列表插件维护查询结果的数据,可参考如下方法
即时库存查询使用的是“即时库存汇总数据查询”单据的列表,需要派生标准的单据列表插件Kingdee.K3.SCM.Stock.Business.PlugIn.InvSumQueryList,重写PrePareFilterParameter事件,先调用父类中的标准方法,得到This.TransactionID,然后使用这个ID值作为条件,根据业务需要操作t_stk_invsumquery表中当次查询事务的结果数据
即时库存明细使用的是“即时库存”单据的列表,该单据列表采用临时表模式,需要派生BOS列表插件抽象类AbstractListPlugIn,重写BeforeGetDataForTempTableAccess方法,该方法的参数e.TableName是当次查询结果存储的临时表名,可以在这里对临时表中的数据进行再加工
如果自定义字段的结果需要经过很复杂业务要求,计算过程非常耗时,建议还是通过自定义查询报表来实现,否则可能引起库存查询性能问题
特别需要注意的是增加字段不允许影响库存维度,也不允许修改现有表上的唯一约束
推荐阅读