Salesforce 更新自定义对象时更新多重选取列表

Salesforce 更新自定义对象时更新多重选取列表,salesforce,apex-code,Salesforce,Apex Code,我有自定义对象关键字accountassociation\uu\c。此对象有三个字段 科目\uuu\c主明细表(科目) 关键字\uuu c-主详细信息(关键字) Compositecp\uuu c-文本(255)(外部ID)(区分大小写) 我在帐户中有一个自定义字段 DD\u段\uu c-多选取列表 现在,每当更新KeywordAccountAssociation\uu c时,我想更新DD\u段\uu c的值(插入也可以)。我可以为这个写触发器,但我不知道怎么写?我是Salesforce开发

我有自定义对象
关键字accountassociation\uu\c
。此对象有三个字段

  • 科目\uuu\c
    主明细表(科目)
  • 关键字\uuu c
    -主详细信息(关键字)
  • Compositecp\uuu c
    -文本(255)(外部ID)(区分大小写)
  • 我在帐户中有一个自定义字段

    • DD\u段\uu c
      -多选取列表
    现在,每当更新
    KeywordAccountAssociation\uu c
    时,我想更新
    DD\u段\uu c
    的值(插入也可以)。我可以为这个写触发器,但我不知道怎么写?我是Salesforce开发的新手,我的背景是ruby(所以习惯apex对我来说有点困难)


    KeywordAccountAssociation\uuuu c
    有多行具有相同帐户id的
    Account\uu c
    ,这些帐户id与自定义对象的记录相关
    Keyword\uu c
    。我想获得与一个帐户相关的所有关键字,并在其(帐户的)多选取列表中进行更新。我怎样才能做到这一点?如果您对此有疑问,请务必询问。谢谢

    有一个问题与学习使用触发器有关,可以从

    但要回答实际问题,您基本上需要针对自定义对象构建一个触发器来更新相关帐户。它可能看起来像这样:

    trigger keywordAccountUpdate on KeywordAccountAssociation__c (after insert, after update){
        set<id> = new set<id>();
        for (KeywordAccountAssociation__c a : Trigger.new)
            accountIds.put(a.Account__c);
        map<id,Account> accountMap = new map<id,Account>([select id, DD_Segment__c from Account where id in :accountIds]);
        for (KeywordAccountAssociation__c kaa : Trigger.new){
            if (AccountMap.containskey(kaa.Account__c)){
                Account thisAccount = AccountMap.get(kaa.Account__c);
                String s = thisAccount.DD_Segment__c + ';new value'; // Always add value
                if ((thisAccount.DD_Segment__c).contains('second value')
                    s += ';second value';
                AccountsToUpdate.add(new Account(id=thisAccount.id, DD_Segment__c = s));
            }
        }
    }
    
    在KeywordAccountAssociation\uuu\c上触发keywordAccountUpdate(插入后,更新后){
    集合=新集合();
    for(关键字AccountAssociation\uuu c a:Trigger.new)
    accountIds.put(a.Account\u\c);
    map accountMap=新映射([从帐户中选择id,DD_段c,其中id位于:AccountID]);
    for(关键字accountassociation\uuu\c kaa:Trigger.new){
    if(AccountMap.containskey(kaa.Account_u__c)){
    Account thisAccount=AccountMap.get(kaa.Account\uu\c);
    字符串s=thisAccount.DD_段uu c+';新值;//始终添加值
    if((thisAccount.DD_段__c.)包含('第二个值')
    s+=';第二个值';
    AccountsToUpdate.add(新帐户(id=thisAccount.id,DD_段_uuc=s));
    }
    }
    }
    

    请记住,我没有测试此触发器的结构,我只是随意处理它,所以YMMV。

    当您说要更新/插入
    DD_Segment____c
    的值时,您的意思是要更新该字段中的记录值,还是实际修改页面布局上可供选择的选择列表选项?在哪里我是否从?
    新值
    第二个值
    获取此值。我已将
    关键字ID
    存储在
    关键字帐户关联
    中。