Triggers 删除联系人中的帐户名时,“联系人”记录应转换回“潜在客户”记录

Triggers 删除联系人中的帐户名时,“联系人”记录应转换回“潜在客户”记录,triggers,salesforce,apex-code,soql,Triggers,Salesforce,Apex Code,Soql,每当联系人记录中的帐户发生更改时,该联系人应转换回潜在客户。我有从联系人到潜在客户的映射字段。这可能吗?如何做到这一点 我试图通过写一个触发器来实现: trigger insertLead on Contact (before update,before delete) { Set<Id> aId = new Set<Id>(); Lead myLead = new Lead(); for (Contact opp : Trigger.new )

每当联系人记录中的帐户发生更改时,该联系人应转换回潜在客户。我有从联系人到潜在客户的映射字段。这可能吗?如何做到这一点

我试图通过写一个触发器来实现:

trigger insertLead on Contact (before update,before delete) {
    Set<Id> aId = new Set<Id>();
    Lead myLead = new Lead();

    for (Contact opp : Trigger.new ) {
        aId.add(opp.AccountId);
        List<Account> acc = [select Name from Account where Id in:aId];
        List<Contact> con = [select LastName,FirstName from Contact where accountId = :aId];

        for(Account a: acc){
            myLead.Company = a.Name;
        }

        for(Contact c: con)
        {
            myLead.LastName = c.LastName;
            myLead.FirstName = c.FirstName;
        }
    insert myLead;
}
这就是错误:

错误:Apex触发器insertLead导致意外异常, 请与管理员联系:insertLead:执行BeforeUpdate 原因:System.DmlException:插入失败。第一个例外 在第0行;第一个错误:必填字段\缺失,必填字段 缺少:[Company]:[Company]:Trigger.insertLead:第15行第1列


我已经检查过了,你的扳机可以很好地更新联系人。 若要删除,请添加以下条件

trigger insertLead on Contact (before update,before delete) {
    Set<Id> aId = new Set<Id>();
    Lead myLead = new Lead();
    if (Trigger.isUpdate)
    {
    for (Contact opp : Trigger.new ) {
        aId.add(opp.AccountId);
        List<Account> acc = [select Name from Account where Id in:aId];
        List<Contact> con = [select LastName,FirstName from Contact where AccountId = :aId];

        for(Account a: acc){
            myLead.Company = a.Name;
        }

        for(Contact c: con)
        {
            myLead.LastName = c.LastName;
            myLead.FirstName = c.FirstName;
        }
        insert myLead;
    }
    else if(if (Trigger.isDelete)
    {
        for (Contact opp : Trigger.old ) {
            aId.add(opp.AccountId);
            List<Account> acc = [select Name from Account where Id in:aId];
            List<Contact> con = [select LastName,FirstName from Contact where AccountId = :aId];

            for(Account a: acc){
                myLead.Company = a.Name;
            }

            for(Contact c: con)
            {
                myLead.LastName = c.LastName;
                myLead.FirstName = c.FirstName;
            }
            insert myLead;
        }
    }
}
问候,

纳文

SSE