How to auto populate field value from List collector to String field

MS17
Tera Contributor

Hi All,

In a knowledge form, we have a field called "OpCo (List Collector)", If we have selected any value in the OpCo field (ex: FXE,FXO), this should be populated in the prefix of short description field. I have written onload client script, but instead of choice name, the value is populated, can anyone help me on this? see below images for reference.

Onload Client script:

function onLoad() {
//Type appropriate comment here, and begin script below
var list = g_form.getValue('u_opcom').toString();
alert(list);
var array = list.split(',');
for (var i=0; i < array.length; i++) {
g_form.addInfoMessage("This should be the list collector value " + array[i]);
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', array[i].toString() + ' , ' + shortDesc);
}
}

 

kn.PNG

 

Here 2 and 1 are the choice value of FXE and FXO.

kn1.PNG

Thanks.

 

2 ACCEPTED SOLUTIONS

Gopi Naik1
Kilo Sage

Hi @MS17 ,

 

Create a client callable script include as follows:

 

var GetKbArticles = Class.create();
GetKbArticles.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getWatchList:function(){
var id = this.getParameter('sysparm_sysID');
var watchlist;
var kb=new GlideRecord('kb_knowledge');
if(kb.get(id.toString())){
watchlist=kb.getDisplayValue('u_opcom');
}
return watchlist.toString();
},
type: 'GetKbArticles'
});

 

And call in client script.

 

function onLoad() {
//Type appropriate comment here, and begin script below
if (!g_form.isNewRecord()) {
var arr = [];
var ga = new GlideAjax('GetKbArticles');
ga.addParam('sysparm_name', "getWatchList");
ga.addParam('sysparm_sysID', g_form.getUniqueValue());
ga.getXMLAnswer(function(answer) {
arr = answer.split(',');
for (var i = 0; i < arr.length; i++) {
g_form.addInfoMessage("This should be the list collector value " + arr[i]);
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', arr[i].toString() + ' , ' + shortDesc);
}

});
}
}

 

 

If my solutions helps you to resolve the issue, Please accept solution and Hit "Helpful".

Thanks,
Gopi

View solution in original post

You can use below :

function onLoad() {
    var list = g_form.getValue('u_opcom').toString();
    var shortDesc = g_form.getValue('short_description').split(':');
    if (shortDesc.length > 1)
        shortDesc = shortDesc[1];
    else
        shortDesc = shortDesc[0];

    var op = [];
    var array = list.split(',');
    for (var i = 0; i < array.length; i++) {
        if (array[i] == '1')
            op.push('FXO');
        if (array[i] == '2')
            op.push('FXE');
    }
if(op.length>0)
       g_form.setValue('short_description', op.toString() + ':' + shortDesc); // here : is used to separate OpCo and short description

}
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

View solution in original post

21 REPLIES 21

MS17
Tera Contributor

Hi @Anil Lande,

It is working now! If I have modified the Opco field, it should wipe out the old opco value in short description, it is taking the older value also.

In the below image I have selected FXO,FXE after that I have removed FXE from the field, but it is taking older values also, The short description field should be populated with the value from updated value of OpCo field. Please suggest.

kn3.PNG

Thanks.

I would suggest to use delimiter to separate Short description and OpCo values.

function onLoad() {
//Type appropriate comment here, and begin script below
var list = g_form.getValue('u_opcom').toString();
var shortDesc = g_form.getValue('short_description').split(':');
if(shortDesc.length>1){
shortDesc = shortDesc[1];
alert(list);
var op ='';
var array = list.split(',');
for (var i=0; i < array.length; i++) {
if(array[i]=='1')
   op = op+'FXO, ';
if(array[i]=='2')
   op = op+'FXE,';
}

g_form.setValue('short_description', op +':'+ shortDesc);  // here : is used to separate OpCo and short description
}

 

Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

MS17
Tera Contributor

Hi @Anil Lande,

The above script is not working, not populating opco value in short description field.

Thanks.

Please try below script:

function onLoad() {
    var list = g_form.getValue('u_opcom').toString();
    var shortDesc = g_form.getValue('short_description').split(':');
    if (shortDesc.length > 1)
        shortDesc = shortDesc[1];
    else
        shortDesc = shortDesc[0];

    var op = [];
    var array = list.split(',');
    for (var i = 0; i < array.length; i++) {
        if (array[i] == '1')
            op.push('FXO');
        if (array[i] == '2')
            op.push('FXE');
    }
    g_form.setValue('short_description', op.toString() + ':' + shortDesc); // here : is used to separate OpCo and short description

}

 

 

Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

Hi @MS17 ,

Did you get chance to check update script?

Could you please close this question by marking appropriate response as Helpful and correct solutions.

 

Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande