我为BAccount DAC创建了一个新的自定义绑定字段UsrMatchCode
。我的目标是创建一个字段,我可以从Web服务调用中查询以识别潜在的"重复的客户记录。我的计划是将以下内容连接成一个9个字符的计算字段:
但是在我能够做到这一点之前,在更新/保存现有记录时,我很难获得PXFormula的值。奇怪的是,它确实输出了新记录的值。 见截图。
我已将PXFormula简化为仅使用常量来排除导致问题的其他字段。
public class BAccountExt : PXCacheExtension<PX.Objects.CR.BAccount>
{
private class index1 : Constant<int>
{
public index1() : base(0) { }
}
private class length5 : Constant<int>
{
public length5() : base(5) { }
}
private class testString : Constant<string>
{
public testString() : base("123456789") { }
}
#region UsrMatchCode
public abstract class usrMatchCode : IBqlField { }
[PXDBString(9)]
[PXUIField(DisplayName = "Match Code", Enabled = false)]
[PXFormula(typeof(Substring<testString, index1, length5>))]
public virtual string UsrMatchCode { get; set; }
#endregion
}
我觉得我错过了一些明显的东西,但我无法解决这个问题。
答案 0 :(得分:1)
我避免同时使用PXFormula和PXDBxxx类型。
PXDBxxx属性告诉框架您希望将字段值保存到DB并从DB重新加载它的值,而PXFormula告诉框架需要从公式计算字符串值。这两种方法似乎不兼容,因为在将记录持久保存到DB后,该值是否来自DB或来自公式是不明确的。其他属性如PXDefault更适合PXDBxxx类型,因为它只能在初始化时运行。
我建议将PXFormula与未绑定的PXString类型一起使用,或者使用PXDefault而不是PXFormula来初始化PXDBString。