How to make multiple field references

Arthur Sanchez
Giga Guru

Captura de tela 2024-04-18 151711.pngThe Area field has the options:

ti and seg: IT in the field system: APP, BRM, CAPTA, GPP

SEG in the system field: SMS, IMS, ACS

 

Now the problem is, I need to reference it multiple times, so when the Area field is selected the following are presented in the Service Type field:

 

TI

  1. Configuration
  2. Maintenance
  3. Customization
  4. Installation
  5. Consulting
  6. Backup and Recovery
  7. Training
  8. Request

 

SEG

  1. Configuration
  2. Maintenance
  3. Backup and Recovery
  4. Training
  5. Request
  6. Incident

some fields are repeated and so I am unable to reference them, the first reference I did this way

Captura de tela 2024-04-18 152520.png

 

1 ACCEPTED SOLUTION

Start with creating a new Script Include; for that open module "System Definition ↳ Script Includes":

6.png

 Make sure there is no script include named "Tickets" already (in scope Tickets Register):

7.png

Start the creation of a new record by clicking New.

In the new Script Include record set fields:

  • Name to Tickets
  • Script to
    var Tickets = Class.create();
    
    Tickets.prototype = {
    
    	'initialize': function () {
    		this._dependentValue = typeof dependent_value == 'undefined' ? '' : dependent_value;
    		this._sessionLanguage = 'en'; // gs.getSession().getLanguage();
    	},
    
    	'getSericeTypesForArea': function () {
    		return this._getChoiceList();
    	},
    
    	'type': 'Tickets',
    
    	'_addRecordToChoice': function (glideChoiceList, record) {
    		glideChoiceList.add(record.value, record.label);
    		return glideChoiceList;
    	},
    
    	'_getChoiceList': function () {
    		return new GlideQuery('sys_choice')
    			.where('name', 'x_1316384_tickets_tickets')
    			.where('element', 'service_type')
    			.where('language', this._sessionLanguage)
    			.where('inactive', false)
    			.where('dependent_value', 'CONTAINS', this._dependentValue)
    			.limit(999)
    			.orderBy('sequence')
    			.select(['label', 'value'])
    			.reduce(this._addRecordToChoice, new GlideChoiceList());
    	},
    
    };​

Save the record.

Open up the dictionary record for field "Service type"; switch view to Advanced, otherwise field Attributes will not be displayed:8.png

Modify field Attributes by adding text:

choice_script=new Tickets().getSericeTypesForArea()

 

 

like this:9.png

If there is some text in there already, place a comma between the existing and the new text.
E.g: if it already contains:

edge_encryption_enabled=true

like this:

10.png

the value for Attributes will become:

edge_encryption_enabled=true,choice_script=new Tickets().getSericeTypesForArea()

like this:11.png

That's all there is to it.

Now for each choice for field "Service Type" you have to update field "Dependent value".

In case of "Service Type" choices that should only show for "Area" ti, the value in "Dependent value" should be ti (not ti,seg).

In case of "Service Type" choices that should only show for "Area" seg, the value in "Dependent value" should be seg (not ti,seg).

In case of "Service Type" choices that should show for both "Area" choices, the value in "Dependent value" should be ti,seg as is now.

Of course should you add more "Area" choices, you would just add it to the "Dependent value" as needed.

 

View solution in original post

15 REPLIES 15

 Hi @Arthur Sanchez  

 

Go to configure dictionary of that field

 

Go to related list - Attribute

Add a new entry

AGLearnNGrow_0-1713536759689.png

 

 

Click new

AGLearnNGrow_1-1713536774089.png

 

AGLearnNGrow_2-1713536793664.png

 

and in value mention the field name not label. 

do this step for 1 and test.

*************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.

Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/atul_grover_lng [ Connect for 1-1 Session]

****************************************************************************************************************

ArthurSanchez_0-1713543311304.png

Was it supposed to stay like this? If it was, it didn't work, and I'm lost, I have no idea how to make a multiple reference

 

Will come back with a step-by-step guide a bit later.

it seems like your idea works

I wouldn't say it is my idea, it is a basic - though kept somewhat secret - functionality of the platform 🙂

What I didn't understand was the paths and how I implement this for my application, if you could explain it step by step I would really appreciate it