Inside Dynamics Axapta源代码赏析(三)

第七章:Extending Dynamics Ax
使用该章的某些工程前需要在 系统管理->设置->电子邮件参数处  设置好相关的参数,当然如果不想用示例代码中的发邮件功能,可以将其注释掉,后面结合具体代码解释.
A.InventItemCreateWizard
功能:一个添加料品的向导,从技术面上来说的话,介绍了如果制作一个Wizard,步骤如下:
1.实现一个继承自SysWizard的类,重载其中的一些方法,比如fromName(要调用的Form,也就是在步骤2中创建的窗体)
2.创建一个Form,由若干个Table组成,SysWizard的prompt方法会分解这些Table成一个个的下一步对应的窗体.
具体的代码就不介绍了.
B.BikeTuningOffers_Basic
功能:创建给客户调整自行车的服务单,当然可以选择给客户发送Mail,如果不想使用发送Mail功能,可以将BikeTuningOffers类sendOffers方法中发送Mail的代码注释掉.代码如下:

 ttsBegin;

    
while select custTable
    
{
        
if (createServiceOrders)
        
{
            bikeServiceOrderId  
= NumberSeq::newGetNum(SalesParameters::numRefBikeServiceOrderId()).num();
            bikeServiceOrderTable.BikeServiceOrderId    
= bikeServiceOrderId;
            bikeServiceOrderTable.CustAccount           
= custTable.AccountNum;
            bikeServiceOrderTable.insert();
        }


        sysMailer.quickSend(CompanyInfo::find().Email,
                            custTable.Email,
                            
"Tune your bike",
                            strFmt(
"Hi %1,\n\nIt's time to tune your bike", custTable.name));
    }


    ttsCommit;

这段代码有些问题,如果这个类运行在服务器端,在实际运行的时候会报 获取InteropPermission权限失败,因为Axapta4.0采用了CAS,在调用New SysMailer之前添加如下代码

new InteropPermission(InteropKind::ComInterop).assert();

或者让这个类运行在client端.
这个方法用到了前面工程中创建的编码规则,在使用前需要在设置->参数设置处设置好.
技术方面的话,BikeTuningOffers这个类继承自Runbase,然后在Runbase调用的基本的dialog上增加了一个Field,没什么新东西.
C.BikeTuningOffers_PropertyMethods
在B工程的基础上,增加了几个属性方法,用于给类变量赋值或取得类变量值.
D.BikeTuningOffers_Constructors
在C工程的基础上,增加了一个带参的构造函数,newCustTable,没什么很大的变动.
E.BikeTuningOffers_Query
在D工程的基础上增加了查询.需要改动的几个方法如下:
1.pack,需要把queryRun对象打包
2.unpack,把queryRun解包
3.initParmDefault 在第一次运行时构造查询对象,再以后的调用过程中会使用unpack解包后的queryRun对象.

原文地址:https://www.cnblogs.com/Farseer1215/p/515223.html