Ho modificato il modulo InventTable in modo che gli utenti possano filtrare gli elementi in base al loro stato "Interrotto" nel modulo di impostazione delle impostazioni ordine predefinito . Ricevono un elenco degli articoli "acquistabili", "vendibili", di tutti gli articoli o degli articoli bloccati in vendita o in acquisto a seconda dei valori di due checkbox.Dynamics AX: Disabilita origine dati dal modulo nel codice pur essendo in grado di utilizzare l'opzione avanzata filtro/ordinamento
Ho aggiunto le origini dati InventItemSalesSetup e InventItemPurchSetup nel codice e le abilito o disabilitato quando l'utente controlla o deseleziona una casella di controllo.
Tutto funziona correttamente tranne quando una delle origini dati è disabilitata. Quindi l'opzione "Filtro/ordinamento avanzato" smette di funzionare. Ottengo l'errore: "L'origine dati non è abilitata".
L'errore deriva dal metodo "saveCueEnabled" del modulo SysQueryForm. Quando si chiama:
if (!CueRun::canSaveQueryAsCue(this.args().caller()))
return false;
che chiama:
static boolean canSaveQueryAsCue(QueryRun qr)
{
int numOfDataSources, i;
QueryBuildDataSource ds;
Query q;
Common cursor;
;
if (!qr)
return false;
q = qr.query();
if (!q)
return false;
numOfDataSources = q.dataSourceCount();
for(i = 1; i <= numOfDataSources; i++)
{
ds = q.dataSourceNo(i);
if(ds.dynalinkCount() > 0)
return false;
// Check if it is temp
cursor = qr.getNo(i);
if (cursor.dataSource() && cursor.isTmp())
return false;
}
return true;
}
Quando si ottiene il numero di origini dati nella query, il metodo del "dataSourceCount" restituisce anche il conteggio con le fonti di dati per disabili, e quando ottiene il QueryBuildDataSource delle origini dati disabilitate nel ciclo si ottiene un DS vuoto e si blocca quando controlla se si tratta di una tabella temporanea.
Ho risolto il problema aggiungendo un extra se sul codice "saveCueEnabled" ma mi chiedo se c'è un modo per abilitare/disabilitare le origini dati senza ottenere questo errore.
Spero di essermi spiegato bene, grazie!
Penso che dovrebbe funzionare. Grazie, proverò se mai tornerò con questo problema. –