Salesforce基于另一个对象将值传递给Multipicklist
好久不见,关于Apex中的多图标列表的快速问题。 条件如下: 1.两个标准对象:任务和帐户,任务链接到帐户。 2.任务中的主题字段包含三个值:A、B、C。 3.此外,帐户中还有一个字段(Multipicklist)包含相同的值a、B、C 每次我都会在某个帐号下创建一个任务,如果我用a输入主题,我希望帐号中的字段可以用a更新; 然后,如果我创建了主题为B的任务,则帐户中的字段应为(a;B) 这是我的代码:Salesforce基于另一个对象将值传递给Multipicklist,salesforce,apex,Salesforce,Apex,好久不见,关于Apex中的多图标列表的快速问题。 条件如下: 1.两个标准对象:任务和帐户,任务链接到帐户。 2.任务中的主题字段包含三个值:A、B、C。 3.此外,帐户中还有一个字段(Multipicklist)包含相同的值a、B、C 每次我都会在某个帐号下创建一个任务,如果我用a输入主题,我希望帐号中的字段可以用a更新; 然后,如果我创建了主题为B的任务,则帐户中的字段应为(a;B) 这是我的代码: if(IsSC && t.Status == PickListValuesS
if(IsSC && t.Status == PickListValuesStandard.Task_Completed){
Account student = new Account(Id = t.WhatId);
student.LatestCompletedActivity__pc = t.Subject;
student.LatestCompletedActivityDate__pc = t.ActivityDate;
if(t.Subject.contains('Post OC Call')){
student.Center_TouchPoints__c += (';Post OC Call');
}
if(t.Subject.contains('Third Week Call')){
student.Center_TouchPoints__c += (';Third Week Call');
}
update student;
}
上面我附加的粗体部分应该像我描述的那样工作,不幸的是,它没有
有人能帮我理解这个场景吗?我怎样才能做到这一点
提前感谢,我刚刚意识到我犯了一个多么大的错误,我的想法是,如果我想更新帐户中的多图标列表,首先,我需要检查它是否为空。以下是最新消息:
if(IsSC && t.Status == PickListValuesStandard.Task_Completed){
//Account student = new Account(Id = t.WhatId);
Account student = [select Center_TouchPoints__c from Account where Id=:t.WhatId];
student.LatestCompletedActivity__pc = t.Subject;
student.LatestCompletedActivityDate__pc = t.ActivityDate;
if(student.Center_TouchPoints__c==null){
if(t.Subject.contains('Post OC Call')){
student.Center_TouchPoints__c = 'Post OC Call;';
}
if(t.Subject.contains('Third Week Call')){
student.Center_TouchPoints__c = 'Third Week Call;';
}
}else if(student.Center_TouchPoints__c.contains ('Post OC Call') && t.Subject.contains('Third Week Call')){
student.Center_TouchPoints__c += ';Third Week Call';
}
update student;
}
不过,如果你们有更好的主意,请开枪打我 我刚刚意识到我犯了一个多么大的错误,我的想法是,如果我想更新帐户中的多图标列表,首先,我需要检查它是否为空。以下是最新消息:
if(IsSC && t.Status == PickListValuesStandard.Task_Completed){
//Account student = new Account(Id = t.WhatId);
Account student = [select Center_TouchPoints__c from Account where Id=:t.WhatId];
student.LatestCompletedActivity__pc = t.Subject;
student.LatestCompletedActivityDate__pc = t.ActivityDate;
if(student.Center_TouchPoints__c==null){
if(t.Subject.contains('Post OC Call')){
student.Center_TouchPoints__c = 'Post OC Call;';
}
if(t.Subject.contains('Third Week Call')){
student.Center_TouchPoints__c = 'Third Week Call;';
}
}else if(student.Center_TouchPoints__c.contains ('Post OC Call') && t.Subject.contains('Third Week Call')){
student.Center_TouchPoints__c += ';Third Week Call';
}
update student;
}
不过,如果你们有更好的主意,请开枪打我 一种可能使这更灵活的方法是循环检查picklist中的所有可用值,查看任务的主题是否包含该picklist值,以及是否将其添加到选定的picklist值中。这是假设选取列表项的名称或标签与输入到任务主题中的值相匹配。这样,您就可以添加不同的条目或更改选择列表值,而无需更改代码 下面是我认为这会是什么样子
if(IsSC && t.Status == PickListValuesStandard.Task_Completed){
Account student = [select Center_TouchPoints__c from Account where Id=:t.WhatId];
student.LatestCompletedActivity__pc = t.Subject;
student.LatestCompletedActivityDate__pc = t.ActivityDate;
Schema.DescribeFieldResult fieldDescribe = account.Center_TouchPoints__c.getDescribe();
//retrieves picklist values
List<Schema.PicklistEntry> picklistVals = fieldResult.getPicklistValues();
String picklistString = '';
for(Schema.PicklistEntry plv : picklistVals){ //Loop through picklist values
if(t.subject.contains(plv.getValue()) && !student.Center_TouchPoints__c.contains(plv.getValue())) {
//If if this picklist value is in the subject and it hasn't been selected already add it.
picklistString += (plv.getValue() + '; ');
}
}
if(student.Center_TouchPoints__c == null)
student.Center_TouchPoints__c = picklistString.substring(1);
else
student.Center_TouchPoints__c += (';' + picklistString);
update student;
}
if(IsSC&t.Status==PickListValuesStandard.Task\u已完成){
帐户学生=[从Id=:t.WhatId]的帐户中选择中心接触点c];
学生最近完成的活动\uuu pc=t.科目;
student.LatestCompletedActivityDate\uu pc=t.ActivityDate;
Schema.DescribeFieldResult FieldDescripte=帐户.Center\u接触点\uuuu c.GetDescripte();
//检索选取列表值
List picklistVals=fieldResult.getPicklistValues();
字符串picklistString='';
对于(Schema.PicklistEntry plv:picklistVals){//通过picklist值循环
if(t.subject.contains(plv.getValue())&&!student.Center\u接触点\u\u c.contains(plv.getValue())){
//如果此选取列表值位于主题中且尚未选定,则添加它。
picklistString+=(plv.getValue()+';');
}
}
if(student.Center\u接触点\u\u c==null)
student.Center\u TouchPoints\uu c=picklistString.substring(1);
其他的
student.Center_TouchPoints_uuc+=(“;”+picklistString);
更新学生;
}
希望这有帮助 一种可能使这更灵活的方法是循环检查picklist中的所有可用值,查看任务的主题是否包含该picklist值,以及是否将其添加到选定的picklist值中。这是假设选取列表项的名称或标签与输入到任务主题中的值相匹配。这样,您就可以添加不同的条目或更改选择列表值,而无需更改代码 下面是我认为这会是什么样子
if(IsSC && t.Status == PickListValuesStandard.Task_Completed){
Account student = [select Center_TouchPoints__c from Account where Id=:t.WhatId];
student.LatestCompletedActivity__pc = t.Subject;
student.LatestCompletedActivityDate__pc = t.ActivityDate;
Schema.DescribeFieldResult fieldDescribe = account.Center_TouchPoints__c.getDescribe();
//retrieves picklist values
List<Schema.PicklistEntry> picklistVals = fieldResult.getPicklistValues();
String picklistString = '';
for(Schema.PicklistEntry plv : picklistVals){ //Loop through picklist values
if(t.subject.contains(plv.getValue()) && !student.Center_TouchPoints__c.contains(plv.getValue())) {
//If if this picklist value is in the subject and it hasn't been selected already add it.
picklistString += (plv.getValue() + '; ');
}
}
if(student.Center_TouchPoints__c == null)
student.Center_TouchPoints__c = picklistString.substring(1);
else
student.Center_TouchPoints__c += (';' + picklistString);
update student;
}
if(IsSC&t.Status==PickListValuesStandard.Task\u已完成){
帐户学生=[从Id=:t.WhatId]的帐户中选择中心接触点c];
学生最近完成的活动\uuu pc=t.科目;
student.LatestCompletedActivityDate\uu pc=t.ActivityDate;
Schema.DescribeFieldResult FieldDescripte=帐户.Center\u接触点\uuuu c.GetDescripte();
//检索选取列表值
List picklistVals=fieldResult.getPicklistValues();
字符串picklistString='';
对于(Schema.PicklistEntry plv:picklistVals){//通过picklist值循环
if(t.subject.contains(plv.getValue())&&!student.Center\u接触点\u\u c.contains(plv.getValue())){
//如果此选取列表值位于主题中且尚未选定,则添加它。
picklistString+=(plv.getValue()+';');
}
}
if(student.Center\u接触点\u\u c==null)
student.Center\u TouchPoints\uu c=picklistString.substring(1);
其他的
student.Center_TouchPoints_uuc+=(“;”+picklistString);
更新学生;
}
希望这有帮助 可爱!绝对应该试一试!谢谢可爱!绝对应该试一试!谢谢