スクリプティング:最初構成と後続構成の確認
構成が初期化されているか再構成されているかをテストし、結果に基づいて実行するコードを設定できます。
場合によっては、構成の初期化時や再構成時にのみコードを実行する必要がある場合があります。たとえば、構成の開始時にフィールドをデフォルト値に設定していても、今後の編集中はユーザーの選択をそのままにしたい場合があります。
以下のメソッドは互いに干渉することなく組み合わせることができ、構成可能な製品の柔軟で独自のコード動作につながる可能性があります。
userEdited:フィールドが編集されていないときのみ実行
[構成/再構成] 拡張では、 value と userEdited の 2 つのフィールドプロパティにアクセスできます。value プロパティはフィールドに含まれるデータを保持し、通常はスクリプティング時にアクセスするものですが、userEditedにはエンドユーザーによってフィールドが変更されたかどうかを格納するブール値が含まれています。
これは、ユーザーがフィールドを変更していない場合にのみデフォルト値を書き込むために if ステートメントで使用できます。例:
if (cfgRequest.[fieldVariableName].userEdited == false) {
//code to run
}
構成の初期化時には、すべてのフィールドで userEdited プロパティが false に設定されますが、再構成時には、ユーザーが行った変更に基づいて true に設定されるフィールドもあります。フィールドが編集されたとき、または編集されていないときにのみ動作を発生させたい場合は、次のいずれかのチェックの後に実行するコードを記述します。
lineId パートナーフィールド
または、[拡張の構成/再構成時] スクリプトを 1 つのみチェックし、Salesforce との統合を行う場合は、再構成時に親構成可能製品の見積明細の Salesforce ID のみが [ lineId パートナー] フィールドに入力されます。構成の初期化時には入力されません。
これは、 CPQ 構成が初期化されたときに、構成がまだ保存されていないため、この ID はまだ存在しないためです。CPQ構成が作成され、見積明細エディターが保存された後にのみ、Salesforce で見積明細が作成されます。そのため、[ lineId パートナー] フィールドが存在することがわかったら、現在のセッションが新しい構成ではなく、再構成によるものであることを確認できます。
スクリプト作成者は、初期化または再構成時にのみ実行する必要があるコードをこの値のチェックの下に配置することで、この違いを利用できます。
[構成/再構成] 拡張でフィールドを参照する方法は次のとおりです。
cfgRequest.partner.quote.lineId.value;
構成が初期化されたときにのみ動作が発生する場合は、次のチェックを追加できます。
if (cfgRequest.partner.quote.lineId.value == null) {
//code to run
return cfgRequest;
}
チェックに return cfgRequest; 行を追加すると、行 ID のチェック後のコードが実行されなくなります。
同様に、構成が再構成された場合にのみ動作が発生する場合は、逆チェックを追加します。
if (cfgRequest.partner.quote.lineId.value != null) {
//code to run
return cfgRequest;
}
パートナーフィールドの詳細については、「 CPQ フィールド、システムフィールド、およびパートナーフィールド」を参照してください。
isInitial:テキストフィールドの作成
(Salesforce がコンフィギュレーターのエントリーポイントとして使用されているかどうかに関係なく) 区別が存在することを保証するもう 1 つの方法は、現在の構成が初期化によるものか再構成によるものかを確認するフィールドを作成することです。
変数名 isInitial を使用してテキストフィールドを作成します。フィールドを詳細計画に関連付けます。次に、[拡張の構成/再構成時 (On Configure/Reconfigure enrichment)] で、次の行を追加します。
if (cfgRequest.isInitial.value === "Yes" || cfgRequest.isInitial.value === "No") {
cfgRequest.isInitial.set("value","No");
}
else
{
c fgRequest.isInitial.set("value","Yes");
}
初期化時には、 isInitial フィールドは空白になります。したがって、スクリプトは else 節で isInitial の値を Yes に設定します。
最初の再構成では、 isInitial は [はい] になります。したがって、スクリプトは if 節で isInitial の値を No に設定します。
その後の再構成ごとに、 isInitial は [いいえ] になり、いいえのままになります。
この方法には、QLE 全体を保存する必要がないという追加の利点があります 初期化と再構成を区別するために、SFDC で。このメソッドは、ユーザーがコンフィギュレーターに 2 回目に入るとすぐに検出します。
この方法には、初期化または再構成時に特にルールを起動させるなど、新しいフィールドをルールの条件として参照する機能も含まれています。動作が構成/再構成時スクリプトにのみ存在する必要はありません。ただし、エンドユーザーの観点から構成エクスペリエンスを類似に保つには、初期化と再構成の間に動作の違いが多すぎないように注意する必要があります。