2

这是一个与 APEX 代码相关的问题,特定于 VisualForce 控制器类。

问题
我正在尝试使用已知 AccountId 更新记录。但是,当我在 sObject 声明中设置 ID 时,SalesForce 会将字符串“IAR”附加到 ID 的末尾!

有人可以让我知道我做错了什么吗?如果我以错误的方式解决这个问题,而不是从 quicksave() 或 update() 之外的自定义方法更新记录的正确方法。

描述
所以基本上,用户会带着编码的 id 来到这个页面,它要么有一个 id,要么有一个级别。这是由函数 decode() 处理的,它接受一个字符串;“id”/“级别”。然后,我创建了一个 Account 变量“acc”,在我们使用语句“insert acc;”插入或更新它之前,它将用于存储所有的 Account 信息。因为,我无法使用“acc.id = salesForceID”设置“acc”的 ID,所以我决定在创建“acc”时设置它。以下 APEX 代码在声明“acc”变量时出现在构造函数中。

已通过 URL 变量
/application?id=001Q000000OognA

APEX 控制器类(精简版)

salesForceID = decode('id');
debug1       = 'salesForceID: ' + salesForceID;

acc          = new Account(id = salesForceID);
debug2       = 'Account ID: ' + acc.id;

调试输出
salesForceID: 001Q000000OognA
Account ID: 001Q000000OognAIAR

评论
对于给出的代码的简洁性,我深表歉意,这是出于安全原因。我基本上是在插入/更新/更新它之前尝试设置 acc 的 ID。我感谢任何解释为什么它可以附加“IAR”和/或在给定输入 AccountId 的情况下更新记录的任何替代方法。我明白,如果您将 id 作为 URL 变量传递,SalesForce 将自动为您执行此操作。但是,我向页面传递了多个变量,因为存在三个单独的用例。

谢谢你的帮助。

4

1 回答 1

4

001Q000000OognA 是“标准”的 15 个字符的 Salesforce ID。15 个字符的 ID 区分大小写。

001Q000000OognAIAR 是该 ID 的不区分大小写的 18 个字符版本。

任何一个都可以。您无需担心差异。如果由于某种原因您确实需要在参数等中使用 15 个字符的版本,您可以安全地截断最后 3 位数字。

更多信息在这里: http: //www.salesforce.com/us/developer/docs/api/Content/field_types.htm

于 2011-07-14T04:38:40.533 回答