Разлика између дата() и буф2Буф() у Динамицс АКС 2012
Објављено: 15. фебруар 2025. 22:57:01 UTC
Овај чланак објашњава разлике између метода буф2Буф() и дата() у Динамицс АКС 2012, укључујући када је прикладно користити сваки и пример Кс++ кода.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Информације у овом посту су засноване на Динамицс АКС 2012 Р3. Може, али и не мора бити важеће за друге верзије.
Када треба да копирате вредност свих поља из једног бафера табеле у други у Динамицс АКС, традиционално бисте урадили нешто попут:
Ово добро функционише и у већини случајева је прави начин.
Међутим, такође имате могућност да уместо тога користите функцију буф2Буф:
Ово такође добро функционише. Па у чему је разлика?
Разлика је у томе што буф2Буф не копира системска поља. Системска поља укључују поља као што су РецИд, ТаблеИд, и можда најважније у овом контексту, ДатаАреаИд. Разлог зашто је ово последње најважније је тај што је најтипичнији случај када бисте користили буф2Буф() уместо дата() када је дуплирање записа између налога предузећа, обично коришћењем кључне речи цхангеЦомпани.
На пример, ако сте у компанији "дат" и имате другу компанију која се зове "цом" из које желите да копирате све записе у ЦустТабле:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
У овом случају, то ће функционисати јер буф2Буф копира све вредности поља, осим системских поља, у нови бафер. Да сте уместо тога користили дата(), нови запис би био уметнут у рачуне компаније „цом“, јер би и та вредност била копирана у нови бафер.
(Заправо, то би резултирало грешком дуплог кључа, али ни то није оно што желите).