Skip to main content
Nishant Kumar ha fatto una domanda in #Apex
I am getting below exception

Execution of BeforeInsert caused by: System.SObjectException: DML statement cannot operate on trigger.new or trigger.old: Class

I create a class which insert task for account object while creating task for a Lead object, below i hardcoded the account whatId. I created trigger for Task and call CreateTaskInAccount.createTask() from trigger, but its not happening like so.

Please share your feedback.

public class CreateTaskInAccount

{

 public void createTask(List<Task> TaskFromTrigger)

  {

  

    Account targetWhatId= [SELECT a.Id FROM Account a where a.Name='NishantAccount'];

    

    List<Task> tskList= new List<Task>();

    

    for(Task varTask: TaskFromTrigger)

    {

      Task tsk= new Task();

      

      tsk=varTask;

      tsk.WhatId=targetWhatId.Id;

            

                  

      tskList.Add(tsk);

    }

  

    Database.Insert(tskList);

  }

}

------------------------------------

trigger CreateTaskInAccount on Task (before insert, before update) {

  List<Task> lTask = new List<Task>();

  

    

  CreateTaskInAccount objAccount=new CreateTaskInAccount();

  objAccount.createTask(Trigger.new);

}

Tanks in advance
9 risposte
  1. 27 mar 2017, 13:44

    Please use before insert Trigger :-

     

    trigger CreateTaskInAccount on Task (before insert) {

    List<Task> lTask = new List<Task>();

    CreateTaskInAccount objAccount=new CreateTaskInAccount();

    objAccount.createTask(Trigger.new);

    }

    Apex class like below

    public class CreateTaskInAccount

    {

    public void createTask(List<Task> TaskFromTrigger)

    {

    Account targetWhatId= [ SELECT Id FROM Account where Name='NishantAccount' ];

    for(Task varTask: TaskFromTrigger)

    {

    varTask.WhatId=targetWhatId.Id;

    }

    }

    }

    Let us know if this will help you
0/9000