Разлика између дата() и буф2Буф() у Динамицс АКС 2012
Објављено: 15. фебруар 2025. 22:57:01 UTC
Последње ажурирано: 12. јануар 2026. 08:41:27 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“ јер би та вредност такође била копирана у нови бафер.
(Заправо, то би резултирало грешком дупликата кључа, али ни то није оно што желите).
Даље читање
Ако сте уживали у овом посту, можда ће вам се свидети и ови предлози:
- Позивање АИФ Доцумент Сервицес директно са Кс++ у Динамицс АКС 2012
- Избришите правно лице (налози предузећа) у Динамицс АКС 2012
- Коришћење СисЕктенсион Фрамеворк-а да бисте сазнали коју подкласу треба инстанцирати у Динамицс АКС 2012
