How to create fields from script?

Lorycolombo
Tera Contributor

Hi all, as a requirement I am trying to create a datasource that allows, given a specific template, to create new fields on a table in a scoped application.
everything works correctly except the type, whatever sys_id representing a field type I go to put, it does not populate the type and remains empty.
I have tried both from simple mapping and from script, but the result remains the same.

Below you can find a test performed in dev instance on the incident table:

var gr = new GlideRecord("sys_dictionary");
gr.initialize();
gr.name = "incident";
gr.internal_type = "aab367c1bf3320001875647fcf073909"; //sys_id of integer on sys_glide_object table
gr.column_label = "test field";
gr.element = "u_test_field";
gr.insert();

here the result:

find_real_file.png

1 ACCEPTED SOLUTION

@Lorycolombo  - below is the working example. Where I have created a field on the incident table and its a string field.

new GlideDBUtil.createElement('incident', 'Scripted field', 'u_scripted_field', 'string', '', 'incident', true);
Regards,
Muhammad

View solution in original post

15 REPLIES 15

@Lorycolombo - Also try this approach shared by Yousaf and i think it should also work.

try it like this

gr.internal_type = 'integer'  //for integer type

OR

gr.internal_type = 'string' //for string type

OR

gr.internal_type = 'reference' //for reference type

 

Regards,
Muhammad

Aman Kumar S
Kilo Patron

Hi @Lorycolombo 

I tried below script it works absolutely fine, tested in background script:

var tbl = new GlideRecord('sys_dictionary');
 tbl.name = 'incident';
 tbl.type = 'string';
 tbl.column_label ='TEST';
 tbl.element = 'test';
 tbl.insert();

 

Feel free to mark correct, If I answered your query.

Will be helpful for future visitors looking for similar questions 🙂

 

Best Regards
Aman Kumar

please try to change the type to "integer" you'll see that the type will be string because it is not working but instead is putting "string" type as default value

Hi @Lorycolombo 

Worked for me:

 
var tbl = new GlideRecord('sys_dictionary');
 tbl.name = 'incident';
 tbl.internal_type = 'integer';
 tbl.column_label ='TEST1234';
 tbl.element = 'test1234';
 tbl.insert();
 
find_real_file.png
 
Try "Show XML" on the dictionary form, the display value is Integer and backend value will be integer.
 
 

Feel free to mark correct, If I answered your query.

Will be helpful for future visitors looking for similar questions 🙂

 

 
Best Regards
Aman Kumar

kunal20
Kilo Guru

Hi,

You can use this to create a reference type field.

GlideDBUtil.createElement("incident", "customField","u_customField", 'reference', '', "Incident", true);