- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-07-2023 11:37 PM
コミュニティの皆様
いつもお世話になっております。
私が担当しているプロジェクトの要件で、
日付は必須であるが、時刻の入力は任意という記載があります。
DateTime型のフィールドの場合、日付(Date)のみの入力だとエラーが表示されるので、
以下2点いずれかで代替案を検討しています。
実現できる/できないや懸念事項等、知見がある方がいらっしゃれば、ご教示頂きたいです。
①Date型とTime型(仮)2つフィールドを作成し、UI Policyで表示/入力必須を制御
②DateTimeでエラーが出ないよう、スクリプトで制御(→ServiceNowの仕様上、実現不可でしょうか。)
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2023 11:09 PM
BusinessRuleで 調整するにしても、時間を省略する条件はDateTimeだけでは判断できそうになかったので、時間指定なしの項目を作って判断するようにしてみました。
ClientScriptのonChangeで判定して処理しています。u_d や u_c が項目名になっています。状況に合わせて変更してください。
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
if(g_form.getValue('u_c') == '時間指定なし'){
if(/00:00:00$/.test(newValue) == false){
g_form.setValue('u_b',newValue.replace(/[0-9:]+$/,"00:00:00"));
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2023 03:14 AM
Date型とTime型を使うのであれば、UI Policyを使わなくても、DateをDictionaryでMandatoryにして、Timeはそのままで任意になります。
DateTimeのエラーをScriptで制御する簡単な方法は思いつかないです(内部を改造すればできるかも)。時間を00:00:00に調整するくらいならできそうです。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2023 08:20 PM
iwaiさん
ご回答ありがとうございます。
DateとTime両方使う案も挙げましたが、別のスクリプト処理に影響するため、
できれば、DateTimeのまま検討できないか、考えておりますが、
時間を00:00:00に調整する方法として、
試しにBusiness Ruleを作成しましたが、うまく機能しませんでした。
どのようなコーディングであれば、00:00:00に調整可能でしょうか。
(function executeRule(current, previous /*null when async*/) {
// Add your code here
var chkDate = current.getValue('u_assigned_date');
var gdt = new GlideDateTime(chkDate);
gs.info('【No.123】時間なし:' + gdt);
var sdt = gdt.getLocalDate()+'00:00:00';
gs.info('【No.123】時間セット:' + gdt);
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2023 11:09 PM
BusinessRuleで 調整するにしても、時間を省略する条件はDateTimeだけでは判断できそうになかったので、時間指定なしの項目を作って判断するようにしてみました。
ClientScriptのonChangeで判定して処理しています。u_d や u_c が項目名になっています。状況に合わせて変更してください。
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
if(g_form.getValue('u_c') == '時間指定なし'){
if(/00:00:00$/.test(newValue) == false){
g_form.setValue('u_b',newValue.replace(/[0-9:]+$/,"00:00:00"));
}
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2023 04:14 AM
Hi @d-aizawa ,
ここでは日付が重要なので、「日付」フィールドを追加し、Ui ポリシーを使用するか、辞書レベル自体で必須にします。
上記の日付フィールドに加えて、「時間」フィールド タイプの別のフィールドを作成し、これが必須でないことを確認します。
フィールドタイプについてもっと知りたい :