【问题标题】:Dynamic change of field value using sObject使用 sObject 动态更改字段值
【发布时间】:2018-10-08 13:23:20
【问题描述】:

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

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

变量不存在:名称

Map<Id, string> idsToUpdate = new Map<Id, string>();

// Put the Id's and associated name values in the map

List<SObject> sObjectsToUpdate = new List<SObject>();

foreach(Id idToUpdate : idsToUpdate.keySet) {
    SObject o1 = idToUpdate.getSObjectType().newSObject(idToUpdate);
    o1.Name = idsToUpdate.get(idToUpdate);
    sObjectsToUpdate.add(o1);
}

update sObjectsToUpdate;

正如我看到的其他帖子,这是创建对象动态更新的方式。

知道为什么会这样吗?

【问题讨论】:

    标签: salesforce apex


    【解决方案1】:

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

    Map <String, Schema.SObjectField> fieldMap = o1.getSobjectType().getDescribe().fields.getMap();
    if(fieldMap.containsKey('Name')){
        o1.put('Name', 'Test');
    }
    

    【讨论】:

    • 我知道,我只是以该字段为例。 p.s 我有一个自定义字段,它放置在将要使用的每个对象中。
    • 然后您应该检查您的用户/个人资料是否可以通过 FLS 访问相关字段,但在您的代码中您有 o1.Name = ...,它应该是 o1.put('Field_Name__c ', '价值');。您不能使用点符号直接访问字段,它必须是地图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2011-09-29
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多