JavaScriptから参照項目のIDを引数に指定してApexのAPIで参照項目更新をする場合に、
参照なしにする場合になにを指定すれば良いかわからずにはまった。
参照無しを表す場合のIDは「000000000000000AAA」(「0」15桁+「AAA」)を指定すれば良いそうです。
SampleAPI.cls
/** 呼び出されるサーバ側コード(Apex) */
global class SampleAPI{
/**
* 引数で指定された値を参照項目IDとしてレコードを更新するAPI
* @param id 参照項目を持つ子レコードのID
* @param refId 参照項目のID(親レコードのID)
*/
webService static void updateRefId(String id, String refId){
// 更新対象レコードの取得
ChildObj__c obj = [
Select parentObjId__c
From ChildObj__c
Where Id = :id
];
// 更新内容の設定
obj.parentObjId = refId
update obj;
}
}
sample.js
/** 呼び出し元JavaScript */
sforce.connection.sessionId = "{!$Api.Session_ID}";
// 子レコードIDを現在のページのレコードID、参照項目IDを「参照なし」に指定
var result = sforce.apex.execute("SampleAPI", "updateRefId", {id:"{!Id}", refId:"000000000000000AAA"});
Apex内でIDを指定する場合(IDを引数で受け取らない場合)は、nullを指定するだけで「参照なし」になりました。
Sample.cls
SampleObj__c obj = new SampleObj__c();
obj.parentObjId = null; // 参照なしに設定
insert obj