2012-07-19 26 views
6

¿Cuál es la diferencia entre las dos declaraciones a continuación?Tabla = Tabla vs Tabla. Datos (Tabla)

newTable = orginalTable 

o

newTable.data(originalTable) 

Sospecho que hay un beneficio en el rendimiento con el método .data() ya que se utiliza más comúnmente en AX estándar.

Respuesta

9

Prueba esto:

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

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

verá que la primera declaración sólo crea otro puntero al registro existente. El segundo crea una nueva copia del registro existente.

+8

+1. Añadiré que si no quiere copiar los campos del sistema de un registro a otro, sino solo los campos que tienen un significado funcional (es decir, campos que puede ver en el AOT), utilice buf2buf() en lugar de datos(). – Max

+1

ah bien, me pregunta por qué no se llama algo obvio como .copy() – AnthonyBlake