Triggers 如何根据手机号码更新自定义对象中的所有者名称

Triggers 如何根据手机号码更新自定义对象中的所有者名称,triggers,salesforce,workflow,formula,Triggers,Salesforce,Workflow,Formula,我需要根据自定义对象中不存在的mobile更新所有者名称 在我拥有的自定义对象中,该字段称为“参考Id”。它包含手机号,手机号已经出现在用户详细信息中。在自定义对象中,我需要根据引用id(名称)更改所有者名称 例如,自定义对象是由我自己创建的,但我将引用id放在我的经理手机上,然后它会自动将潜在客户所有者更改为我的经理而不是我 我试试下面的触发器 trigger Ownerupdate on Broker__c (before insert,before update) { //ins

我需要根据自定义对象中不存在的mobile更新所有者名称

在我拥有的自定义对象中,该字段称为“参考Id”。它包含手机号,手机号已经出现在用户详细信息中。在自定义对象中,我需要根据引用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;
        }
    }
}
在代理上触发所有者更新(插入前、更新前)
{
//实例化集合以保存唯一的部署记录ID
Set deplomentIds=new Set();
for(Broker\uu cs:Trigger.new)
{
deplomentIds.add(s.reflection\u ID\u\c);
}
//实例化映射以将部署记录ID保存到其相应的所有者ID
Map deploymentOwnerMap=新地图([选择Id,Id所在用户的电话:DeplomentID]);
for(Broker\uu cs:Trigger.new)
{
if(s.Owner\uu c==null&&deploymentOwnerMap.containsKey(s.reference\u ID\uu c))
{
s、 Owner\u c=deploymentOwnerMap.get(s.Referral\u ID\u c).OwnerId;
}
}
}
我犯了以下错误
错误:编译错误:无效类型:第11行第62列的引用ID c

错误非常清楚-您正在尝试构建类型映射
ID
引用ID c
<代码>引用\u ID\u c不是类型,而是字段的名称。字段的类型可能是
String
Phone
,无论您在创建字段时选择哪种类型

你还有其他问题。比如说

Set<Id> deplomentIds = new Set<Id>();
    for(Broker__c s : Trigger.new)
    {
        deplomentIds.add(s.Referral_ID__c);
    }
这假设保证有一个用户拥有确切的手机号码。如何处理找不到的转介,或多个用户匹配转介,取决于您

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;
}