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

如何用Apex插入含不可写入必填字段的Salesforce自定义对象?

问题解决方案

核心原因

公式字段(如Cust_Id__c)是Salesforce自动计算的字段,本身不支持手动写入,直接在Apex中给它赋值会触发Field is not writeable错误。而且公式字段的“必填”要求,是指它的计算结果不能为空,而非需要手动输入值。

解决方法

插入记录时,只需要给公式字段依赖的源字段赋值,Salesforce会自动根据公式逻辑计算出Cust_Id__c的值,无需手动设置该字段:

  1. 先确认Cust_Id__c的公式逻辑,找到它依赖的字段(比如自定义数字字段Cust_Number__c,公式为'Cust: ' & TEXT(Cust_Number__c))。
  2. 修改Apex代码,移除对公式字段的赋值操作,只给依赖字段赋值:
List<CustObj__c> CustList = new List<CustObj__c>();
// 仅给公式依赖的字段赋值,无需设置Cust_Id__c
CustObj__c Item_0 = new CustObj__c(Name__c='TEST1', Cust_Number__c=123);
CustList.add(Item_0); 
CustObj__c Item_1 = new CustObj__c(Name__c='TEST2', Cust_Number__c=456);   
CustList.add(Item_1);
insert CustList;

自定义元数据对象的情况

自定义元数据对象的公式字段同样是自动计算,不支持手动赋值,处理逻辑和普通自定义对象一致:

  • 无需手动设置公式字段的值,只需确保其依赖的字段有合法值,系统会自动计算。
  • 注意:自定义元数据对象不能用普通Apex DML(insert/update)操作,需要通过Metadata.Operations类、Setup界面或Metadata API进行部署维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:01:20