0

私はSalesforceを初めて使用し、基本的にフィールドを更新し、新しい商談が追加されるたびに新しい商談所有者を作成するトリガーを作成しようとしています。

わかりやすくするために、以下にコードを添付しました。

 trigger trig_Opportunity_CreateOppOwner on Opportunity (before insert, before update) {
     //Opportunity OppOwner = null;
     List<id>OppsID = new List<id>(); //Get the id of all new Opportunities owners

     for (Opportunity Opp : Trigger.new) { //If a new Opportunity is added, then create new OppOwner, if not, then don't add.
         OppsId.add(Opp.ID); //adds all new Opportunities Id's
     }

     List<Opportunity>OppToUpdate = [SELECT Id,
                                            Name,
                                            Owner__c,
                                            OppOwner,
                                     FROM Opportunity
                                     WHERE Id IN: Opp.ID // Select Id, OpportunityName,
                                    ];

     if Trigger.oldMap.get(opp.id).Owner__c != Trigger.oldMap.get(OppToUpdate.id).Owner__c // verify that if previous Opportunity has a matching owner.
        OppsId.add(Opp.ID); //populates new oppowner with ID's of all owners.

これは基本的に私がやろうとしていることです: Trigger(Before Update, Before Insert){

  1. トリガーされた機会をすべて取得します。
  2. 古い商談に一致する所有者がすでに存在するかどうかを確認します。
  3. 一致する所有者でない場合は、商談フィールドを更新して、商談を更新します。

ステップ 2 からステップ 3 に進む方法がわかりません。

4

1 に答える 1

0

あなたが提供したコードでは、それがどこで終了したのか明確ではありません. すべてのコードを投稿していただけますか? そうでなく、投稿したコードがすべてあなたのコードである場合、私の観点からは、このコードは何もしません。まったく何もしません。

なんで?

  • 検証エラーなし
  • DML操作なし

       trigger trig_Opportunity_CreateOppOwner on Opportunity (before insert, before update) {
     //Opportunity OppOwner = null;
    /* 
         List<id>OppsID = new List<id>(); //Get the id of all new Opportunities owners
         for (Opportunity Opp : Trigger.new) { //If a new Opportunity is added, then    create new OppOwner, if not, then don't add.
             OppsId.add(Opp.ID); //adds all new Opportunities Id's
         }
    */
         // 3 started lines might be replaced by the following one
         List<id>OppsID = Trigger.newMap.getKeys();
        //but the following code perform select on Opportunity object and return the same list as Trigger.new
        // OppToUpdate == Trigger.new 
        // What for? May be you should work with this part on "after insert/update"
         List<Opportunity>OppToUpdate = [SELECT Id,
                                            Name,
                                            Owner__c,
                                            OppOwner,
                                     FROM Opportunity
                                     //WHERE Id IN: Opp.ID // Opp - isn't exist and it  isn't list/set of id
                                     WHERE Id IN OppsId // I guess you meant this
                                    ];
         // 1.variable "opp" isn't exist here
         // 2. "OppToUpdate.id" - you can't use list in this manner
         if Trigger.oldMap.get(opp.id).Owner__c != Trigger.oldMap.get(OppToUpdate.id).Owner__c // verify that if previous Opportunity has a matching owner.
        OppsId.add(Opp.ID); //populates new oppowner with ID's of all owners.
    
于 2013-05-31T06:01:43.123 に答える