A diferença entre data() e buf2Buf() no Dynamics AX 2012
Publicado: 15 de fevereiro de 2025 às 22:53:58 UTC
Última atualização: 12 de janeiro de 2026 às 08:41:08 UTC
Este artigo explica as diferenças entre os métodos buf2Buf() e data() no Dynamics AX 2012, incluindo quando é apropriado usar cada um e um exemplo de código X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
A informação neste artigo baseia-se no Dynamics AX 2012 R3. Pode ou não ser válida para outras versões.
Quando precisas de copiar o valor de todos os campos de um buffer de tabela para outro no Dynamics AX, tradicionalmente fazes algo como:
Isto funciona bem e, na maioria dos casos, é o caminho a seguir.
No entanto, também tens a opção de usar a função buf2Buf em vez disso:
Isto também funciona bem. Então, qual é a diferença?
A diferença é que o buf2Buf não copia os campos do sistema. Os campos do sistema incluem campos como RecId, TableId, e talvez mais importante neste contexto, DataAreaId. A razão pela qual esta última é a mais importante é que o caso mais típico em que se usa buf2Buf() em vez de data() é ao duplicar registos entre contas da empresa, normalmente através do uso da palavra-chave changeCompany.
Por exemplo, se estiver na empresa "dat" e tiver outra empresa chamada "com" da qual deseja copiar todos os registos no CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Neste caso, funcionará porque o buf2Buf copia todos os valores dos campos, exceto os campos do sistema, para o novo buffer. Se tivesse usado data() em vez disso, o novo registo teria sido inserido nas contas da empresa "com" porque esse valor também teria sido copiado para o novo buffer.
(Na verdade, teria resultado num erro de chave duplicada, mas também não é isso que queres).
Leitura adicional
Se gostou deste post, também pode gostar destas sugestões:
- Utilização do SysExtension Framework para descobrir qual a subclasse a instanciar no Dynamics AX 2012
- Formatação de String com Macro e strFmt no Dynamics AX 2012
- Eliminar uma entidade legal (contas da empresa) no Dynamics AX 2012
