【问题标题】:Salesforce Apex not updating recordSalesforce Apex 不更新记录
【发布时间】:2021-10-22 00:14:12
【问题描述】:

我正在尝试在沙盒中对 Salesforce 的客户对象中的字段进行简单更新,但它似乎没有提交。我遵循以下拉取和更新记录的基础知识:

String accountId = '12345'
Account queriedAccount = [SELECT Id, Communication_Bubble__c FROM Account WHERE id = :accountId limit 1];
System.debug(queriedAccount);

// set the field i want to update
queriedAccount.Communication_Bubble__c = 'New Donor';

// update field
update queriedAccount;

// run select again to see if update went through
Account queriedAccount2 = [SELECT Id, Communication_Bubble__c FROM Account WHERE id = :accountId limit 1];
System.debug(queriedAccount2);

运行这段代码后查看日志显示更新已完成,因为我能够提取帐户并显示带有更新字段的帐户。以下是两个调试显示的内容:

Debug1:|Debug|Account:{Id=12345}(通信气泡为空)

Debug2:|Debug|Account:{Id=12345,Communication_Bubble=New Donor}

从上面看来,更新似乎完全按照它应该的方式工作。但是当我进入仪表板中的帐户时,或者在开发者控制台中查询“通信气泡”字段仍然为空白时。

似乎我错过了某种提交,但我无法弄清楚它是什么。

【问题讨论】:

    标签: salesforce apex apex-code


    【解决方案1】:

    这个编译不了,是不是匿名化太多了?

    1. Communication_Bubble - 实际的字段名称可能是 Communication_Bubble__c。
    2. 您在queriedAccount 上查询并设置了一个字段值,但您实际保存的是另一个变量queriedContact?

    您实际上有一些重置值的代码的可能性很小(必须是@future,基于时间的工作流等才能工作,但在第二次查询中没有被检测到......但我的投票是“你刚刚更新了错误记录”

    【讨论】:

    • 那是我的错。你指出的这两个都是我的错误,现在代码在顶点的情况下是正确的。但它仍然没有更新记录。
    • 当你在开发者控制台中运行它时——它是只生成 1 个调试日志还是有更多的“FutureHandler”、“QueueableHandler”(这些可能在后台运行并出于任何原因重置值,例如,如果另一个开发人员在帐户上编写了触发器)。你能在这个字段上设置“字段历史跟踪”吗?如果某事立即重置它可能作为 2 个事件记录在历史记录中的值,则您设置为“新捐赠者”并且其他一些代码将其设置回来
    • 感谢您提供帮助。我能够通过 Process Builder 而不是顶点来更新该字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多