getRefRecord() を使用する場合のベストプラクティスIssue <!-- div.margin { padding: 10px 40px 40px 30px; } table.tocTable { border: 1px solid; border-color: #e0e0e0; background-color: #fff; } .title { color: #d1232b; font-weight: normal; font-size: 28px; } h1 { color: #d1232b; font-weight: normal; font-size: 21px; margin-bottom: 5px; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: #cccccc; } h2 { color: #646464; font-weight: bold; font-size: 18px; } h3 { color: #000000; font-weight: bold; font-size: 16px; } h4 { color: #666666; font-weight: bold; font-size: 15px; } h5 { color: #000000; font-weight: bold; font-size: 13px; } h6 { color: #000000; font-weight: bold; font-size:14px; } ul, ol { margin-left: 0; list-style-position: outside; } --> getRefRecord() は指定された参照要素の GlideRecord オブジェクトを返します。この方法はビジネスルールスクリプトで広く使用されていますが、これを誤って使用すると大きな問題が発生する可能性があります。この記事では、発生する可能性があるいくつかの問題と、それらを回避するためのベストプラクティスについて説明します。 問題 getRefRecord() を使用して取得したレコードの値を出力しても、何も出力されない場合がある。 getRefRecord() を使用して取得したレコードを更新すると、孤立レコードが挿入される。 他のスクリプトで getRefRecord() を使用して取得したレコードの値を使用すると、「未定義」エラーが発生する。 Resolution参照フィールドの値が空の場合、getRefRecord() はエラーをスローせず、GlideRecord オブジェクトを返します。そのため、返されたオブジェクトが有効な GlideRecord オブジェクトかどうかを確認することが重要です。 1 2 3 4 5 6 7 var grUser = current.user.getRefRecord(); if(grUser.isValidRecord()) { // << only perform operations on it if it's a valid record if(grUser.email != current.email_address){ grUser.email = current.email_address; grUser.update(); } } getRefRecord() の後には必ず isValidRecord() チェックが必要です。 想定されるフィールドが子テーブルにある場合は、参照フィールドが親テーブルではなく子テーブルを参照していることを確認してください。そうでない場合、getRefRecord() は親テーブルから GlideRecord オブジェクトを返し、子テーブルに存在するフィールドがないため、「未定義」エラーが発生します。