【问题标题】:Apex trigger to insert record in a related custom object based on insert on contactApex 触发器基于在联系人上插入在相关自定义对象中插入记录
【发布时间】:2017-06-14 08:53:24
【问题描述】:

我有一个名为“联系人关系”的自定义对象,它可以查找联系人,并且我在联系人中添加了一个名为“关系”的复选框类型的自定义字段。 如果关系复选框值为真,我想编写一个触发器,每次在联系人中添加一条记录时,它都会在联系人关系中添加一条记录。 这是我所做的,但它不起作用。

trigger ContactRelationshipTrigger on Contact (after insert) {    
    List<Contact_Relationship__c> crl = new List<Contact_Relationship__c>();
    List<Contact> cl = new List<Contact>();
    for(contact con: trigger.new){
        if(con.Relationship__c == true){
            Contact_Relationship__c cr = new Contact_Relationship__c();
            cr.Contact__c=con.Id;
            cr.Name='Rel to--' + con.Name;
            crl.add(cr);
        }       
    }      
    insert crl;
} 

当我插入新的联系人记录时,不会创建联系人关系记录。

【问题讨论】:

  • 为您的crl 列表添加调试,它是否被填充?

标签: triggers salesforce apex soql sfdc


【解决方案1】:

您的代码对我来说似乎是准确的,因此您应该检查您的触发器是否处于活动状态。在触发器编辑页面上有一个“Is Active”复选框,您可以使用它来停用或激活触发器。确保它已被选中。

此外,联系人姓名是一个复合字段,因此要准确获取姓名,您需要使用

 cr.Name='Rel to--' + con.FirstName +' '+ con.LastName;

【讨论】:

  • 它正在工作,但问题是我在联系关系对象中得到空值而不是名称。问题出在这一行:- cr.Name = 'Rel to--' + con.Name ;
  • 查看已编辑的解决方案,基本上它是一个复合字段,因此您需要使用各个部分
  • 没问题,标记为解决方案?
【解决方案2】:

尝试改变

cr.Contact__c=con.name;

从 con.name 到 con.id 或只是 con;

您似乎只是尝试将包含 mohit 的名称字段设置为联系人对象。

【讨论】:

  • 我已经编辑了这个问题。我按照你的建议做了还是没用。
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
相关资源
最近更新 更多