Різниця між data() та buf2Buf() у Dynamics AX 2012
Опубліковано: 15 лютого 2025 р. о 22:54:06 UTC
Останнє оновлення: 12 січня 2026 р. о 08:41:12 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", оскільки це значення також було б скопійовано до нового буфера.
(Насправді, це призвело б до помилки дублікату ключа, але це також не те, чого ви хочете).
Додаткова література
Якщо вам сподобався цей пост, вам також можуть сподобатися ці пропозиції:
- Використання запиту в класі контрактів даних SysOperation в Dynamics AX 2012
- Виклик служб документообігу AIF безпосередньо з X++ у Dynamics AX 2012
- Форматування рядків за допомогою Macro і strFmt в Dynamics AX 2012
