案例一:计划订单A下的物料基础资料B,物料基础资料B下的物料分组字段C(分组字段本质上也是基础资料字段)。
套打物料分组字段C的编码和名称。
套打名称:物料编码的物料分组字段(基础资料字段)的取值顺序,先名称属性,无名称属性则取编码属性
套打编码:物料分组为基础资料只能取名称,那么需要利用基础资料属性绑定对应分组字段的编码属性
效果
当你要套打案例中的C基础资料的编码,那么必须要通过基础资料属性进行相关取值
案例二,使用python脚本对嵌套基础资料进行排序 【套打】修改套打数据行中分组的输出顺序
在某些特殊场景或历史版本不兼容的情况下需要使用插件排序,python插件排序针对嵌套的基础资料排序问题
按照物料分组进行排序。
<1>对物料分组字段排序,等价于对名称排序;(名称重复问题,多语言处理问题)
<2>对分组编码排序,等价于对基础资料编码排序
对物料分组的脚本和效果,日志分析
from System import *
def OnPrepareNotePrintData(e):
strBuild = '';
if e.DataSourceId.Equals("FBillHead",StringComparison.OrdinalIgnoreCase):
tempList = sorted(e.DataObjects,key =lambda x:(x["FMaterialId_FMaterialGroup"]),reverse=True);
for index in range(len(tempList)):
x= tempList[index];
strBuild +="row" + str(index);
if x['FMaterialId_FMaterialGroup'] != None:
strBuild +=" ToString:"+x['FMaterialId_FMaterialGroup'].ToString()+" str"+str(x['FMaterialId_FMaterialGroup']);
strBuild += "\r\n";
e.DataObjects[index] = tempList[index];
this.View.ShowMessage(strBuild);
更正确的做法,使用编码排序(同时解决名称在部分语言下重复的问题)
推荐阅读