Acumatica选择器遇重复EIN值无法返回正确ID的解决方法
解决Acumatica选择器返回重复替代键记录ID错误的问题
问题核心:数据表中存在EIN(替代键)相同但主键ID不同的有效记录,当前选择器无论选择哪条,始终返回第一条记录的ID——原因是选择器依赖重复的EIN作为替代键进行匹配,导致Acumatica无法区分不同记录。
修改方案
调整选择器配置,明确主键匹配规则,并在下拉列表中显示唯一标识字段,确保选择时能区分并匹配正确记录:
- 在选择器的显示字段中添加主键
xTACEntityMappingEIN.iD,让用户能直观区分EIN相同的不同记录; - 通过
PrimaryKey属性指定主键为xTACEntityMappingEIN.iD,强制Acumatica使用主键进行记录匹配,避免替代键重复导致的错误。
修改后的代码示例
public abstract class clientEINID : PX.Data.BQL.BqlInt.Field<clientEINID> { } [PXDBInt()] [PXDefault()] [PXUIField(DisplayName = "Client FEIN")] [PXSelector( typeof(Search<xTACEntityMappingEIN.iD, Where<xTACEntityMappingEIN.taxDeptUse, Equal<True>, And<xTACEntityMappingEIN.active, Equal<True>>>>), typeof(xTACEntityMappingEIN.iD), typeof(xTACEntityMappingEIN.eIN), typeof(xTACEntityMappingEIN.commonName), typeof(xTACEntityMappingEIN.entityType), SubstituteKey = typeof(xTACEntityMappingEIN.eIN), PrimaryKey = typeof(xTACEntityMappingEIN.iD) )] public virtual int? ClientEINID { get; set; }
说明
- 显示主键ID后,用户在选择器下拉列表中可以清晰看到每条记录的唯一ID,避免选错;
PrimaryKey属性确保Acumatica在用户选择记录时,以主键ID为依据进行匹配,彻底解决替代键重复导致的ID返回错误问题。
内容的提问来源于stack exchange,提问作者pmfith
相关产品推荐
相关产品推荐

