- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-05-2015 07:12 AM
I want to find a Duplicate field on Form in different section using script,
For Example Assigned To field can be added to two sections on incident form, So I want to find How many tables have such duplicate fields added on form through Script.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-07-2015 04:08 AM
Try this script:
var duplicatedViewElementAgg = new GlideAggregate('sys_ui_element');
duplicatedViewElementAgg.addQuery('type', '');
duplicatedViewElementAgg.addQuery('sys_ui_section.name', '!=', '');
duplicatedViewElementAgg.groupBy('element');
duplicatedViewElementAgg.groupBy('sys_ui_section.name');
duplicatedViewElementAgg.groupBy('sys_ui_section.view');
duplicatedViewElementAgg.addAggregate('COUNT');
duplicatedViewElementAgg.addHaving('COUNT', '>', '1');
duplicatedViewElementAgg.query();
while (duplicatedViewElementAgg.next()) {
var tableName = duplicatedViewElementAgg.getValue('sys_ui_section.name');
var view = duplicatedViewElementAgg.getValue('sys_ui_section.view');
var element = duplicatedViewElementAgg.getValue('element');
checkFormsForView(view, tableName, element);
}
function checkFormsForView(view, tableName, element) {
var formGR = new GlideRecord('sys_ui_form');
formGR.addQuery('name', tableName);
formGR.addQuery('view', view);
formGR.addQuery('sys_user', '');
formGR.query();
while (formGR.next()) {
var sectionIDs = getSectionIDs(formGR);
var hasNoSections = sectionIDs.length == 0;
if (hasNoSections)
continue;
var sectionNames = getSectionsNamesForElement(element, sectionIDs)
var isInMultipleSections = sectionNames.length >= 2;
if (isInMultipleSections)
gs.print('DupField: ' + tableName + '.' + element + ', View: ' + view + ' (Sections: ' + sectionNames + ')');
}
}
function getSectionsNamesForElement(element, sectionIDs) {
var sectionGR = new GlideRecord('sys_ui_element');
sectionGR.addQuery('element', element);
sectionGR.addQuery('sys_ui_section', 'IN', sectionIDs);
sectionGR.query();
var captions = [];
while (sectionGR.next()) {
var sectionCaption = sectionGR.sys_ui_section.getDisplayValue();
if (sectionCaption == '')
sectionCaption = 'DEFAULT'
captions.push(sectionCaption);
}
return captions;
}
function getSectionIDs(formGR) {
var sectionIDs = [];
var formSectionGR = new GlideRecord('sys_ui_form_section');
formSectionGR.addQuery('sys_ui_form', formGR.getUniqueValue());
formSectionGR.query();
while (formSectionGR.next()) {
sectionIDs.push(formSectionGR.sys_ui_section + '');
}
return sectionIDs;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-05-2015 10:13 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-07-2015 01:25 AM
I have two scripts
var gr= new GlideRecord('sys_ui_section');
gr.addQuery('name','!=','');
gr.query();
while(gr.next())
{
var tbl = 'incident';
if(gr.name == tbl)
{
gs.print(gr.name +'.'+gr.caption);
}
}
var gr1=new GlideRecord('sys_ui_element');
gr1.addNotNullQuery('element');
gr1.query();
while(gr1.next())
{
gs.print(gr1.element);
}
but I dont know how can I compare sections and reurn values those are matching and duplicate as well
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-07-2015 03:50 AM
You may try pushing the values in two arrays and use arrayutil's intersect method to find the duplicates between the two
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-07-2015 02:14 AM
Also I tried following script
var g1 =new GlideAggregate('sys_ui_element');
g1.addAggregate('COUNT', 'element');
g1.query();
while(g1.next())
{
var element1 = g1.element;
var elementCount = g1.getAggregate('COUNT', 'element');
var na= 1;
var nnn= g1.sys_ui_section;
if( elementCount > na)
{
gs.print("The are currently " + elementCount + " count of " + element1);
}
}
I am getting Count of duplicate fields with name
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-07-2015 04:08 AM
Try this script:
var duplicatedViewElementAgg = new GlideAggregate('sys_ui_element');
duplicatedViewElementAgg.addQuery('type', '');
duplicatedViewElementAgg.addQuery('sys_ui_section.name', '!=', '');
duplicatedViewElementAgg.groupBy('element');
duplicatedViewElementAgg.groupBy('sys_ui_section.name');
duplicatedViewElementAgg.groupBy('sys_ui_section.view');
duplicatedViewElementAgg.addAggregate('COUNT');
duplicatedViewElementAgg.addHaving('COUNT', '>', '1');
duplicatedViewElementAgg.query();
while (duplicatedViewElementAgg.next()) {
var tableName = duplicatedViewElementAgg.getValue('sys_ui_section.name');
var view = duplicatedViewElementAgg.getValue('sys_ui_section.view');
var element = duplicatedViewElementAgg.getValue('element');
checkFormsForView(view, tableName, element);
}
function checkFormsForView(view, tableName, element) {
var formGR = new GlideRecord('sys_ui_form');
formGR.addQuery('name', tableName);
formGR.addQuery('view', view);
formGR.addQuery('sys_user', '');
formGR.query();
while (formGR.next()) {
var sectionIDs = getSectionIDs(formGR);
var hasNoSections = sectionIDs.length == 0;
if (hasNoSections)
continue;
var sectionNames = getSectionsNamesForElement(element, sectionIDs)
var isInMultipleSections = sectionNames.length >= 2;
if (isInMultipleSections)
gs.print('DupField: ' + tableName + '.' + element + ', View: ' + view + ' (Sections: ' + sectionNames + ')');
}
}
function getSectionsNamesForElement(element, sectionIDs) {
var sectionGR = new GlideRecord('sys_ui_element');
sectionGR.addQuery('element', element);
sectionGR.addQuery('sys_ui_section', 'IN', sectionIDs);
sectionGR.query();
var captions = [];
while (sectionGR.next()) {
var sectionCaption = sectionGR.sys_ui_section.getDisplayValue();
if (sectionCaption == '')
sectionCaption = 'DEFAULT'
captions.push(sectionCaption);
}
return captions;
}
function getSectionIDs(formGR) {
var sectionIDs = [];
var formSectionGR = new GlideRecord('sys_ui_form_section');
formSectionGR.addQuery('sys_ui_form', formGR.getUniqueValue());
formSectionGR.query();
while (formSectionGR.next()) {
sectionIDs.push(formSectionGR.sys_ui_section + '');
}
return sectionIDs;
}
