举例背景:单据打印时物料编码与客户物料编码不同,当然可以通过启用客户物料对应表来实现打印客户物料编码,但是当一个单据有多个物料且有的启用客户物料,有的没有启用客户物料时,就会出现打印空白的现象。如果把其他的物料一并放到客户物料对应表中维护一来比较麻烦,二来用户嫌麻烦有抵触心理。
使用字体动态字段需要星空v7.7以上版本。
打开套打方案切换到数据源选项卡,右击明细信息,增加实体动态字段。
新增行,动态字段标识自定义,等下套打方案里需要引用,表达式填写一下。
最后在套打方案单元格属性里选择动态字段,字段标示为上一步自定义的值。
示例表达式:
如果后两位全为数字则打印"TEST-"+物料名称后两位,如果后3位全是数字则打印"TEST-"+物料名称后3位
"TEST-"+FMaterialId.FName[-3:] if FMaterialId.FName[-3:].isalnum() else "TEST-"+FMaterialId.FName[-2:]
两个表达式等效,效果为判断物料名称如果是以“AB”开头,则打印结果为“TEST” + 物料名称的第3-6位字符,如果是以X开头的话,则打印“TT”+ 物料名称的最后三位,否则直接打印物料名称。
"TEST" + FMaterialId.FName[3:6] if FMaterialId.FName[:2] == "AB" else ( "TT" + FMaterialId.FName[-3:] if FMaterialId.FName[:1] == "X" else FMaterialId.FName)
"TEST" + FMaterialId.FName[3:6] if FMaterialId.FName.startswith("AB",0,2) else ( "TT" + FMaterialId.FName[-3:] if FMaterialId.FName.startswith("X",0,1) else FMaterialId.FName)
推荐阅读