Разница между data() и buf2Buf() в Dynamics AX 2012
Опубликовано: 15 февраля 2025 г. в 22:54:00 UTC
Последнее обновление: 12 января 2026 г. в 08:41:09 UTC
В этой статье объясняются различия между методами buf2Buf() и data() в Dynamics AX 2012, включая случаи, когда целесообразно использовать каждый из них, а также приводится пример кода на X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Информация в этом сообщении основана на Dynamics AX 2012 R3. Она может быть или не быть актуальна для других версий.
Когда вам нужно скопировать значения всех полей из одного буфера таблицы в другой в Dynamics AX, вы обычно делаете что-то вроде:
Этот метод хорошо работает и в большинстве случаев является оптимальным.
Однако, вместо этого вы также можете использовать функцию buf2Buf:
Это тоже хорошо работает. Так в чём же разница?
Разница заключается в том, что buf2Buf не копирует системные поля. Системные поля включают такие поля, как RecId, TableId и, что, пожалуй, наиболее важно в данном контексте, DataAreaId. Причина, по которой последний является наиболее важным, заключается в том, что наиболее типичный случай использования buf2Buf() вместо data() — это дублирование записей между учетными записями компаний, как правило, с помощью ключевого слова changeCompany.
Например, если вы работаете в компании "dat" и у вас есть другая компания под названием "com", из которой вы хотите скопировать все записи из таблицы CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
В этом случае все сработает, потому что buf2Buf копирует все значения полей, кроме системных, в новый буфер. Если бы вы использовали data() вместо этого, новая запись была бы вставлена в учетные записи компании "com", поскольку это значение также было бы скопировано в новый буфер.
(На самом деле, это привело бы к ошибке дублирования ключа, но это тоже не то, чего вы хотите).
Дополнительное чтение
Если вам понравился этот пост, вам также могут понравиться эти предложения:
- Форматирование строк с помощью макроса и strFmt в Dynamics AX 2012
- Преобразование вещественного числа в строку со всеми десятичными знаками в Dynamics AX 2012
- Краткий обзор Dynamics AX 2012 SysOperation Framework
