PX Selector验证阶段出现异常问题排查
Acumatica 选择特定选项时触发"Origine cannot be found in the system"错误的处理
问题场景
自定义Originelist字段时使用以下代码,当选择"Boutique""Email""telephone"选项时,系统弹出错误提示"Origine cannot be found in the system",但选择WeChat、WhatsApp等选项时功能正常。
字段定义代码
public class CRMORI: PX.Data.Constant<string> { public CRMORI() : base("CRMORI") { } } #region Originelist [PXDBString(20, IsUnicode = true, InputMask = "")] [PXUIField(DisplayName = "Origine")] [PXSelector(typeof(CSAttributeDetail.valueID),typeof(CSAttributeDetail.description),DescriptionField = typeof(CSAttributeDetail.description),SubstituteKey = typeof(CSAttributeDetail.description),ValidateValue = true)] [PXRestrictor(typeof(Where<CSAttributeDetail.attributeID, Equal<CRMORI>>),null)] [PXCustomizeSelectorColumns(typeof(CSAttributeDetail.attributeID),typeof(CSAttributeDetail.description))] public virtual string Originelist { get; set; } public abstract class originelist : PX.Data.BQL.BqlString.Field<originelist> { } #endregion
排查方向与解决步骤
校验属性关联关系
直接查询CSAttributeDetail表,筛选attributeID = 'CRMORI',确认"Boutique""Email""telephone"对应的记录是否存在,且attributeID字段值与代码中CRMORI常量完全一致(注意大小写、空格等细节,Acumatica数据库查询默认区分大小写)。检查选择器校验逻辑
代码中PXSelector设置了ValidateValue = true,会严格校验选中值是否在查询结果集中。如果这几个选项的valueID/description存在特殊字符、数据被误删或未同步,会触发校验失败。可临时注释该属性测试,若不再报错,说明是数据与校验逻辑不匹配,需调整数据或校验规则。排查自定义逻辑干扰
检查是否有其他自定义代码、插件或扩展修改了CSAttributeDetail的查询范围,比如额外的PXRestrictor或过滤条件,导致这几个选项被排除在选择器结果之外。修复数据或代码匹配问题
- 若数据库中
attributeID与代码常量不匹配,统一修改代码常量或数据库字段值,确保两者完全一致。 - 若数据缺失,重新添加对应的
CSAttributeDetail记录,关联到CRMORI属性下。
- 若数据库中
内容的提问来源于stack exchange,提问作者Xavier LARTEM
相关产品推荐
相关产品推荐

