上周客户财务问了我个问题,要查询本月返修的产品入库数量,生产任务单上有订单类型,普通订单,返修,受托加工三个类型,当时过滤了下产品入库单,上面并没有字段能显示出来,看来又要进行单据自定义携带过来啦!
参考我上个帖子,转换流程的基本处理方式,先查出产品入库单,生产任务单的内码,通过内码,在单独转换的表里面,查出所有的单据转换对应表,参考语句如下
SELECT*FROMICClassTypeWHEREFName_CHSLIKE'生产任务单'-----85
SELECT*FROMICClassTypeWHEREFName_CHSLIKE'产品入库'----2
SELECTFTemplateID,*FROMICTranSactionTypeWHEREFNamelike'产品入库'----—————A02
SELECTFTemplateID,*FROMICTranSactionTypeWHEREFNamelike'生产任务单'---——————J01
SELECTFFieldName,*FROMICClassLinkWHEREFSourClassTypeID=-85ANDFDestClassTypeID=-2
同理复制一条类似的转换关系,把携带的字段改成生产类型的内码‘FEntrySelfA0248’,保存测试下,发现转换过来的字段是生产类型的内码,这样肯定不太方便,看来要转换成名称再携带过来了,
找到生产类型的表T_WORKTYPE,根据刚刚查询的内码ID转换成生产类型的名字,把action里面替换成转换的语句(SELECTFNameFROMT_WORKTYPEWHEREFinterid=),再下推尝试下,这样带过来的字段就是返修,普通订单了,这样就好了,转换成sql语句insertinto[dbo].[ICSelbills]values(
'A02','FSCBillInterID','FEntrySelfA0248','0','0','FEntrySelfA0241','FWorkTypeID','ICMO','V1','(SELECTFNameFROMT_WORKTYPEWHEREFinterid=)','0','0')
go
由于这个是单据转换,所以以前做的单据的生产类型都是空,要统一进行更新了,语句为update[dbo].[ICStockBillEntry]setFEntrySelfA0248=(selectfbillno,FWorkTypeID,t__WorkTypeont_=FWorkTypeID)A
whereFICMOBillNo=(selectFInterIDfromICStockBillwhereFTranType=2)
执行后,查询以前的单据,只要是关联任务单的单据,生产类型都显示出来了!
如果学习过我上篇文章的,这个功能还是很容易就做出来了,这个是对字段携带的扩展,学会了这个,不同表之间的携带就很方便啦,该方法试用于金蝶k3,kis旗舰版,kis专业版