2011-08-16 7 views
0

Salesforceでは、レコードタイプを使用してオブジェクト定義を拡張できます。 1つのレコードタイプから別のレコードタイプにオブジェクトのグループを移行できるようにすばやく簡単な方法はありますか?私の場合は、学生から学生への学生のライフサイクルを経て、学生を追跡していきます。生徒のライフサイクルのさまざまなフェーズを「レコードタイプ」として把握し、各フェーズごとにカスタムインターフェイス/閲覧権限/ビジネスロジックを作成できるようにすることは意味があります。 Salesforceのこの例のように、カスタムボタンやリンクを作成して、 Salesforce: Getting Started With Buttons and Linksのようにすることができるようにしたいと考えていました。 しかし、Ajaxツールキットを使用してRecordTypeオブジェクトを照会することで、Objectを更新する必要があるRecordTypeIdを見つけることができませんでした。 (私はJavaScriptのほうがはるかに新しいので、途中で邪魔になるかもしれませんが、私が今までに試したことのコードサンプルを投稿するのは喜ばしいことです)。Salesforceのレコードタイプの切り替え

オブジェクトのカスタムレイアウトページ(IdeaExchange: Provide a Means of Changing Record Types)にRecordTypeフィールドを含めることができますが、これは数百人の学生を管理するための合理的なソリューションのようではありません。

ワークフローまたはトリガーを使用することは、明らかにレコードを更新するか、新しいレコードを作成する必要があるため、妥当な解決策ではありません。学生は、更新や新規追加とは無関係に、いつでも移行することができます。

SOは、あなたの問題が関係していた他のことについて言及していますが、私はこれらの分野がかなり自明であると思います。この問題は、異なるレコードタイプ間でプログラム的に移行したいと思うときはいつでも関係します。

答えて

2

おそらくRecordTypeオブジェクト自体ではなく、そのRecordTypeオブジェクトを参照する生徒を追跡するために使用しているオブジェクトのRecordTypeIdフィールドです。あなたがレコードを更新したい場合は、このようRecordTypeIdの値を変更することができ、その後、

SELECT RecordTypeId FROM Student__c WHERE Id = {some id} 

と::例えば、与えられた学生のレコードタイプを検索するために、SOQLは次のようになり

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ノードを検査することができます。