【问题标题】:sales force save dependent objects in one call销售人员一键保存依赖对象
【发布时间】:2013-06-10 13:06:10
【问题描述】:

我正在使用 Salesforce 合作伙伴 WSDL 和 soap api 来将数据上传到 Salesforce 并将其存储在 SF 对象上 我有两个依赖对象,它们有一个子对象的查找字段

当我存储父对象时,我想存储依赖的子对象数据。

如何使用 SOAP api 实现这一点。

提前谢谢..

【问题讨论】:

    标签: php salesforce soap-client


    【解决方案1】:

    您可以在 SOAP 中通过在父对象类型上使用外部 ID 字段来执行此操作,这将让您在一次调用中发送父对象和子对象,并通过外部 Id 字段值自动关联它们。

    这是一个 Java 示例,可一次性创建帐户和相关联系人。联系人通过 extId__c 字段与帐户相关。

    public static void main(String[] args) throws Exception {
    
        // login to salesforce.
        PartnerConnection pc = Connector.newConnection(args[0], args[1]);
    
        // The new Account record we're going to create.
        SObject acc = new SObject();
        acc.setType("Account");
        acc.setField("Name", "My New Account");
        acc.setField("extId__c", UUID.randomUUID().toString());
    
        // The new Contact record we're going to create.
        SObject con = new SObject();
        con.setType("Contact");
        con.setField("FirstName", "Simon");
        con.setField("LastName", "Fell");
        // This Account object we build with the relationship to the account above based
        // on the extId__c field, and then we set it on the contact record
        // this is the standard FK lookup using ExternalIds feature.
        SObject parentAcc = new SObject();
        parentAcc.setType("Account");
        parentAcc.setField("extId__c", acc.getField("extId__c"));
        con.setField("Account", parentAcc);
    
    
        // Now we can insert both records at once
        SaveResult [] sr = pc.create(new SObject [] { acc, con} );
        printSaveResult("Account result", sr[0]);
        printSaveResult("Contact result", sr[1]);
    }
    
    private static void printSaveResult(String label, SaveResult sr) {
        if (sr.isSuccess())
            System.out.println(label + " success recordId is " + sr.getId());
        else 
            System.out.println(label + " failed, reason is " + sr.getErrors()[0].getMessage());
    }
    

    当我运行它时,它会打印出来

    Account result success recordId is 0013000001DFMRxAAP
    Contact result success recordId is 0033000001aEgskAAC
    

    当我登录网络应用程序时,我可以在其相关列表中看到我的新帐户记录和子联系人记录。

    【讨论】:

      【解决方案2】:

      您无法使用 SOAP API 实现此目的,因为使用该 API 您必须首先创建主对象,以便获取 ID 以设置子对象。如果你想在一个事务中创建所有对象,那么你必须expose an Apex method as a SOAP web service 并调用它。

      【讨论】:

      • 对于许多子对象,我的答案仍然适用,但我会注意到下面 superfell 的答案对于单个层次结构来说要优越得多。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 2012-09-12
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多