套打.二开案例.套打分组打印按照分组出现顺序排序

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

套打.二开案例.套打分组打印按照分组出现顺序排序

# 【应用场景】 套打时,默认是按照分组字段做升序或降序排序,如物料编码; 部分场景下按照对应物料对应的序号号排序,利用表单插件做数据排序实现此功能 [套打插件排序](https://vip.kingdee.com/article/171152) # 【案例】 在销售报价单中,实现按照物料的序号列进行分组顺序输出 # 【演示数据】 正常情况下,按照物料编码升序如下图所示 ![Image_20220323141948.webp](/download/010029eca024ccdc4ad6b9dd89e45e0b06d0.webp) # 【脚本插件干预排序】 利用插件记录所在行物料对应的首序号,按照首序号做排序 ![Image_20220323142137.webp](/download/0100a56a2cb2c5ae4bdfbe1dc49799fa1667.webp) ```python from System import * from Kingdee.BOS import * from Kingdee.BOS.DataEntity import * def OnPrepareNotePrintData(e): if e.NotePrintTplId.Equals("e02063aa-b4b6-4095-8a9d-f569bdf3f90a"): if e.DataSourceId.Equals("FQUOTATIONENTRY",StringComparison.OrdinalIgnoreCase): seqKey = "FQUOTATIONENTRY" + "_" + "FSeq"; materialKey = "FMaterialId_FNumber"; if e.DataObjects == None or e.DataObjects.Length <= 0 or not e.DataObjects[0].DynamicObjectType.Properties.ContainsKey(materialKey): return; rowMaterialSeq = {}; for index in range(len(e.DataObjects)): material = e.DataObjects[index][materialKey]; if not rowMaterialSeq.has_key(material): rowMaterialSeq[material] = e.DataObjects[index][seqKey]; tempList = sorted(e.DataObjects,key =lambda x:(rowMaterialSeq[x[materialKey]], x[seqKey])); for index in range(len(tempList)): e.DataObjects[index] = tempList[index]; ``` NotePrintTplId——套打模板ID(e02063aa-b4b6-4095-8a9d-f569bdf3f90a) materialKey——对应模板的分组字段(FMaterialId_FNumber) seqKey——对应单据体的序号字段(FQUOTATIONENTRY_FSeq) # 【演示效果】 按照对应物料的首次出现的顺序排序 ![Image_20220323142513.webp](/download/0100e9a8fd783d3940e284105a4d1e05feef.webp)

套打.二开案例.套打分组打印按照分组出现顺序排序

# 【应用场景】套打时,默认是按照分组字段做升序或降序排序,如物料编码;部分场景下按照对应物料对应的序号号排序,利用表单插件做数据...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息