static void wblTableName(Args _args) { tableId tableId = 175; //1962; //2954; //101377; info(strFmt("%1 : %2", tableId2name(tableId), tableId2pname(tableId))); }
2020 release wave 2 Installed product version : 10.0.14 (10.0.605.20015) Installed platform version : Update38 (7.0.5778.41504)
Friday, October 19, 2018
Get table name from its id
Wednesday, October 17, 2018
How to get all related table ids from code
We can loop all relations on a table by code.
It can be useful in cases when we need, say, to open a form with a related record.
Here you can find a more elaborated example.
static void myGetRelatedTableNames(Args _args) { myInExtCodeValueTable myInExtCodeValueTable; int mapId; TableName relatedTableName; TableId relatedTableId; Set tablesIdsSet = new Set(Types::Integer); Set tablesNamesSet = new Set(Types::String); TableId tableId = tableName2id(tableStr(myInExtCodeValueTable)); Dictionary dictionary = new Dictionary(); SysDictTable dictTable = dictionary.tableObject(tableId); DictRelation dictRelation = new DictRelation(myInExtCodeValueTable.TableId); int mapCnt = dictTable.relationCnt(); container ret ; str relationName; //create a maps of literals for all tables from the table relations // so that we could get tables names based on their ids // and if any new relation will be added to multiple external codes table // it is present automatically in this view for (mapId=1; mapId <= mapCnt; mapId++) { // elaborate if any table present many times relationName = dictTable.relation(mapId); dictRelation.loadNameRelation(relationName); if(dictRelation) { relatedTableId = dictRelation.externTable(); relatedTableName = tableId2pname(relatedTableId); tablesIdsSet.add(relatedTableId); tablesNamesSet.add(relatedTableName); info(strFmt("Table %1 - %2", relatedTableId, relatedTableName)); } } ret = [tablesIdsSet.pack(), tablesNamesSet.pack()]; }
It can be useful in cases when we need, say, to open a form with a related record.
Here you can find a more elaborated example.