How to get the length of the string field auto populated on another field and shown in list view without saving the form?

tyagisu
Mega Expert

Hi,

I need the list of managed document records where the length of the filename equals exactly 100 characters. So, I created a field "Length of file" on Revision table and captured the length of the file name in this field which is working fine as I used onload Client script. But I don't want to open each record and save it in order to appear on the list view.

I tried using fix script and before query business rule but none of them is working as expected.

Here is the code I used for Fix script

var gr = new GlideRecord("dms_document_revision");
var qry = 'attachment.file_nameISNOTEMPTY';
gr.addEncodedQuery(qry);
gr.query();
while (gr.next()) {
var field = gr.getDisplayValue('file_name').length;
if(field > 10)
{
  gr.setValue("u_length_of_file", field);
}
gr.updateMultiple();
}

find_real_file.png

1 ACCEPTED SOLUTION

Try this...

var gr = new GlideRecord("dms_document_revision");
gr.addEncodedQuery('attachment.file_nameISNOTEMPTY');
gr.query();
while (gr.next()) {
    var fieldLength = gr.attachment.getValue('file_name').length;
    if (fieldLength > 10) {
        gr.u_length_of_file = fieldLength;
    }
    gr.setWorkflow(false); // Do not run business rules
    gr.autoSysFields(false); // Do not update system fields
    gr.update();
}

View solution in original post

15 REPLIES 15

Mark Stanger
Giga Sage

You're close, but I think something like this might work better.

var gr = new GlideRecord("dms_document_revision");
gr.addEncodedQuery('attachment.file_nameISNOTEMPTY');
gr.query();
while (gr.next()) {
    var fieldLength = gr.attachment.file_name.length;
    if (fieldLength > 10) {
        gr.u_length_of_file = fieldLength;
    }
    gr.setWorkflow(false); // Do not run business rules
    gr.autoSysFields(false); // Do not update system fields
    gr.update();
}

Hi Mark,

 

Thanks for your quick reply. This is fix script didn't work though. I tried both gr.update() and gr.update Mutliple(), none of them actually worked.

var gr = new GlideRecord("dms_document_revision");
gr.addEncodedQuery('attachment.file_nameISNOTEMPTY');
gr.query();
while (gr.next()) {
var fieldLength = gr.attachment.file_name.length;
if (fieldLength > 10) {
gr.u_length_of_file = fieldLength;
}
gr.setWorkflow(false); // Do not run business rules
gr.autoSysFields(false); // Do not update system fields
gr.updateMultiple();
}

 

Thanks,

Su

Try this...

var gr = new GlideRecord("dms_document_revision");
gr.addEncodedQuery('attachment.file_nameISNOTEMPTY');
gr.query();
while (gr.next()) {
    var fieldLength = gr.attachment.getValue('file_name').length;
    if (fieldLength > 10) {
        gr.u_length_of_file = fieldLength;
    }
    gr.setWorkflow(false); // Do not run business rules
    gr.autoSysFields(false); // Do not update system fields
    gr.update();
}

Hi Mark,

Surprisingly, it worked for some of the records only. Most of them were not updated at all. That means we are close 🙂

 

Thanks again!

Su