返回首页

 0;
介绍本文的目的主要是为 中间的Microsoft Dynamics AX用户熟悉X和MorphX中。这篇文章的目的是帮助用户提供Dynamics AX中的提示和增强。
的Microsoft Dynamics AX(前身为Axapta的)是在微软Dynamics ERP初级产品之一。微软已经在Microsoft Dynamics伞(如Navision的Axapta的,大平原,索罗门,协和广场,点销售,零售管理系统,客户关系管理等),更适用于小型,中型和大型企业的产品范围组织。
X是用来建Dynamics AX中的语言。 MorphX中是在Microsoft Dynamics AX的集成开发环境,允许开发人员以图形设计的图形用户界面。 MorphX中允许访问是在应用程序可用的应用程序类,通过发射X代码编辑器。 Microsoft Dynamics AX提供了一套网站,让你从Microsoft SharePoint企业门户,统称部署和访问的数据通过网络形式访问。的发展也可以使用Visual Studio.Net。路线图
{S0的} X
X是面向对象编程语言,也称为面向对象编程语言。一类是方法的集合。和子类是从其他类继承的类,通过使用关键字扩展。在X,一个新的类只能扩展另外一个类,不支持多重继承。如果扩展一个类,它继承了所有的方法和变量在父类(父类)。子类使您可以重用现有的代码为更具体的目的,节能设计,开发和测试的时间。要自定义的超类的行为,在子类中重写的方法。通常用在需要频繁访问的方法的类静态修饰符修饰符

final修饰符防止类被覆盖。一个final修饰符的方法同样不能由子类中重写。
abstract修饰符final修饰符是完全相反的。使用抽象类是一种强制继承的子类的基类使用。它防止被宣布使用新的()类。抽象方法必须重写作为一个抽象的方法,并不能有一个代码块。抽象方法不能是静态的。
显示和编辑修改:通常情况下,这些修饰符在其他语言中不存在,他们只是属于为X。这些修饰符用于在窗体和报表编辑和显示用户界面的数据。欲了解更多信息,请参阅联机文档{A}数据层Dynamics AX的由十六个应用对象层包含在AOT的所有元素。在Microsoft Dynamics AX 2009应用程序对象层的描述:这里是??USR个别公司或公司企业内的用户可以使用这一层,使顾客installations.CUS独特的自定义客户公司?????和业务合作伙伴可以修改自己的设备和通用公司具体的修改,这layer.VAR增值经销商 - 商业合作伙伴使用,其中有没有业务限制,这层到添加他们customers.BUS做任何发展? ??业务解决方案 - ???下的Microsoft Dynamics行业解决方案(计吸器)程序分发他们的解决方案,在认证业务合作伙伴开发和分发到其他合作伙伴和customers.SL1-SL2-SL3的纵向和横向的解决方案的认证解决方案合作伙伴提供的SL layers.HFX??修补程序??Dynamics AX的团队使用HFX layer.GLS的关键修补程序??全球的解决方案??Dynamics AX的全球发展和本地化团队提供一套包含国家吉力士层Dynamics AX的发布地区的具体功能。
SYS的??系统??这是最低的模型元素层和的标准Dynamics AX的应用程序的位置。只有微软在这一层的元素定义的访问。
层的应用程序的对象文件(AOD的文件),其中有些已更名为新的前缀在不同版本的Microsoft Dynamics AX在下面的图像显示如下。 {S}四层DIS / DIP /洛杉矶/ LOP的从Microsoft Dynamics AX 4.0中已更名为HFX / SL1 / SL2型/ SL3的在Microsoft Dynamics AX 2009。 6层的DIS / DIP /洛杉矶/ LOP的/总线/丁丙诺啡的Microsoft Dynamics AX 4.0的FPK / FPP /前哨/ SLP /独立软件开发商/ ISP在Microsoft Dynamics AX的2012年被重新命名为。 AX 4.0层 AX 2009的层 AX的2012层  0;axbup.aod axbup.aod axisp.aod axbus.aod axbus.aod axisv.aod axlop.aod axsl3.aod axslp.aod axlos.aod axsl2.aod axsln.aod axdip.aod axsl1.aod axfpp.aod axdis.aod&# 160; axhfx.aod axfpk.aod
6层的Microsoft Dynamics AX 2009 HFX / SL1 / SL2型/ SL3的/总线/丁丙诺啡的FPK / FPP /前哨/ SLP /独立软件开发商/ ISP在Microsoft Dynamics AX的2012年被重新命名为。模块
有一些已分离到另一个模块的功能。下面是几个比较显示在Microsoft Dynamics AX的2012增加了新的模块。
AX 2009的模块&# 160; AX的2012年模块 总帐管理系统 总帐管理系统 固定资产(新)&# 160; 银行 现金和银行管理 &# 160; 应付帐款 应付帐款   ; 采购和采购(新) 应收账款 应收账款  60; 销售和市场营销(新) 库存管理 产品信息(新) 库存和仓库 管理 费用管理 旅行和费用管理 生产  0;生产控制 项目 项目管理和 会计 合规及内部 控制(新)
在Microsoft Dynamics AX 2012的用户界面已改为简单和用户友好各级。修正了在Dynamics AX 2009的
添加一个新的层面,需要一个很轻微的修补程序下面的类,以提高维功能。
SysDimensionAddWizard"类用于系统添加一个新的金融层面。数量增加的尺寸控制Dynamics AX的许可证密钥。确保你有足够的许可证数量为您添加AX 2009中,由于用户定义的尺寸限于七尺寸。
AX的标准配备以下三个默认的尺寸。部门成本中心的目的
在SysDimensionAddWizard类的变化需要在其run()和versionControlCheckOut()的方法来解决一个小错误,你运行该向导之前
这次公开的SysDimensionAddWizard类固定在AOT。 if语句下添加以下代码的run()方法。

// DimensionExtCodeId

this.addElementToEDT(typeId(DimensionExtCodeId), labelDimension, strFmt("External code type for converting %1", labelDimension));  
现在编辑versionControlCheckOut()方法某处下if语句,并添加以下几行代码。 {C}
后加入上述代码中,通过增加尺寸的测试。
注:这里没有任何限制创建用户定义的尺寸,如果您使用的是Dynamics AX的2012年,上述修复不需要。 Dynamics AX 2009的数据一致性检查框架的一致性检查框架包括类;名称quot结束的ConsistencyCheck.quot;在Dynamics AX中的一致性检查只验证每个模块的表的预定义列表。这个的ConsistencyCheck框架是Dynamics AX的心。不幸的是,没有太大的文件可在网上对这些议题。我们的目的是提供一些有关这些类的基本细节。 SysConsistencyCheck类是基类,它是由不同的模块中的几类扩展。所有的类,它正在扩展它重写run方法。在他们指定与模块相关的表名,他们检查由kernelCheckTable或kernelCheckRecords方法。如需更多信息上SysConsistencyCheck类,其方法是指在{A2的}下面的链接在线文档要运行的一致性检查去基本GT GT周期;这有助于在运行和调度一致性检查批处理作业的一致性checkSysConsistencyCheckJob类。以下是几个ConsistencyCheck类Dynamics AX 2009的给类的层次结构和它们所属的配置信息。 类名 父类 配置的关键 SysConsistencyCheck 系统管理员 &# 160; SysConsistencyCheckJob 系统管理员&# 160; BankConsistencyCheck 银行  ; CustConsistencyCheck CustConsistencyCheck_BOE CustConsistencyCheck CustBillOfExchange CustConsistencyCheck_LinkTable CustConsistencyCheck LogisticsBasic docuConsistencyCheck  0; HRConsistencyCheck & #160; EmplConsistencyCheck HRConsistencyCheck 0; CommissionConsistencyCheck HRConsistencyCheck 佣金 InventConsistencyCheck LogisticsBasic  0;InventConsistencyCheck_Forecast InventConsistencyCheck_Table InventConsistencyCheck_Journal InventConsistencyCheck LogisticsBasic InventConsistencyCheck_Onhand InventConsistencyCheck_Table LogisticsBasic InventConsistencyCheck_Setup InventConsistencyCheck LogisticsBasic InventConsistencyCheck_Table InventConsistencyCheck LogisticsBasic InventConsistencyCheck_Trans InventConsistencyCheck_Table  0; SalesConsistencyCheck SysConsistencyCheck LogisticsBasic VendConsistencyCheck_LinkTable VendConsistencyCheck LogisticsBasic ReqConsistencyCheck SysConsistencyCheck 60; REQ JmgConsistencyCheck  0;JMG JmgConsistencyCheck_data JmgConsistencyCheck JMG JmgConsistencyCheck_job JmgConsistencyCheck JmgJob  0;JmgConsistencyCheck_pay JmgConsistencyCheck JMG JmgConsistencyCheck_setup JmgConsistencyCheck JMG LedgerConsistencyCheck LedgerBasic LedgerBudgetConsistencyCheck LedgerConsistencyCheck LedgerBasicBudget LedgerConsistencyCheck_Trans LedgerConsistencyCheck LedgerBasic TaxConsistencyCheck LedgerConsistencyCheck LedgerBasic CurrencyConsistencyCheck LedgerConsistencyCheck  0;货币 PrintMgmtConsistencyCheck ProdConsistencyCheck  60; ProdConsistencyCheck_Journal &# 160;ProdConsistencyCheck 督促 ProdConsistencyCheck_Table ProdConsistencyCheck 督促  60; ProdConsistencyCheck_Setup ProdConsistencyCheck& #160; 督促 PurchConsistencyCheck &# 160; 督促 ProjConsistencyCheck   ; ProjBasic ProjConsistencyCheck_Setup 60; ProjConsistencyCheck ProjBasic ProjConsistencyCheck_Forecast ProjConsistencyCheck ProjBasic ProjConsistencyCheck_Invoice ProjConsistencyCheck ProjBasic ProjConsistencyCheck_Journal ProjConsistencyCheck ProjBasic ProjConsistencyCheck_Setup ProjConsistencyCheck ProjBasic ProjConsistencyCheck_Table ProjConsistencyCheck ProjBasic  0; ProjConsistencyCheck_Trans ProjConsistencyCheck &# 160;ProjBasic RouteConsistencyCheck ProdRouting RouteConsistencyCheck_Table RouteConsistencyCheck ProdRouting VendConsistencyCheck VendConsistencyCheck_PN VendConsistencyCheck VendPromissoryNote WMSConsistencyCheck WMSBasic WMSConsistencyCheck_BOL 60; WMSConsistencyCheck SalesShipments   ; WMSConsistencyCheck_Journal WMSConsistencyCheck WMSAdvanced WMSConsistencyCheck_Location  0;WMSConsistencyCheck WMSBasic WMSConsistencyCheck_Pallet WMSConsistencyCheck WMSPallet &# 160; WMSConsistencyCheck_PickingRoute WMSConsistencyCheck WMSAdvanced WMSConsistencyCheck_Setup WMSConsistencyCheck WMSBasic WMSConsistencyCheck_Shipment WMSConsistencyCheck&# 160; WMSAdvanced WMSConsistencyCheck_Transport WMSConsistencyCheck WMSPallet &# 160; WMSConsistencyCheck_WMSOrder WMSConsistencyCheck WMSAdvanced
ConsistencyCheck类为不同的模块中的大多数是被盖在上面的列表中。
要知道他们所属的访问这个链接{A3}配置的更多信息。在下面的类
LedgerConsistencyCheck的类轻微的修补程序负责验证总帐模块。




LedgerConsistencyCheck的类的run()方法检查下表。
目录表LedgerTableLedgerJournalTableLedgerTableAlternative LedgerTableAlternativeTrans LedgerParameters
,但它不检查表AssetLedgerAccounts,拥有固定资产数据。如果用户希望删除一些有张贴型材引用的固定资产,那么这将导致问题。为了避免这个问题,在张贴型材添加AssetLedgerAccounts表的LedgerConsistencyCheck类在结束其run()方法,在下面的图片所示。
{S2的}
LedgerConsistencyCheck类看起来应该像上面的图片AX 2009的。从X代码
执行存储过程来执行存储过程,从X使用服务器的方法,客户端的方法没有权限。以下是屏幕截图代码,从服务器的方法。你不需要任何特权或权限来执行存储过程。如果使用其他服务器的方法,消息应该出现像这SqlStatementExecutePermission请求的类型的权限'失败'。

{S3的创建工作,并写在上面的代码显示的图像。
Dynamics AX中的AOT创建一个表时,开发人员常常忘记右击并保存表,特别是习惯于到SQL Server的开发。如果不保存在AOT有可能是列名冲突,并最终可能会丢失的变化,并导致其他问题。
注:如果要创建一个表,然后在Dynamics AX中的AOT会有几个默认添加到您的表像RECID,RECVERSION,DATAAREAID等列,确保这些领域包括插入值。从X使用ODBC连接
这是显示X代码从外部数据库存储过程的方法来执行的代码执行外部数据库的存储过程。创建一个与下面的代码AOT的工作。按照步骤操作,如替换服务器名称,数据库名称,存储过程名称的代码在这里解释。执行下面的代码通过ODBC连接。
static void execExternalDatabase(Args _args)

{

    LoginProperty loginProperty;

    ODBCConnection odbcConnection;

    Statement statement;

    ResultSet resultSet;

    ResultSetMetaData resultSetMetaData;

    Counter counter;

    str sql;

    SqlStatementExecutePermission perm;

    ;



    loginProperty = new LoginProperty();

    loginProperty.setServer("SERVERNAME Here"); // Replace your Database Server Name here



    loginProperty.setDatabase("DemoDB"); //Replace your Database name here

     

    odbcConnection = new ODBCConnection(loginProperty); // setting odbc connection here.



     // ODBC Connection to create Statement

     statement = odbcConnection.createStatement();



    // Replace the StoredProcedure you want to execute.

    sql = strfmt('EXEC [myStoredProcedureName]');



    // Set code access permission to Execute

    perm = new SqlStatementExecutePermission(sql);

    perm.assert();



    try

    {

    // if Stored Procedure has Select query use executeQuery method.

       resultSet = statement.executeQuery(sql);

       resultSet.next();

       resultSetMetaData = resultSet.getMetaData();

        for (counter=1; counter <= resultSetMetaData.getColumnCount(); counter++)

        {

            switch (resultSetMetaData.getColumnType(counter))

            {

            case 0,1 :

            info(resultSet.getString(counter));

            break;

            case 3 :

            info(date2StrUsr(resultSet.getdate(counter)));

            break;

            }

        }

    }

    catch (exception::Error)

    {

        print "An error occured in the query.";

        pause;

    }



    // Code access permission scope ends here.

    CodeAccessPermission::revertAssert();

   }  

在存储过程中使用一个简单的选择查询的结果将显示在infolog。 Dynamics AX的自动更改的对象ID
的对象(表,窗体,报表等)创建时,每个对象分配一个ID。用户不认为ID的不能改变,但也可以改变。这可能是非常有用的一些不同的环境之间的迁移对象时,为开发尖端。这应该只用于新对象,但不是默认的是Dynamics AX安装过程中创建的对象。
创建一个对象的对象ID可能开发一些与另一个像QA环境中的对象ID次交锋Dynamics AX的提示消息,这样对象ID已使用和抛出在infolog错误。它不会导入对象。在这种情况下,只需打开检查。XPO档案的对象ID所造成的问题。记下的ID和对象所造成的问题,infolog diplays什么都没有被进口的消息。然后后发现,使用,并取代所有现有的身份证号码,将更换新的身份证号码在不断引用的所有地方。你可以注意到的ID和现在UTILOBJECTID被改变,如果对象具有一定的参考。现在尝试重新导入。XPO文件,直到它干净进口任何错误。
注意:不要更改默认的ID Dyn​​amics AX安装的对象是。改变默认的对象ID,这也可能导致更多的问题后on.Using这是不可取的。直接在X
NET框架,这有利于开发商。Net框架的知识。他们可以利用他们在X直接加强在Dynamics AX中的自定义功能。 NET框架2.0版本只支持Dynamics AX 2009的。 {C3的}
开发人员也可以开发和使用自定义DLL在Visual Studio 2008设计。为了使用自定义DLL,它应该被复制到客户Dynamics AX安装路径"\ BIN文件夹。在Dynamics AX中添加引用这些自定义的DLL是你就可以开始在X中使用它们。部署新的网络DLL的默认路径如下
[驱动器]:\ Program Files文件\的Microsoft Dynamics AX \ 50 \ CLIENT \ BIN数据迁移
Dynamics AX的SystemSequences有助于分配不同的号码组每个表RECID上。
有Dynamics AX中的数据迁移的几种方法。我注意到一些问题的内存,性能和故障排除,因为通常内存在Dynamics AX的内核(Windows系统DLL)管理。
有迁移工具,还协助迁移,毫无疑问,他们是真棒。但开发商仍然可以将数据迁移出使用任何第三方工具。这可以通过使用SSIS 2005/2008。这是一个非常强大的ETL工具,微软已经提供了。开发人员应该只知道一些技巧处理RECID的,那么很容易拉任何源数据库的数据迁移到Dynamics AX的目标数据库。开发人员需要创建和同步一次NEXTVAL从SystemSequences的的表RECID的数目。
下面是T-SQL代码,知道未来的一个特定的表RECID样品。从表的属性表的ID可以识别。 {的C4}
有几个ID是在上述Excel工作表提供的名单。在SQL Server测试上面的代码。代理
代理创建和生成调用X类和企业Portal.This功能的方法,在Visual Studio Web应用程序项目使用的X代码资源提供便利。也有一些企业门户提供预定义的代理。 {S4}的代理,可以发现在开发的网站的根。 (例如:[驱动]:\ Intepub \ wwwroot的\ WSS \ VirtualDirectories \ 80 \ App_Code文件\代理\)
在AOT节点下的[网络] - [网络档案] - [静态文件] - [代理]可以查看所有的代理。
提供接入类提及在编辑器中的类和方法名称如上所示。以下是提供一个例子。
/类:[SampleClassName]
/ [方法:methodName中添加它,你需要生成代理后,现在去[工具] - [Web开发] - [代理],点击"生成代理。现在你会看到新的类添加到代理节点添加到根directory.To类使用代理类在C#使用下列大会{C5的跟踪
跟踪为用户提供了识别耗时SQL查询,交易和基于AOS执行不同的代码。可以测量的性能,并可以识别并避免不必要的负载和过程。
{五}
RPC往返行程到服务器:这让用户从客户端向服务器跟踪所有RPC往返
X方法:电话跟踪所有的X服务器上调用的方法
嵌套调用数:跟踪嵌套的方法调用中指定的数量的限制

函数调用:跟踪所有的函数调用在服务器上调用SQL语句:跟踪所有SQL Server报表,
绑定变量:在服务器上调用。跟踪输入绑定变量使用的所有列
行提取所有的行迹,提取,使用SQL Server
行取摘要(数量和时间):计数取所有行,并记录时间花在取水
连接和断开:此选项跟踪每次星光大道连接和断开与数据库的
交易:ttsBegin,ttsCommit,ttsAbort此选项允许跟踪所有交易使用的TTSBegin,TTSCommit,并TTSAbort报表
还有1追查详细的解释,这是提供连结{A4纸}代码探查
汤姆・施通普夫的代码分析器来计算的X代码的执行时间和数据库活动时间。当您启动Profiler和停止执行后,将信息存储在数据库与RunID。当你点击上探查奔跑,它会显示所有的RunID和执行任务。
{六}
为了避免不必要的干扰和几个任务要使用它只是一个特殊的任务,你可以使用下面的代码。执行此示例代码,更改表名和列名。 {5233}
现在你可以看到运行ID和其他信息在Profiler运行屏幕上,这种类型的场景基本上用于检查对象的表现时,运行几次,检查时间结果。 :
{七}

回答