如何根据移动设备

时间:2016-02-25 11:29:18

标签: triggers salesforce workflow formula

我需要根据自定义对象中不存在的移动设备更新所有者名称。

在自定义对象中,我将该字段称为"推荐ID"。它包含Mobile no,移动设备尚未出现在用户详细信息中。在自定义对象中,我需要根据引荐ID(名称)更改所有者名称。

例如,自定义对象是由我自己创建的,但是我将引用ID作为我的经理移动,然后它会自动更改主管所有者,而不是我的经理。

我尝试以下触发器

trigger Ownerupdate on Broker__c (before insert,before update) 
{
    //instantiate set to hold unique deployment record ids
    Set<Id> deplomentIds = new Set<Id>();
    for(Broker__c s : Trigger.new)
    {
        deplomentIds.add(s.Referral_ID__c);
    }

    //instantiate map to hold deployment record ids to their corresponding ownerids
    Map<Id, Referral_ID__c> deploymentOwnerMap = new Map<Id, Referral_ID__c>([SELECT Id, Phone FROM User WHERE Id IN: deplomentIds]);

    for (Broker__c s : Trigger.new) 
    {
        if (s.Owner__c == null && deploymentOwnerMap.containsKey(s.Referral_ID__c)) 
        {
            s.Owner__c = deploymentOwnerMap.get(s.Referral_ID__c).OwnerId;
        }
    }
}

我收到以下错误     错误:编译错误:无效类型:第11行第62行的Referral_ID__c

1 个答案:

答案 0 :(得分:0)

错误很明显 - 您正在尝试构建类型为IdReferral_ID__c的地图。 Referral_ID__c不是类型,它是字段的名称。字段的类型可能是StringPhone,无论您在创建字段时选择了哪一个。

您还有其他问题。例如

Set<Id> deplomentIds = new Set<Id>();
    for(Broker__c s : Trigger.new)
    {
        deplomentIds.add(s.Referral_ID__c);
    }

错了。 deplomentIds是一组Id类型,但您尝试向其中添加手机号码。电话号码不是Ids。

您应该做的是查询与您的手机号码相匹配的用户与您的ReferralId,并将其设置为所有者。类似的东西:

for(Broker__c s : Trigger.new)
{
    User owner = [SELECT Id FROM User WHERE MobilePhone = :s.Referral_ID__c LIMIT 1];
    s.Owner__c = owner.Id;
}

这假设确保一个用户拥有该确切的手机号码。如何处理无法找到的推荐或与推荐相匹配的多个用户,由您决定。