Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

Exclude sys tables from dropdown and include database views

abhinavmoha
Tera Contributor

We are trying to build a scoped app with one form having dropdown which lists the tables (from sys_db_object) and views(from sys_db_view). We are trying to exclude sys tables and sys views and we are able to achieve this with adding attributes in dictionary entry as shown in screenshot.

abhinavmoha_0-1746509671516.png

This is the dictionary entry related to this dropdown:

abhinavmoha_1-1746509759600.png

 

The script "GetAllTablesAndViews" excludes sys tables and views

function tableChoicesScript() {
    var result = '';
    var tables = [];
    
    // Get non-sys tables
    var tableGr = new GlideRecord('sys_db_object');
    tableGr.addQuery('name', 'NOT LIKE', 'sys_%');
    tableGr.addNotNullQuery('name');
    tableGr.query();
    while (tableGr.next()) {
        tables.push(tableGr.getValue('name'));
    }
    
    // Get views where base table is not a sys_ table
    var viewGr = new GlideRecord('sys_db_view');
    viewGr.query();
    while (viewGr.next()) {
        var baseTableSysId = viewGr.getValue('base_table');
        if (baseTableSysId) {
            var baseTableGr = new GlideRecord('sys_db_object');
            if (baseTableGr.get(baseTableSysId)) {
                var baseTableName = baseTableGr.getValue('name');
                if (!baseTableName.startsWith('sys_')) {
                    tables.push(viewGr.getValue('name'));
                }
            }
        }
    }
    
    // Sort tables alphabetically
    tables.sort();
    
    // Format the result as a choice list string
    for (var i = 0; i < tables.length; i++) {

This script works when run it in script-background, but as an attribute here in above screenshot it wont work for views. Whats the right approach?

0 REPLIES 0