Come gestire le dimensioni in una tabella personalizzata.

Salve lettore, in questo articolo voglio spiegarti come poter aggiungere le dimensioni in una tabella personalizzata facente parte di una tua soluzione.

Se sei un po’ avvezzo alle dimensioni, saprai che esse, di standard, sono una peculiarità solo di alcune tabelle, come i clienti, fornitori, articoli, conti C/G, ubicazioni (da BC 20), agenti, cespiti, impiegati, C/C bancari, partner IC, risorse, addebiti articolo. Poi da queste tabelle vengono ereditate le dimensioni sui documenti di acquisto, vendita, servizio, produzione, ecc. attraverso il meccanismo della priorità e poi propagate per le tabelle dei movimenti (G/L Entry, Item Ledger Entry, Cust. Ledger Entry, Vendor Ledger Entry, ecc.).

Ma se volessimo creare una nuova tabella ed agganciare ad essa le dimensioni di default che poi verranno eventualmente inserite nei documenti, come dobbiamo fare?

Le dimensioni sono gestite attraverso la codeunit DimensionManagement (ID = 408). Se cerchi di fare una pagina con una action collegata alla pagina “Default Dimension” vedrai che apparirà un errore che la tabella non è gestita. Questo perché sul validate del campo “Table ID”, abbiamo la chiamata alla funzione DefaultDimObjectNoList che si occupa di verificare se la tabella è gestita con le dimensioni di default.

Table Default Dimension
Codeunit DimensionManagement function DefaultDimObjectNoList

Voglio quindi, poter gestire le dimensioni di default di una tabella personalizzata “Building”. Per farlo costruiamo la tabella e la pagina con la action per richiamare la pagina standard “Default Dimension”.

Table custom Building
PageAction DefaultDimensions on Page Building Card

Nel mio scenario non ho dimensioni globali, pertanto devo agire sulla funzione DefaultDimObjectNoWithoutGlobalDimsList. Vediamo nel dettaglio questa funzione nell’immagine sotto.

Function DefaultDimObjectNoWtihoutDimsList on DimensionManagement codeunit

Vediamo tutte le tabelle senza dimensioni globali che possono essere gestite. In fondo alla funzione vediamo l’evento OnAfterDefaultDimObjectNoWithoutGlobalDimsList. Questo fa al caso nostro perché aggiungiamo alla tabella temporanea TempAllObjWithCaption la tabella personalizzata Building che vogliamo aggiungere.

Custom codeunit which subscibe the event

Semplicemente ho sottoscritto l’evento e nella funzione ho chiamato la funzione DefaultDimInsertTempObject che si occupa di aggiungere alla tabella temporanea la tabella personalizzata.

Resulting page

Il mio non era uno scenario che comprendeva dimensioni globali, ma potevamo gestirle se avessi aggiunto due campi “Global Dimension 1 Code” e “Global Dimension 2 Code” in tabella. Questo perché poi si occupava di tutto la funzione DefaultDimObjectNoWithGlobalDimsList senza sottoscrivere alcun evento.

Function DefaultDimObjectNoWithGlobalDimsList on DimensionManagement codeunit

Spero che questo articolo ti aiuti a gestire i casi in cui devi aggiungere delle dimensioni di default alle tabelle della tua soluzione. 

Lascia una risposta