2012-07-19 16 views
6

Qual è la differenza tra le due istruzioni seguenti?Table = Table vs Table.Data (Table)

newTable = orginalTable 

o

newTable.data(originalTable) 

Ho il sospetto che ci sia un miglioramento delle prestazioni al metodo .data() come è più comunemente usato in AX standard.

risposta

9

Prova questo:

newTable = originalTable; 
info(strfmt('%1 %2', newTable.recId, originalTable.recId); 

newTable.data(originalTable); 
newTable.insert(); 
info(strfmt('%1 %2', newTable.recId, originalTable.recId); 

vedrai che la prima istruzione crea solo un altro puntatore al record esistente. Il secondo crea una nuova copia del record esistente.

+8

+1. Aggiungerò che se non vuoi copiare i campi di sistema da un record all'altro ma solo i campi con un significato funzionale (cioè i campi che puoi vedere nell'AUT), usa buf2buf() invece di data(). – Max

+1

ah ok, implora la domanda perché non è stata chiamata qualcosa di ovvio come .copy() – AnthonyBlake