即时库存引用批号主档显示供应商批号缓存问题处理原创
13人赞赏了该文章
1,134次浏览
编辑于2022年11月09日 14:10:40
一、【问题现象】
在即时库存明细中新增基础资料属性字段,取批号的供应商批号字段。
在第一次在做采购入库单录入对应批号的供应商批号之后,查询即时库存明细,可以显示出该供应商批号。
再一次做采购入库单录入对应批号的另一个供应商批号之后,即时库存明细中显示的还是之前的供应商批号。这时查询批号主档,供应商批号字段是已经更新的。
二、【原因分析】
即时库存查询中,批号主档作为基础资料已被应用层做了数据缓存,需要通过插件针对对应的批号主档数据清除缓存。
以其他入库单为例,二开保存插件,在保存事务结束后刷新批号主档的缓存。
import clr clr.AddReference("mscorlib") clr.AddReference('System') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.App.Core') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.ServiceHelper') clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.K3.Core') from System import * from System.Collections import * from System.Collections.Generic import * from System import StringComparison from Kingdee.BOS.Log import Logger from Kingdee.BOS import * from Kingdee.BOS.Util import * from Kingdee.BOS.App.Core import * from Kingdee.BOS.App.Data import * from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.ServiceHelper import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.Const import * def EndOperationTransaction(e): lotIds = List[String]() for billObj in e.DataEntitys: entryItems = billObj["STK_MISCELLANEOUSENTRY"] # 单据体实体名 采购入库单:InStockEntry, 其他入库单:STK_MISCELLANEOUSENTRY for entry in entryItems: lotId = Convert.ToString(entry["Lot_Id"]) lotIds.Add(lotId) ClearCacheByPrimaryKeys(this.Context, "BD_BatchMainFile", lotIds) def ClearCacheByPrimaryKeys(ctx, formId, keys): if keys == None or len(keys) == 0: return metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, formId) if metadata == None: return cacheManager = DataEntityCacheManager(ctx, metadata.BusinessInfo.GetDynamicObjectType()) cacheManager.RemoveCacheByPrimaryKeys(keys) CacheUtil.ClearCache(ctx.DBId + formId, CacheRegionConst.BOS_QuickBaseDataCache)
相关参考:
参考代码.rar(0.78KB)
赞 13
13人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读