フォームを開く URL に値を指定して、新しいレコードの既定値を設定します。 既定では、フォームはこれらの値を設定しますが、ユーザーはレコードを保存する前に変更できます。
レコードの列値を設定するパラメーターの受け渡し
ヒント
Xrm.Navigation.
openForm 関数を使用して、パラメーター値をフォームに渡して列の値を設定します。 例については、「 例: Xrm.Navigation.openForm を使用して新しいウィンドウを開く」を参照してください。
URL アドレスを使用して新しいフォームを開く場合は、 extraqs パラメーターに引数を含めて列の値を設定します。 次の要件を満たす必要があります。
-
extraqsパラメーターで渡すパラメーターをエンコードします。 パラメーターのエンコードには encodeURIComponent を使用します。 パラメーター値に=や&などの特殊文字を使用するには、それらを二重エンコードします。 たとえば、nameをA=B&Cに設定するには、extraqs=name%3DA%253DB%2526Cを使用します。 - クエリ文字列の引数の名前は、テーブルの列の名前と一致するか、または列の名前を含むものである。
- 渡す値は有効である必要があります。
- 値にスクリプトは使用できない。
- 無効なパラメーターまたは値を渡そうとすると、エラーが発生します。
- ブール型の列では、
0か1の整数値、またはtrueかfalseのテキスト値を使用して値を設定する。 - DateTime 列では、日付のテキスト値を使用する。
例: 文字列の列の値を設定する
次のサンプルでは、新しいアカウントレコードの名前列に"New Account"という値を設定します。
extraqs パラメーターのエンコードされていない値はname=New Account。
/main.aspx?etn=account&extraqs=name%3DNew%20Account&pagetype=entityrecord
検索列の値の設定
次の表に、5 種類の検索列を示します。 検索列の使用例については、例: 検索列の値を設定する および 例: Xrm.Navigation.openForm を使用して新規ウィンドウを開く を参照してください。
| 検索の種類 | 内容 |
|---|---|
| 単純な検索 | 1 種類のテーブルへの単一参照。 |
| 顧客検索 | アカウントまたは連絡先レコードへの単一参照。 |
| 所有者の検索 | チームまたはシステム ユーザー レコードへの単一参照。 |
| パーティーリスト検索 | 複数のテーブルへの複数の参照。 |
| ルックアップについて | 複数のテーブルへの 1 つの参照。 |
クエリ文字列引数を使用してフォームのルックアップの値を設定する場合は、次のガイドラインが適用されます。
単純な検索の場合は、ルックアップに表示する値とテキストを設定します。 サフィックス
nameと列の名前を使用して、テキストの値を設定します。その他の引数を使用しないでください。
顧客と所有者のルックアップの場合は、単純な参照に対して設定したのと同じ方法で値と名前を設定します。 さらに、サフィックス
typeを使用して、テーブルの種類を指定します。 使用可能な値は、account、contact、systemuser、およびteamです。パーティリストまたは関連検索の値を設定することはできません。
例: 検索列の値を設定する
検索列の値を設定するには、データ値と名前値を使用し、顧客または所有者の検索の場合にのみ、各列の種類値を指定します。 次のサンプルは "Mark Folkerts" という名前のユーザーに所有者列を設定します。
extraqs パラメーターのエンコード前の値は "ownerid={B8C6E040-656E-DF11-B414-00155DB1891A}&owneridname=Mark Folkerts&owneridtype=systemuser" です。
/main.aspx?etn=lead&pagetype=entityrecord&extraqs=ownerid%3D%7bB8C6E040-656E-DF11-B414-00155DB1891A%7d%26owneridname%3DMark%20Folkerts%26owneridtype%3Dsystemuser
次のサンプルでは、取引先責任者列を "Yvonne McKay (sample)" という名前のユーザーに設定します。extraqs パラメーターのエンコード前の値は "primarycontactid={43b58571-eefa-e311-80c1-00155d2a68c4}&primarycontactidname=Yvonne McKay (sample)" です。
/main.aspx?etn=account&pagetype=entityrecord&extraqs=primarycontactid%3D%7B43b58571-eefa-e311-80c1-00155d2a68c4%7D%26primarycontactidname%3DYvonne%20McKay%20(sample)
ヒント
このような単純な検索では、型値を設定する必要はありません。
例: 日付列の値を設定する
次のサンプルでは、新しい営業案件の 予測クローズ日 列を 2011 年 1 月 31 日に設定します。
extraqs パラメーターのエンコードされていない値はestimatedclosedate=01/31/11。
/main.aspx?etn=opportunity&extraqs=estimatedclosedate%3D01%2F31%2F11&pagetype=entityrecord
例: 選択列の値を設定する
選択 列の値を設定するには、オプションに整数値を設定します。 次のサンプルでは、新しい取引先担当者レコードで ロール 列の値を "意思決定者" に設定します。
extraqs パラメーターのエンコードされていない値はaccountrolecode=1。
/main.aspx?etn=contact&extraqs=accountrolecode%3D1&pagetype=entityrecord
例: 選択肢の列の値を設定する
選択肢列の値を設定するには、フォームを開くために使用する URL のオプションの整数値を指定します。 たとえば、 Hobbies 列のオプションを設定するには、 extraqs パラメーターのエンコードされていない値が hobbies=[1,3,4]。
/main.aspx?etn=contact&extraqs=hobbies%3D%5B1%2C3%2C4%5D&pagetype=entityrecord
例: Xrm.Navigation.openForm で新しいウィンドウを開く
次の openNewContactExample 関数は、いくつかの異なる列に既定値を設定し、 Xrm.Navigation.openForm 関数の使用方法を示しています。 これは、 window.open メソッドを使用した前の例と同じです。
/**
* Opens a new contact form with pre-populated default values
* @returns {Promise<void>}
*/
async function openNewContactExample() {
// Define form parameters with default values
const formParameters = {
parentcustomerid: "2878282E-94D6-E111-9B1D-00155D9D700B",
parentcustomeridname: "Contoso",
parentcustomeridtype: "account",
address1_addresstypecode: "3", // Primary address type
description: "Default values for this record were set programmatically.",
donotemail: "1" // Do not allow emails
};
// Configure form options
const entityFormOptions = {
entityName: "contact"
};
try {
const result = await Xrm.Navigation.openForm(entityFormOptions, formParameters);
console.log("Form opened successfully:", result);
} catch (error) {
console.error("Failed to open contact form:", error);
throw error; // Re-throw to allow caller to handle if needed
}
}
例: window.open で新しいウィンドウを開く
次の openNewContactExample 関数は、いくつかの異なる列に既定値を設定し、 encodeURIComponent を使用して extraqs パラメーターの値をエンコードする方法を示しています。
window.open メソッドを使用する場合は、開くウィンドウの機能を制御できます。
/**
* Opens a new contact form in a new window with pre-populated default values
* @returns {Window|null} Reference to the opened window or null if blocked
*/
function openNewContactExample() {
// Define form parameters with default values
const formParameters = {
parentcustomerid: "{F01F3F6D-896E-DF11-B414-00155DB1891A}",
parentcustomeridname: "Contoso",
parentcustomeridtype: "account",
address1_addresstypecode: "3", // Primary address type
description: "Default values for this record were set programmatically.",
donotemail: "1" // Do not allow emails
};
// Build query string using URLSearchParams for better handling
const params = new URLSearchParams(formParameters);
const extraqs = params.toString();
// Configure window features
const windowFeatures = "location=no,menubar=no,status=no,toolbar=no";
// Build the URL
const baseUrl = "/main.aspx";
const url = `${baseUrl}?etn=contact&pagetype=entityrecord&extraqs=${encodeURIComponent(extraqs)}`;
try {
// Open the window
const newWindow = window.open(url, "_blank", windowFeatures, false);
if (!newWindow) {
console.warn("Window opening was blocked by the browser");
return null;
}
return newWindow;
} catch (error) {
console.error("Failed to open contact form window:", error);
throw error;
}
}
関連項目
フォームやビューを URL で開く
openForm
カスタム クエリストリング パラメーターが許可されるフォームの構成