How to update Number Field?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-04-2007 12:16 PM
I have created a number field in an existing CI extension table. I went through and added a new category in the number maintenance module and I can get the numbering to work when I want to create a new CI in that table. The problem is that I have several thousand CI's that are already in the table and would like to be able to update the number field for those CI's. Is there any type of Loop script that would do this. I have not had any luck getting anything to work.
- Labels:
-
Service Mapping
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-04-2007 08:11 PM
Not sure if there's an easier way but if you want to leverage the numbering plan, this should do it.
Build this script into a new business rule, changing the first line to define your new table name. Also check the number field name. It doesn't matter where you put the rule since everything is hard-coded for your table and will run on records that do not have a number. I usually just add it to any table as an action_list_contextmenu. Then run it from the list view of the table by right-clicking in the list.
var tblName = 'my_new_table';
var rec = new GlideRecord(tblName);
rec.addQuery('number', '');
rec.query();
while (rec.next()) {
rec.number = getNextObjNumberPadded_temp(tblName);
rec.update();
}
function getNextObjNumberPadded_temp(objType) {
var answer = null;
answer = Packages.com.glide.db.NumberManager.getNumberPrefixed(objType, false);
if (answer != null) {
// get the number of digits
var gr = new GlideRecord("sys_number");
gr.addQuery("category", objType);
gr.query();
if(gr.next()) {
var digits = gr.maximum_digits;
answer = padObjNumber(answer, digits);
return gr.prefix + answer;
}
}
}
function padObjNumber(number, digits) {
var num = number + "";
var num_size = num.length;
if(num_size >= digits) {
return num;
}
// generate pad
var pad = "";
var num_pad = digits - num_size;
for(i = 0; i < num_pad; i++) {
pad += "0";
}
return pad + num;
}