套打.动态字段.基础资料字段使用指南

新版套打功能:套打支持单据实体动态字段(基于Python表达式进行配置)
小tips:
1.如果要文本和非文本一起显示(如数字、日期),那么应该将非文本转换为文本,其中str()为python函数,.ToString()为C#函数,看情况使用
<1>基础资料默认默认取名称字段(名称-》编码-》内码)

实现细则:平台自动优化,当数据包作为脚本返回时在运行过程中为数据包,控件绑定时自动隐式转换为调用.ToString(),输出为名称字段(名称-》编码-》内码);同时,支持显式调用.ToString()输出;特别的,python脚本调用的str()也将由重写的ToString接管;
性能:ToString()>str()>implicit operator
插件干预时的数据包:

<2>基础资料支持按照字段标识、属性名称取数据,使用更加便捷;支持取内码、编码、名称、嵌套字段

实现细则:对于不太熟悉的用户建议使用字段标识,字段标识能够解决字段位于不同层级的优化处理(如子单据头、单据体);表达式返回类型与数据包中的数据结构相关,如上图中最后一个示例为在采购订单上取“供应商”基础资料的“默认税率”,返回的则为数据表对象,控件绑定时使用隐式转换转为名称显示
<3>判断基础资料是否为空的实现(xxx == null /xxx != null)

实现细则:重点关注基础资料为空时访问基础资料内部变量的问题,使用字段名隐式转换显示的不会中断(显示空),显式显示字段名的会中断异常(若不确定是否一定有值,那么就要做空异常判断,堆栈异常的表达式可以快速定位错误的表达式,进行相关的修复)
在可能为空的基础资料,使用三元运算符输出如(空仅仅只是为了验证表达式执行,原则上输出''空串):
FAssignSupplierId.Id if FAssignSupplierId != null else '空'

<4>判断基础资料字段绑定的字段是否相等(f_base1 == f_base2/f_base1 != f_base2)

实现细则:建议不要自己写判断表达式,应该使用平台重载的相等、不等运算符,处理了基础资料类型是否匹配,是否为空的场景,代码上更加简约;(目前是想不到到有什么需要自己写判断相等表达式的场景,难道有可能针对两者都空,任一为空输出不同的值吗?)
<5>判读单据上的基础资料的嵌套基础资料是否等于某特殊值
使用内码、编码、名称判断值是否匹配,其中名称是具有多语言的特性的,如果名称在不同语言下进行值类型匹配,那么需要考虑公式仅在部分语言下才能匹配成功;
案例分享:采购订单上的供应商的默认税率,如果为13%和6%是增值税专用,1%的普票,其他显示其他;
名称匹配表达式(查找子字符串,值不为空版本):
'增值税' if (FSupplierId.FTaxRateId.FName.find('13%')>=0 or FSupplierId.FTaxRa套打.动态字段.基础资料字段使用指南
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



