- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-10-2021 07:22 AM
Experts,
I'm facing an issue with the integer type field type which is removing the leading zeroes of a number.
Example, if I enter 004498, it is getting updated as "4498".
I have to do an action that would need to increment this value using a server side script. So, if a run a BR, this value should be updated as "004499" and not "4499".
Any suggestions or alternatives?
- Nani
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-11-2021 01:15 AM
Hi,
this should work fine
var currentValue = "002100";
gs.info("Current Value: " + currentValue);
var zeroArray = [];
for(var i=0;i<currentValue.length;i++){
if(parseInt(currentValue.charAt(i)) == 0){
zeroArray.push(currentValue.charAt(i).toString());
continue;
}
else{
break;
}
}
var number = currentValue.replace(/^0+/, ''); // remove leading zeros
gs.info("Number: " + number);
number = parseInt(number) +1; // increment by 1
var finalValue = zeroArray.toString().replaceAll(',','') + number;
gs.info("Final Value: " + finalValue);
Output:
[0:00:00.084] Script completed in scope global: script
Script execution history and recovery available here
*** Script: Current Value: 002100
*** Script: Number: 2100
*** Script: Final Value: 002101
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-10-2021 10:46 PM
Hi,
you need to get all the leading zeros
in your case for 010000 it is 1 zero
so after incrementing you can add only that 1 zero in the leading string
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-10-2021 11:03 PM
Okay... That makes sense... Can you help me with the procedure to fetch the leading zeroes in the script? Would be helpful for my reference!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-10-2021 11:24 PM
Hi,
something like this
var currentValue = current.u_field.toString();
var zeroArray = [];
for(var i=0;i<currentValue.length;i++){
if(parseInt(currentValue.charAt(i)) == 0){
zeroArray.push(currentValue.charAt(i).toString());
}
}
var number = currentValue.replace(/^0+/, ''); // remove leading zeros
number = parseInt(number) +1; // increment by 1
var finalValue = zeroArray.toString() + number; // join the zero array and the number
current.u_field = finalValue;
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-11-2021 12:12 AM
var currentValue = "002100";
gs.print("Current Value: " + currentValue);
var zeroArray = [];
for(var i=0;i<currentValue.length;i++){
if(parseInt(currentValue.charAt(i)) == 0){
zeroArray.push(currentValue.charAt(i).toString());
}
}
var number = currentValue.replace(/^0+/, ''); // remove leading zeros
gs.print("Number: " + number);
number = parseInt(number) +1; // increment by 1
var finalValue = zeroArray.toString() + number; // join the zero array and the number
gs.print("Final Value: " + finalValue);
/*Output a follows
*** Script: Current Value: 002100
*** Script: Number: 2100
*** Script: Final Value: 0,0,0,02101
*/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-11-2021 12:26 AM
Hi,
make this change and it work fine
var finalValue = zeroArray.toString().replaceAll(',','') + number; // join the zero array and the number
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader