Auto fill a field in user form

Bruce lee
Tera Contributor

 ->In user form there's a string field named Employee number it should auto fill with a prefix and a number in sequential order when a new user is created.

->For example the last existing user  Employee number is GH1000 then when a new user is created its employee number field should filled with GH1001 so it follows  in sequential order whenever a new is created

 

For this I used a business rule but it's but its printing GHundefined please help me to fix this

 

This is the BR I used in sys_user table 

When to run -> Before insert update

(function executeRule(current, previous /*null when async*/ ) {

    if (current.isNewRecord()) {
        var latestNumber = '';
        var existingUsers = new GlideRecord('sys_user');
        existingUsers.addNotNullQuery('employee_number');
        existingUsers.addQuery('employee_number', 'STARTSWITH', 'GH');
        existingUsers.orderByDesc('employee_number');
        existingUsers.setLimit(1);
        existingUsers.query();
        if (existingUsers.next()) {
            var lastNumber = existingUsers.employee_number.substr(2);
            var nextNumber = parseInt(lastNumber, 10) + 1; 
            latestNumber = 'GH' + nextNumber.toString().padStart(lastNumber.length, '0');
        } else {
            latestNumber = 'GH0001';
        }
        gs.log('Latest Employee Number: ' + latestNumber);
        current.setValue('employee_number', latestNumber);

    }

})(current, previous);

 

 
     

 

1 ACCEPTED SOLUTION

@Bruce lee Navigate to the u_number dictionary entry for the sys_user table, and navigate to Default Value tab and remove the text "javascript:global.getNextObjNumberPadded();" from the default value field.

Arun_S1_0-1686923889644.png

 

Create an Before Insert Business rule and write the below script

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	current.u_number=global.getNextObjNumberPadded();

})(current, previous);

Please mark the appropriate response as correct answer and helpful, This may help other community users to follow correct solution.

 

View solution in original post

5 REPLIES 5

@Bruce lee Navigate to the u_number dictionary entry for the sys_user table, and navigate to Default Value tab and remove the text "javascript:global.getNextObjNumberPadded();" from the default value field.

Arun_S1_0-1686923889644.png

 

Create an Before Insert Business rule and write the below script

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	current.u_number=global.getNextObjNumberPadded();

})(current, previous);

Please mark the appropriate response as correct answer and helpful, This may help other community users to follow correct solution.