Miklix

A diferença entre data() e buf2Buf() no Dynamics AX 2012

Publicado: 15 de fevereiro de 2025 às 22:53:57 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 deles e um exemplo de código X++.


Esta página foi traduzida automaticamente do inglês para torná-la acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, portanto, podem ocorrer erros. Se preferir, você pode visualizar a versão original em inglês aqui:

The Difference Between data() and buf2Buf() in Dynamics AX 2012

As informações neste post são baseadas no Dynamics AX 2012 R3. Elas podem ou não ser válidas para outras versões.

Quando você precisa copiar o valor de todos os campos de um buffer de tabela para outro no Dynamics AX, você normalmente faria algo como:

toTable.data(fromTable);

Isso funciona bem e, na maioria dos casos, é a melhor opção.

No entanto, você também tem a opção de usar a função buf2Buf:

buf2Buf(fromTable, toTable);

Isso também funciona bem. Então, qual é a diferença?

A diferença é que buf2Buf não copia campos do sistema. Campos do sistema incluem campos como RecId, TableId e, talvez o mais importante neste contexto, DataAreaId. A razão pela qual este último é o mais importante é que o caso mais típico em que você usaria buf2Buf() em vez de data() é ao duplicar registros entre contas de empresa, normalmente usando a palavra-chave changeCompany.

Por exemplo, se você trabalha na empresa "dat" e possui outra empresa chamada "com" da qual deseja copiar todos os registros da tabela CustTable:

while select crossCompany : ['com'] custTableFrom
{
    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 você tivesse usado data() em vez disso, o novo registro teria sido inserido nas contas da empresa "com", pois esse valor também teria sido copiado para o novo buffer.

(Na verdade, isso teria resultado em um erro de chave duplicada, mas também não é isso que você deseja).

Leitura adicional

Se você gostou deste post, você também pode gostar destas sugestões:


Compartilhe no BlueskyCompartilhe no FacebookCompartilhe no LinkedInCompartilhe no TumblrCompartilhar em XCompartilhe no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Ele tem mais de 20 anos de experiência como programador de computador/desenvolvedor de software profissional e atualmente trabalha em tempo integral para uma grande empresa europeia de TI. Quando não está blogando, ele dedica seu tempo livre a uma grande variedade de interesses, hobbies e atividades, o que pode, até certo ponto, refletir-se na variedade de tópicos abordados neste site.