You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apex中插入带ShippingAddress的Contract?解决字段不可写报错

解决Contract.ShippingAddress不可写入的问题

Salesforce中Contract对象的ShippingAddress复合字段是只读的,无法直接通过Apex赋值。要实现和GUI相同的地址设置效果,需要使用对应的拆分地址字段(如ShippingStreet、ShippingCity、ShippingCountry等)来赋值。

修改后的Apex代码

Contract cont = (Contract) parser.readValueAsStrict(Contract.class);

// 直接设置拆分的地址字段,而非ShippingAddress复合对象
cont.ShippingCountry = 'Japan';
cont.ShippingCity = 'Tokyo';
// 按需补充其他地址组件字段
// cont.ShippingStreet = '西新宿1丁目';
// cont.ShippingPostalCode = '163-0590';
// cont.ShippingState = '東京都';

insert cont;

原因说明

从你提供的已创建成功的Contract记录示例可以看到,记录同时包含ShippingAddress复合对象和ShippingStreet、ShippingCity等拆分字段。这是因为Salesforce会自动将拆分字段的数值聚合为复合地址对象,但反向的直接写入复合对象操作是不允许的。GUI创建记录时实际是通过拆分字段录入地址信息,最终生成ShippingAddress复合值,因此Apex代码需要遵循这一逻辑。

内容的提问来源于stack exchange,提问作者tuioku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:10:24