在Salesforce中的记录类型之间转换

时间:2011-08-16 22:25:39

标签: javascript object types salesforce record

Salesforce允许您使用记录类型扩展对象定义。是否有一种快速简便的方法允许用户将一组对象从一种记录类型转换到另一种记录类型?在我的情况下,我将跟踪学生在从申请人到校友的本科学生生命周期中的进展。对我来说,跟踪学生生命周期的不同阶段作为记录类型是有意义的,这样我就可以为每个阶段创建自定义界面/查看权限/业务逻辑。我希望能够创建一个自定义按钮或链接,按照Salesforce中的示例执行此操作: Salesforce: Getting Started With Buttons and Links。 但是,我没有运气使用Ajax工具包查询RecordType对象,以找出将Object更新到哪个RecordTypeId。 (我对JavaScript很陌生,所以可能只是因为我的经验不足而妨碍了。如果有人问的话,我很乐意发布迄今为止我尝试过的代码示例。)

在IdeaExchange上有人提到你可以在对象的自定义布局页面(IdeaExchange: Provide a Means of Changing Record Types)中包含RecordType字段,但这似乎不是管理数百名学生的合理解决方案。

使用工作流程或触发器似乎不是一个合理的解决方案,因为那些显然需要您更新记录或创建新记录。学生应该能够随时转换,不受更新或新增内容的影响。

当你提到你的问题可能涉及的其他事情时,我喜欢它,但我认为这些领域在这里是非常明显的;您可能希望在不同记录类型之间进行编程转换时,此问题是相关的。

1 个答案:

答案 0 :(得分:2)

您想要的可能不是RecordType对象本身,而是您用于跟踪查看该RecordType对象的学生的对象上的RecordTypeId字段。例如,要查找给定学生的记录类型,SOQL将如下所示:

SELECT RecordTypeId FROM Student__c WHERE Id = {some id}

然后如果你想更新记录,可以改变RecordTypeId的值,如下所示:

var student = new sforce.SObject("Student__c");
student.Id = '{some id}';
student.RecordTypeId = '{new record type id}';
result = sforce.connection.update([student]);

要查找给定对象类型的符合条件的RecordTypeIds,您可以查询RecordType对象并过滤SObjectType列,也可以只调用describeSObject(Student__c)并检查RecordTypeInfos节点结果。