第九章:XML文档集成---定制已存在的XML文档

本文仅供AX从业者和爱好者学习交流之用,请勿转载。
作为定制已存在的XML文档的例子,假定在针对客户的一个解决方案中有一张表用来存放每一个库存商品的多个图片(译注:原文为illustrations,翻译成图解有点别扭),想在以XML文档发送采购订单的时候包含这些图片。这张表的结构如图9-8所示:
AIF8.png
图9-8自定义表的结构
第一步是修改AxdPurchaseRequisition 这个Query使其包含ItemIllustration 这张表,也就是定制解决方案中的新建的表。图9-9显示了在添加了新建的表后,该Query的样子。被框起来的区域是必须向Ax4.0中发布的该Query中添加的部分。
AIF9.png
图9-9.添加表ItemIllustration 后的Query
定制XML文档过程的第二步是通过Axd向导运行Query。向导的第二页提示解决方案所基于的Query的名称,在本例中,Query的名称为AxdPurchaseRequisition。在向导的下一页,如图9-10所示,可输入类的名称,默认与Query的名称相同。
AIF10.png
图9-10.向导页,在该页可以选择XML文档应该支持的操作
剩余的字段对该过程来说是无关紧要的,因为不会更改已经存在的Axd<Document>类。如果在Query中创建了关系,向导会在方法prepareForSave 中构造所有需要的代码。
在下一页中,选择第一项以创建新的Ax<Table>类,第二个选项,是可选的,更新已存在的Ax<Table>类,该类有可能已经是最新的了。
在运行完向导后,需要修复可能有的编译错误和Axd向导产生的to-dos。首先,如果不需要缓存(caching)的话去掉它,通过移除两个方法CacheObjectCacheRecordRecord。当移除这些类(译注:原文为classes,感觉用Methods会更好些),必须移除类声明中的两个变量cacheRecordIdxcacheObjectIdx。假定InventDim不影响图片,移除这个可选参数,这样parmItemId方法看起来如下所示:

None.gifpublic str parmItemId(str _itemId = '')
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    DictField dictField;
InBlock.gif    ;
InBlock.gif    
if (!prmisdefault(_itemId))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        dictField 
= new DictField(tablenum(ItemIllustration),fieldnum(ItemIllustration,
InBlock.gifItemId));
InBlock.gif        
this.validateInboundItemIdString(_itemId,dictField);
InBlock.gif        
if(this.valueMappingInbound())
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            item 
= _itemId;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
this.setField(fieldNum(ItemIllustration,ItemId), _itemId);
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
if (this.valueMappingOutbound())
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return conpeek(this.axSalesItemId('',
InBlock.gif itemIllustration.ItemId),
1);
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return itemIllustration.ItemId;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

这样新创建表的实现就结束了,可以通过基本设置->设置->应用程序框架->操作重新注册AxdPurchaseRequisition 来生成XML架构(Schema).

转载于:https://www.cnblogs.com/Farseer1215/archive/2007/07/25/828844.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值