Salesforce beatbox:更新帐户对象中多条记录的自定义字段

Salesforce beatbox:更新帐户对象中多条记录的自定义字段,salesforce,beatbox,Salesforce,Beatbox,我正在通过类似的考试 object_dict={'Name':'Sample Account','Type':'Account','Id': '00001834fiBkAAO','score_u_c':'333'} 我只想在Account对象上更新一个自定义字段(“score__c”),但我对以下三件事感到困惑: 帐户Id有15个字符,但我有18个字符,显然可能是因为15个字符不能是salesforce唯一的附加3个字符。但是beatbox更新如何处理这个问题呢?它会更新吗 与upsert不同,

我正在通过类似的考试

object_dict={'Name':'Sample Account','Type':'Account','Id': '00001834fiBkAAO','score_u_c':'333'}

我只想在Account对象上更新一个自定义字段(“score__c”),但我对以下三件事感到困惑:

  • 帐户Id有15个字符,但我有18个字符,显然可能是因为15个字符不能是salesforce唯一的附加3个字符。但是beatbox更新如何处理这个问题呢?它会更新吗

  • 与upsert不同,upsert是通过service.upsert命令传递密钥的,更新是如何工作的?是否将名称和ID视为复合键,然后更新“CaseSyxC”字段?

  • beatbox如何知道在姓名、Id和分数中更新哪个字段

  • 18个字符ID中的最后3个字符编码前面字符的大写/小写,因此在不区分大小写的编程语言中,也可以比较对象的长ID是否等效。您可以使用您获得的短ID或长ID(您的ID为16个字符,这是无效的)

  • 更新的对象仅由
    类型
    和主键
    id
    标识。所有其他名称都是更新列。因此,如果你不更新它,你可以忽略“名称”

  • dtto


  • 编辑 解释“你可以使用你得到的,无论是短ID还是长ID”
    SFDC上的所有内容都接受短ID或长ID(web界面、Apex、VisualForce、API、导入数据等)内部Apex代码,浏览器中的web URL、视图和报告使用15个字符,因为保证处理时区分大小写。每个输出(如备份、从报表导出、开发人员控制台或Salesforce API)都有18个字符的ID,可以通过Excel等不区分大小写的方式轻松处理

    您可能永远不需要删除或添加最后3个字符。唯一的问题可能是,如果您将从浏览器复制/粘贴的ID与导出的数据相结合,但是喜欢不区分大小写的搜索或比较的工具也有一些区分大小写的方法。您也可以通过Apex中的函数
    CASESAFEID()
    或Beatbox中的
    SELECT ID from Account WHERE ID='short\u ID…'
    或Python中的函数离线获取长ID,但我重申,我从来都不需要它。(除了更准确地猜测字符串可能是有效的Salesforce ID或不是:找不到ID或Salesforce报告的无效ID)在Excel中简单地区分大小写搜索工作表中包含的短ID是安全的,因为该ID具有以下结构:

    ID structure:
        TTTII0XXXXXXXXXCCC
    TTT = type of object
    II = server instance where the data row was originally created
    0 = it is still guaranteed zero at this position, but can be subject of change
    XXXXXXXXX = ID of the row, jumping, but approximately increasing in a long-term scale
    CCC = encoded case sensitive info
    
    因此,在长ID中搜索的短ID的匹配只可能精确地在开始时进行

    编辑2 (开发者指南)

    如果通过一次调用一起创建多行,则可以创建大量类似的15个字符的ID:
    svc.create(列出200行数据)
    。有趣的是,ID和查找字段区分大小写进行比较,即使是较短的
    SELECT ID,Name FROM Contact,其中AccountId='0010000ID15CHAR'
    ,而文本字段不区分大小写进行比较
    SELECT FirstName FROM Contact,其中LastName='sMiTh'
    。因此,如果你存了一些钱
    “old_id”对于从其他Salesforce数据库迁移的行(必须保存为文本),它们必须保存为18个字符的id

    谢谢。然后我将删除“名称”字段。另外,如果我传递的Id有18个字符,而在salesforce中是15个字符,beatbox如何更新?仅供参考:我正在使用python,所以我认为它确实考虑了大小写敏感性。问题是,如果我截断18个字符中的最后3个字符,则有2个帐户具有相同的15个字符Id。如何处理它?谢谢,我将16个更改为15个。这是一个输入错误。我正在使用excel查看重复项,因此excel可能不区分大小写,或者必须有某种方法将15个字符的Id与18个字符的Id进行比较。在编辑的答案中回答了大约15/18个字符长的Id。更新:我得到了两个帐户,它们的Id相同,但其中一个具有较低的“a”,另一个具有较高的“a”,因此本质上两者都不同Id字段是唯一的。虽然我已经删除了最后3个字符,它似乎工作良好,但我一定会研究你的解决方案。谢谢hynekcer。(y)