beatbox:更新Account对象的多个记录的自定义字段

时间:2017-07-30 13:58:20

标签: salesforce beatbox

我正在通过像

这样的词典
  

object_dict = {'姓名':'样本帐户','类型':'帐户','Id':   '00001834fiBkAAO','得分_c':'333'}

并且想要在Account对象中仅更新1个自定义字段('score__c'),但我对以下3件事感到困惑:

  1. 帐号有15个字符,但我有18个字符,显然可能是因为15个字符不能是salesforce追加3个字符的唯一字符。但是beatbox update如何解决这个问题呢?它会更新吗?

  2. 与使用service.upsert命令传递密钥的upsert不同,更新如何工作?它会考虑Name& ID作为复合键&然后更新'score__c'字段?

  3. beatbox如何知道Name,Id& score__c?

1 个答案:

答案 0 :(得分:2)

  1. 18个字符的最后3个字符ID对前一个字符的大写/小写进行编码,因此在不区分大小写的编程语言中也可以比较对象的长ID的等效性。您可以使用您获得的内容,短ID或长ID。 (您的ID长度为16个字符,无效。)

  2. 更新后的对象仅由type和主键id标识。所有其他名称都是更新列。因此,如果您没有更新它,则可以忽略“名称”。

  3. dtto

  4. 修改 解释“你可以使用你得到的,短ID或长ID”
    SFDC上的所有内容都接受短ID或长ID(Web界面,Apex,VisualForce,API,导入数据等)。浏览器中的内部顶点代码和Web URL,视图和报告使用15个字符,因为它保证处理区分大小写。每个输出(如备份,从报告,开发者控制台或Salesforce API导出)都带有18个字符的ID,可以轻松处理不区分大小写,例如通过Excel。

    您可能永远不需要删除或添加最后3个字符。唯一的问题可能是,如果您将从浏览器复制/粘贴的ID与导出的数据组合在一起,还有喜欢不区分大小写的搜索或比较的工具,请使用一些方法区分大小写。你也可以获得长ID,例如通过Apex中的函数CASESAFEID()或Beatbox中的SELECT Id from Account WHERE Id = 'short_id...'或Python中的函数case_safe_id离线,但我重申我真的从未需要它。 (除了更准确的猜测,字符串可能是有效的Salesforce ID:未找到ID或Salesforce报告的无效ID)安全只是区分大小写搜索包含在中的短ID Excel中的工作表,因为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 Salesforce recommends that you use the 18-character ID.(开发者指南)

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