Показать сообщение отдельно
Старый 27.03.2011, 00:52   #20  
erudit is offline
erudit
Участник
 
36 / 52 (2) ++++
Регистрация: 19.03.2003
Адрес: Украина
Так называемые AxBC-классы (с префиксом Ax) появились в AX 4.0 вместе с Axd-классами, как основа нового модуля AIF (Application Integration Framework).
AIF c Axd-документами пришёл на смену Commerce Gateway с XCBL схемами из Axapta 3.0, который не оправдал себя ввиду сложности добавления новых документов.
Axd-классы вместе с AxBC позволили легко добавлять и управлять новыми XML-документами для обмена данными между AX и другими системами (к примеру, в Axapta 3.0 Commerce Gateway - было всего 3 стандартных документа, в AX 4.0 AIF - 21, а в AX 2009 - уже 58).
Основная задача AxBC классов - управление defaulting'ом:
"
In order to solve intra-table field relations, where a table field should be defaulted to a specific value, when the value of another table field changes
"
Ранее упомянутая технология touched - используется для определения, было ли данное поле изменено ранее, и если да, то defaulting его не тронет. Это принциальное отличие от использования к примеру метода modified() на таблице, где легко перезаписать уже имеющиеся данные. К примеру, если вы получаете от клиента через AIF sales order (AxdSalesOrder-документ), из XML-файла в класс AxSalesLine передаются данные, скажем ItemId и SalesQty, и все остальные поля будут заполненны благодаря defaulting-функциональности AxSalesLine, но поле SalesQty - измененно не будет и сохранит данные из XML - такое стандартными средствами таблиц не сделаешь.
Также много других мелких положительных ньансов в использовании AxBC-классов в AIF, а не таблиц напрямую. К примеру, можно делать подмену значений прямо на лету (internal -> extrnal value и т.п.), что активно используется в InterCompany (заметьте - AxBC-классы предназначены только для использования в AIF или InterCompany, больше нигде).
За это сообщение автора поблагодарили: mazzy (2), fed (2), Zabr (8), sukhanchik (4), Logger (10), DmitrySt (1), PavelX (2), farlander (1), Artoodeetoo (1).