批次类添加联系人到帐户

时间:2017-12-22 20:49:51

标签: batch-processing apex

我使用'name = SampleAccountOne'创建了20条记录。我正在尝试创建一个批处理类,它将给20个记录添加一个给定的联系人。坚持语法和去哪里。非常感谢任何正确方向的帮助。

global class UpdateProjectNameBatch implementsDatabase.Batchable<sObject> {
  List<Contact> conList = new conList<Contact>();
  String query = 'Select Id,Name FROM Account WHERE Name = \'SampleAccountOne\''

  global Database.QueryLocator start(Database.BatchableContext bc){
    return Database.getQueryLocator(query);
  }

  global void execute(Database.BatchableContext bc,List<sObject> batch){
    for(Contact c : conList){
        batch.c = 'New Contact Name';
    }
  }

  global void finish(){

  }
}

1 个答案:

答案 0 :(得分:0)

我相信您正在尝试将单个联系人与多个帐户相关联。此功能在Spring 16'中发布,并通过Salesforce Junction对象 - AccountContactRelation实现。

我假设您已经通过UI启用了此功能,并为此联系人声明了父帐户。

我修改了您的代码,将联系人与所有20个帐户相关联。

    global class UpdateProjectNameBatch implements Database.Batchable 
    <sObject> 
     {  ID conId = '0037F00000IfCCKQA3';    //Add the contact Id here
  List<AccountContactRelation> ListInsertion = new List<AccountContactRelation>();
  String query = 'Select Id,Name FROM Account WHERE Name = \'SampleAccountOne\'';

  global Database.QueryLocator start(Database.BatchableContext bc)
  {
    return Database.getQueryLocator(query);
  }

  global void execute(Database.BatchableContext bc,List<Account> batch){

      for (Account a : batch)
      {
          AccountContactRelation   c =  new AccountContactRelation();

          c.AccountId = a.id;
          c.contactId = conId;
          ListInsertion.add(c);
      }


     Insert ListInsertion;

  }

  global void finish(Database.BatchableContext bc)
  {
    //DoNothing.
  }
}