摘要:在Form中可以调用FormRun的setTimeOut方法,实现定时调用某个方法,但如何是一般的类,不是窗体,该如何实现那? 1.在全局缓存中缓存当前对象. server static void Main(Args _args) { TestClass testClass = new TestClass(); SysGlobalCache cache = infolog.glo...
阅读全文
摘要:JachE 提到在Query中对枚举类型DocumentStatus字段的值进行限定的问题,由于QueryBuildRange的value只能是str类型的,所以需要用Enum2Str(DocumentStatus::None)进行转换,但我试了一下这个方法好像有问题: static void Enum2StrTest(Args _args) { Query ...
阅读全文
摘要:用代码创建表的代码,在这里记录一下: static void CreateNewTable(Args _args) { #AOT TreeNode treeNode = TreeNode::findNode(#TablesPath); DictType dictType; TreeNode ...
阅读全文
摘要:感谢网友Jache在我的blog上提出一个问题: AX has 16 layers, we have over-layering problems just like the code in syp will cover sys. I want to wrote a tool to solve this problem. But now I don't know how can I get all...
阅读全文
摘要:本文描述库存模块中最重要的两个类InventMovement和InventUpdate,当然这两个类还有相应的子类. 毋庸置疑,AX中库存模块至关重要,我的理解是与财务模块并列两大基础模块,其他模块都依赖于这两个模块,当然从独立性的角度来看,库存模块也依赖于财务模块,因为库存的变动要在财务上有所体现,其他模块只要涉及到库存的变动都由库存模块去实现,具体的实现就是由InventMovement和In...
阅读全文
摘要:要想做好AX的二次开发,除了要熟练掌握X++的语法和一些系统类的用法外,还有两个必要条件: 1.精通AX的现有功能 只有熟练应用AX的现有功能才能在应用顾问提出开发需求时,准确地评估开发的合理性,并针对AX系统提出自己开发的想法,想做好开发就一定要比应用顾问更加熟练地使用系统. 可能觉得这种观点有些荒谬,其实这是最基本的要求.如果连系统都不会用,又怎么保证开发的东西符合AX的Style?又怎么评估...
阅读全文
摘要:直接看代码吧: static void OuterJoinWhere(Args _args) { WMSStoreArea wmsStoreArea; WMSLocation wmsLocation; ; while select * from wmsStoreArea outer join wmsLocation ...
阅读全文
摘要:说到开发,首先想到的是对语言语法细节的熟悉,对面向对象的理解.对于AX的二次开发,这些当然也比较重要,但相对来说更加重要的是对系统已有的几千张表和几千个类的熟悉.决定二次开发速度的主要因素也是对这些表和类的理解,因为系统中有大量的功能已经封装成了比较好的类可以调用,比如获取库存的现有量想到InventOnhand可以使用,想获取此前某一天的库存量可以用InventSumDate,销售订单和采购订单...
阅读全文
摘要:记得很久以前看过Brooks的>,其中有一篇描述软件开发模式的,具体内容不记得了,只记得他描述了一个外科手术模式的开发团队,在一个软件开发团队中应该有一个经验丰富的人起主导作用,相当于外科手术的主刀医生,当然还有一些角色是负责写文档,提供技术支持的,这些角色类似于副主刀医生或者护士之类. 这几天一直在想,实施AX是不是也用这样一种模式会好一些,现在大多数实施AX的团队都是每个模块派一个顾问,所以...
阅读全文