今成様や西尾様、松井様にはお話しておりますが、先日開催された「カスタム関数マスター講座 Vol.4」で、宿題として取り組んだもののうまくいかなかったクライアントスクリプトを投稿させていただきます。
【取り組んだテーマ】
自社の商談タブに設置しているサブフォームの項目「販売金額総額(税別)」で何らかの金額更新があったら、項目「外注総額_」をクライアントスクリプトで入力必須の項目にする。
必須化の条件は、「販売金額総額(税別)」で「0」円よりも大きい数字(=1以上)が反映されたときとする。
(サンドボックス環境の商談タブ画面(データはダミーです))
【参照した情報と記述したコード】
(使用項目とAPI名)
・販売金額総額(税別)Quote_Amount
・外注総額_ TotalOutsourcing1
●テストコードその1
let quote_amount = ZDK.Page.getField('Quote_Amount'); // サブフォームの「販売金額総額(税別)」('Quote_Amount')をquote_amountと定義する
let quote_amount_value = ZDK.Page.getField(); // そのquote_amountの値をquote_amount_valueと定義する
log(quote_amount_value); // quote_amount_valueをログに出す?
let total_outsourcing1 = ZDK.Page.getField('TotalOutsourcing1'); // 外注総額_('TotalOutsourcing1')をtotal_outsourcing1と定義する
quote_amount.setValue('Quote_Amount'); // quote_amountに「販売金額総額(税別)」('Quote_Amount')の値をセットする?
if (quote_amount_value > 0) { // もし、quote_amount_valueに0よりも大きい数字(=1以上)が入っていたら、
total_outsourcing1 = ZDK.Form.Field.Mandate('TotalOutsourcing1'); // total_outsourcing1を入力必須項目とする
total_outsourcing1.showError("「外注総額_は必須です。発生しない場合は0を入力してください"); // さらにtotal_outsourcing1にエラーメッセージを出す
} else { // もし、quote_amount_fieldに0よりも大きい数字が入っていなければ(=0)、
ZDK.Client.showMessage("見積書を作成する場合は「商談から見積書を作成する」ボタンをクリックしてください", { type: "info" }); // 画面に情報メッセージを出す ※本当は「何もしない」という処理を設定したい。
}
●テストコードその2
var quote_amount_field = ZDK.Page.getField("quote_amount"); // サブフォームの「販売金額総額(税別)」("quote_amount")をquote_amount_fieldと定義する
quote_amount_field.setValue("quote_amount"); // quote_amount_fieldには、サブフォームの「販売金額総額(税別)」("quote_amount")の値を入れる
var total_outsourcing1_field = ZDK.Page.getField("TotalOutsourcing1"); // 「外注総額_」("TotalOutsourcing1")をtotal_outsourcing1_fieldと定義する
if (quote_amount_field > 0) { // もし、quote_amount_fieldに0よりも大きい数字(=1以上)が入っていたら、
total_outsourcing1_field = ZDK.Form.Field.Mandate('TotalOutsourcing1'); // total_outsourcing1_fieldを入力必須項目とする
total_outsourcing1_field.showError("「外注総額_は必須です。発生しない場合は0を入力してください"); // さらにtotal_outsourcing1_fieldにエラーメッセージを出す
} else { // もし、quote_amount_fieldに0よりも大きい数字が入っていなければ(=0)、
ZDK.Client.showMessage("見積書を作成する場合は「商談から見積書を作成する」ボタンをクリックしてください", { type: "info" }); // 画面に情報メッセージを出す ※本当は「何もしない」という処理を設定したい。
}
(クライアントスクリプトのエディター画面)
*テストコードを2種類記述していますが、一方をコメントアウトして、それぞれでプレビューして挙動を確認しました。
*なお、岸本様のサンプルに「サブフォームの総額は項目変更の処理ができないため、ページが変わったらの条件で指定」との記載があったため、それに従い「ページの処理」に対して設定しています。(編集画面でのonChange)
【結果】
エディターツール上でエラーはカウントされないが、特に挙動もしない。
----------------------------
以上でございます。
Javascript未経験であるため、まずvarやletの使い分けなども理解できておらず、コメントで書き足しているコードの解釈なども誤っている箇所があるかと存じますが、挙動しない要因がどこにありそうか、ご意見をいただけますと幸いです。