Salesforce插入Pedido__c时受限选择列表值无效问题排查
问题排查方案
1. 核对选择列表的API值与显示值
Salesforce选择列表支持显示值和API值分离配置,比如显示值是"Spain",但后台实际识别的API值可能是"ES"这类编码。手动UI操作使用的是显示值,但代码插入必须传入API值才会被系统认可。
- 检查路径:设置 → 对象管理器 → Pedido__c → 字段与关系 → Direccion_entrega__CountryCode__s → 查看每个选项的「API值」列,确认是否与你传入的"Spain"一致。
2. 检查记录类型的选择列表限制
如果Pedido__c启用了记录类型,不同记录类型可能对该选择列表的可用值做了限制:
- 确认代码中插入的Pedido__c记录对应的记录类型,是否在该记录类型配置下,"Spain"属于允许的可选值。
- 检查路径:设置 → 对象管理器 → Pedido__c → 记录类型 → 编辑对应记录类型 → 找到Direccion_entrega__CountryCode__s字段,确认"Spain"在可用值列表中。
3. 排查值的隐形字符或大小写问题
即使肉眼看值是"Spain",也可能存在空格、换行符等隐形字符,或者大小写不匹配(比如实际是"spain"或"Spain "):
- 在代码中添加调试日志,打印值的原始内容和长度:
System.debug('Country Value: [' + sl_fld_core_country__c + '], Length: ' + sl_fld_core_country__c.length()); - 对比选择列表配置中的值,确保完全一致无额外字符。
4. 验证全局值集的配置状态
如果该选择列表使用全局值集,检查值集本身是否有变更:
- 检查路径:设置 → 对象管理器 → 字段与关系 → 全局值集 → 找到对应值集,确认"Spain"处于活跃状态且API值正确。
5. 确认代码中的字段API名拼写
核对代码中赋值的字段是否是Direccion_entrega__CountryCode__s,避免误写为类似Direccion_entrega__Country__c的其他字段:
- 示例代码核对:
Pedido__c newPedido = new Pedido__c(); newPedido.Direccion_entrega__CountryCode__s = address.sl_fld_core_country__c; // 确认字段名拼写完全匹配
6. 检查代码运行上下文的用户权限
手动UI操作的用户权限和代码运行的上下文用户(比如Apex类运行用户、触发器上下文用户)可能不同:
- 检查该用户的Profile:设置 → 用户 → 找到对应用户 → 查看Profile → 字段级安全 → Pedido__c → 确认Direccion_entrega__CountryCode__s字段可编辑,且该Profile下的选择列表可用值包含"Spain"。
内容的提问来源于stack exchange,提问作者Semicolon
相关产品推荐
相关产品推荐

