Salesforce 使用sObject动态更改字段值

Salesforce 使用sObject动态更改字段值,salesforce,apex,Salesforce,Apex,我正在尝试使用sObject在整个组织中动态更改名称字段对象 我曾尝试使用SomeId.getSObjectType().newobject(SomeId)创建sObject,但当我尝试更改名称字段时出现错误 变量不存在:名称 Map idstUpdate=new Map(); //将Id和关联的名称值放入映射中 List sObjectsToUpdate=新列表(); foreach(Id idToUpdate:idToUpdate.keySet){ SObject o1=idToUpdate

我正在尝试使用
sObject
在整个组织中动态更改名称字段对象

我曾尝试使用
SomeId.getSObjectType().newobject(SomeId)
创建sObject,但当我尝试更改名称字段时出现错误

变量不存在:名称

Map idstUpdate=new Map();
//将Id和关联的名称值放入映射中
List sObjectsToUpdate=新列表();
foreach(Id idToUpdate:idToUpdate.keySet){
SObject o1=idToUpdate.getSObjectType().newSObject(idToUpdate);
o1.Name=idstUpdate.get(idToUpdate);
sObjectsToUpdate.add(o1);
}
更新sObjectsToUpdate;
正如我在其他帖子中看到的,这是创建动态更新对象的方法


知道为什么会发生这种情况吗?

并非所有对象都有名称字段,在尝试设置字段之前,您应该检查名称字段是否存在。您还必须使用put方法

Map <String, Schema.SObjectField> fieldMap = o1.getSobjectType().getDescribe().fields.getMap();
if(fieldMap.containsKey('Name')){
    o1.put('Name', 'Test');
}
Map fieldMap=o1.getSobjectType().getDescripte().fields.getMap();
if(fieldMap.containsKey('Name')){
o1.输入(‘名称’、‘测试’);
}

我知道,我只是以该字段为例。p、 s我有一个自定义字段,它放在每个将要使用的对象中。然后您应该检查您的用户/配置文件是否可以通过FLS访问相关字段,但在您的代码中您有o1.Name=…,它应该是o1.put('field_Name___c','Value');。您不能使用点符号直接访问字段,它必须作为地图
Map <String, Schema.SObjectField> fieldMap = o1.getSobjectType().getDescribe().fields.getMap();
if(fieldMap.containsKey('Name')){
    o1.put('Name', 'Test');
}