Dynamics AX

有关Microsoft Dynamics AX的技术文章
摘要: 网上有很多关于权限管理系统的设计方案以及案例,甚至有相关的可以直接使用的权限管理框架。权限管理并非我的研究对象,我也只通皮毛,今天就在专家面前班门弄斧,简单介绍一下微软Dynamics AX系统的权限管理,以及由此派生出来的一种基于.NET的权限设计思想。或许在看完本文后,你会觉得,我所提出的这个想法很火星,你早就知道这种方案了。不要紧,就当我在此将这些内容整理一下,以备日后参考便是了。演练:体验... 阅读全文

posted @ 2010-07-20 11:00 dax.net 阅读(2546) | 评论 (12) 编辑 |

摘要: 在Microsoft Dynamics AX的MorphX中,AOT下有个Maps节点(注意,不是Map Class),这个节点下罗列了所有的Table Mapping。很多开发人员对于Table Mapping的概念不是很清楚,在使用过程中也会遇到一些问题。本文简单地收集并罗列一下。一、Table Mapping也是Table在AOT上,任意选择一个Table Map,单击鼠标右键选择Open,... 阅读全文

posted @ 2010-04-01 11:28 dax.net 阅读(1000) | 评论 (0) 编辑 |

摘要: 关注X++的博客园博友有福啦,现在发布X++代码也同样可以实现语法高亮。目前仅支持SyntaxHighlighter插件。请看如下:使用方法如下:安装正常的操作过程,使用SyntaxHighlighter插件插入高亮代码块:在弹出的对话框中,“编程语言”随便选哪个都可以。我选择的是默认的“C#”,在贴入代码以后,打开HTML编辑视图,直接将HTML中... 阅读全文

posted @ 2010-03-17 08:12 dax.net 阅读(202) | 评论 (0) 编辑 |

摘要: 很多情况下,需要用到文件的Base64编码字符串。比如,通常情况下,第三方应用系统都会使用Base64编码来实现图片文件的存储,在做系统集成的时候,就难免会要在代码中对文件进行Base64编码。其实,在X++中获取文件的Base64非常简单,就是使用BinData类。代码如下: 阅读全文

posted @ 2010-02-27 11:22 dax.net 阅读(57) | 评论 (0) 编辑 |

摘要: 在标准的Dynamics AX系统中,Grid的每个列头(Column Header)是可以点击的,用户可以通过点击Column Header以实现针对该字段的排序。但并非所有的情形下,我们都希望Grid提供这样的功能。比如,用于记录事件触发历史的数据表上,我们就希望默认以事件发生的时间作为排序字段,而不允许用户通过单击Column Header重新排序。为了去掉这个标准的功能,我们需要在Grid... 阅读全文

posted @ 2010-02-20 13:20 dax.net 阅读(69) | 评论 (0) 编辑 |

摘要: 所谓动态调用,最主要的是允许用户能够在系统中设置Web Service的服务地址,比如用户可以在AX中动态设置销售网站的Web Service地址,以便与第三方系统通信。本文介绍的方法其本质是使用COM创建SOAP request,然后以HTTP POST的方式,往指定的服务地址发送请求,进而实现Web Service的动态调用。请参考下面的例子:以上例子展示了通过Web Service向AspD... 阅读全文

posted @ 2010-02-05 10:35 dax.net 阅读(53) | 评论 (0) 编辑 |

摘要: X++代码中有个分号特别有意思,看起来像是把变量的声明段和代码部分分开了,便于编译器解析。我们会发现,有时候不加这个分号,代码编译也不会有错,而有时候又不得不加。有人说,如果代码部分开始的第一个词语是一个关键字,则可以不加。这种说法没错,但没解释原因。总之,目的只有一个,就是为了编译器能够顺利解析哪些部分是声明,哪些部分是代码。请看下面的代码:上面的代码是没法编译通过的,原因就是声明和代码体部分少... 阅读全文

posted @ 2010-02-02 08:21 dax.net 阅读(45) | 评论 (0) 编辑 |

摘要: 开发中有时候需要根据给定的数据表记录以及该表的字段名,获取字段的值。其实方法很简单,只需要在common数据记录上直接使用圆括号进行引用即可。请参见下面的代码:使用这种方式可以很轻松地跟踪数据表记录的变更历史。 阅读全文

posted @ 2010-01-29 15:59 dax.net 阅读(49) | 评论 (0) 编辑 |

摘要: 在对AOT\Tables下的数据表做BP检查的时候,如果出现“Code to handle the InventDimId field must be added to the Multisite Activation Wizard.” 这样的BP错误,则到InventSiteActivateDimFieldsCheck类中,找到updateableFields或者nonU... 阅读全文

posted @ 2010-01-26 14:53 dax.net 阅读(22) | 评论 (0) 编辑 |

摘要: 发生了什么?这是件非常有趣的事情。我们现在可以在X++中编译并执行C#脚本。请看下面的X++代码:执行完上面这段job程序,Dynamics AX就会编译#SourceScript宏中定义好的C#脚本,然后执行脚本程序,并弹出了一个infolog,上面显示了计算结果:30。如下:这是如何实现的?如果你直接将上面的job导入到AOT里去执行,那么在编译阶段就会出错,原因是你的Dynamics AX根... 阅读全文

posted @ 2010-01-20 08:37 dax.net 阅读(65) | 评论 (0) 编辑 |

摘要: 在Dynamics AX 6中,有引入一种称为Attribute的新特性。请看:【注:以上代码来自http://blogs.msdn.com/mfp/archive/2009/04/02/ax6-sneak-preview-x-unit-test-improvements.aspx】其实到目前为止,我手头没有拿到Dynamics AX 6的版本,这种新特性也是从上面的博客中看到。但我想,对于只专注... 阅读全文

posted @ 2010-01-17 19:23 dax.net 阅读(43) | 评论 (0) 编辑 |

摘要: 这里有篇文章介绍了Dynamics AX 6在MorphX上的又一个新特性:axmodel。axmodel其实是一个layer下的另一种应用程序组织形式,在6.0以前,客户自定义的开发都是在一个特定的layer下进行的,这样会产生一些问题,比如我从两个ISV购买了两套产品,如果是直接使用AOD文件,我没办法将两个产品同时应用在bus层,而只能逐个导入XPO。那么今后如果某个ISV的产品有了升级,我... 阅读全文

posted @ 2010-01-15 14:35 dax.net 阅读(39) | 评论 (0) 编辑 |

摘要: 今天在Dynamics AX相关的MSDN博客上看到了Dynamics AX 6.0的新的X++编辑器。这下做X++开发的朋友有希望了。Dynamics AX team采用了Visual Studio的编辑器实现框架,提供了字体设置、修改跟踪、行号、增强的语法着色等令人心动的功能,请看:增强的编辑器: 阅读全文

posted @ 2010-01-15 13:47 dax.net 阅读(102) | 评论 (1) 编辑 |

摘要: 在不少情况下,客户要求在Dynamics AX中实现全文搜索的功能,比如在零售行业,客户信息量庞大,为了提高搜索效率,不得不采用全文搜索。要实现全文搜索,就需要在数据表上创建全文索引,之后才能用CONTAINS和CONTAINSTABLE这样的SQL语句进行查询。然而,一旦数据表创建了全文索引以后,在Dynamics AX中就无法进行数据表同步,同步时出现如下错误信息:简单地说,数据表创建全文索引... 阅读全文

posted @ 2010-01-06 08:16 dax.net 阅读(45) | 评论 (0) 编辑 |

摘要: 很多情况下,我们会需要通过TableId和RecId来直接获得数据表记录。比如在Dynamics AX中实现全文检索的时候,一种合理的设计就是让全文检索返回RecId,然后再根据不同的TableId构建数据表实例,最终根据返回的RecId获得数据表记录,从而将结果显示给用户。相关代码如下: 阅读全文

posted @ 2010-01-04 12:33 dax.net 阅读(44) | 评论 (0) 编辑 |

摘要: 附件是在Dynamics AX 2009中调用Crystal Reports的演示。注意:由于是使用ActiveX和COM技术,因此在使用前请确保安装了Crystal Reports产品演示里的Show report按钮打开的是d:\report1.rpt文件,请您根据自己的情况在Crystal Reports里开发所需的rpt文件,然后在Show report按钮的Click事件处理过程里指定这... 阅读全文

posted @ 2009-07-03 11:21 dax.net 阅读(38) | 评论 (0) 编辑 |

摘要: IoC/DI(Inverse of Control/Dependency Injection,控制反转/依赖注入)模式是一种企业级架构模式,通过将应用程序控制权反转交移给框架,并以构造器注入、属性设置器注入等方式将类实体注入到特定应用层中,最终实现层与层之间的解耦,使得应用程序获得良好的扩展性和应变能力。 客户需求如下:需要向系统中添加两个窗体,Engineers和Analysts,分别显示工程师... 阅读全文

posted @ 2009-02-07 21:31 dax.net 阅读(81) | 评论 (0) 编辑 |

摘要: 实际开发过程中,一对多(1:n)的对象关系是非常常见的,比如销售订单(Sales order)下可以有多条订单行(Sales lines),这种关系可以直接使用数据库提供的主/从表关联关系实现。面向对象分析与设计思想并不提倡将数据库作为整个模块甚至系统设计的主要对象。例如,在处理多对多的对象关系时,数据库的简单关联就显得有点力不从心了。在这种情况下,设计人员不得不增加新的数据表,以便将多对多的关系... 阅读全文

posted @ 2009-02-06 15:10 dax.net 阅读(31) | 评论 (0) 编辑 |

摘要: 在上图中(点击查看大图),BrushBase的GetColor 是一个虚函数,为了提高封装性,我们在此将其定义为受保护成员(Protected)。GetColor 函数的实现部分被摆放在了BrushBase 的子类中,而BrushBase本身却用到了这个虚函数。在模板方法模式中,将GetColor 方法的实现称为延迟实现(Late Implementation),而将调用该方法的方法(BrushB... 阅读全文

posted @ 2009-02-06 15:07 dax.net 阅读(31) | 评论 (0) 编辑 |

你可能感兴趣的:(dynamic)