我最近在salesforce org中激活并配置了人员帐户。我们将在服务控制台中使用它们,并集成Postcode Anywhere以进行地址查找。要在控制台中集成PA,必须通过visualforce页面完成,因为没有侧边栏来加载应用程序。为了解决这个问题,我创建了一个Visualforce页面,其中包含所有帐户记录类型,包括人员帐户,并覆盖了“新”和“编辑”按钮以调用VF页面。
到目前为止一切顺利。现在,在编辑帐户时,一切正常,所有字段都显示,PA工作正常。但是,在创建新的个人帐户时,称呼,名字和姓氏字段不会显示在页面上,因此无法保存记录(因为创建帐户需要姓氏)。
与Salesforce谈过此事(因为这是一个非常基本的问题),他们声称这3个字段没有API字段定义,因此无法通过VF页面调用。这显然是不正确的,因为它们在编辑模式下工作正常(使用标准页面创建了一个人帐户),它们也列在WSDL文件中。
谷歌有很多,我相信问题就在那里,因为isPersonAccount布尔字段没有在创建帐户时设置(在VF中),因此页面不允许名称字段呈现。
所以关于我的问题(我对VF或控制器没有多少经验),是否有可能在通过VF创建个人账户时使用控制器扩展或类似的东西以某种方式将isPersonAccount字段设置为true。或者可以在将页面呈现给用户之前以某种方式保存页面,以便设置字段并然后呈现名称字段?
对于这方面的任何帮助都会受到大力赞赏,因为Salesforce不是非常有用,我不能成为世界上唯一需要通过visualforce页面创建个人帐户的人吗?
答案 0 :(得分:3)
解决方法如下:
控制器代码(部分):
Account acct;
public String salutation {get; set;}
public String fname{get; set;}
public String lname{get; set;}
public PageReference save() {
try {
// check for person account record type
recType = [select id,name,sobjectType,ispersontype from recordType where ispersontype=true and sobjectType='account' limit 1];
if(acct.recordtypeid == recType.id) {
acct.Salutation=salutation;
acct.FirstName=fname;
acct.LastName=lname;
insert(acct);
PageReference newPage = New PageReference('/'+acct.id);
newPage.setRedirect(true);
return newPage;
}
else {
insert(acct);
PageReference newPage = New PageReference('/'+acct.id);
newPage.setRedirect(true);
return newPage;
}
}
catch(System.DMLException e) {
ApexPages.addMessages(e);
return null;
}
return null;
}
Visualforce代码(部分):
<apex:pageblocksectionitem >
<apex:outputlabel value="First Name"/>
<apex:outputpanel >
<apex:inputText value="{!salutation}" id="personSalutation"/>
<apex:inputText value="{!fname}" id="personFname"/>
</apex:outputpanel>
</apex:pageblocksectionitem>
<apex:pageBlockSectionItem>
<apex:outputLabel value="Last Name" for="personLname"></apex:outputLabel>
<apex:inputText value="{!lname}" id="personLname"/>
</apex:pageBlockSectionItem>
答案 1 :(得分:2)
您当然可以使用控制器扩展来解决此问题。我们的想法是通过 apex:inputText 为VisualForce页面提供所需的任何其他字段。然后取出字段的值并在保存时将它们写入对象。
由于您现在无需依赖标准控制器来渲染字段,因此您无需显式设置isPersonAccount字段。