如何在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
相关产品推荐
相关产品推荐

