摘要:Axapta通过xSysLastValue类来保存用户输入的值,这个类有getLast和saveLast等方法组成,当然最重要的是上述两个方法.Runbase为了保存用户的输入值实现了sysSaveable接口,该接口方法定义了一些方法,用于获取和保存用户输入的值。Runbase通过在方法promptPrim()方法中调用xSysLastValue的getLast和setLast来获取和保存用户的...
阅读全文
摘要:宏带给人的印象坏的远多于好的,即使没有写过程序的人也知道宏病毒,每次打开带有宏的Excel的时候都要提醒你是否要打开,打开可能会染毒的警告.从程序实现的角度讲,Axapta中的宏跟Excel中的宏没什么区别,都是一段可执行代码,或者一个变量的定义,当然打开Axapta的时候不会因为有宏的存在就提醒你要不要打开Axapta,呵呵.另外对于X++的程序员来说,宏带来的也是负面多余正面,因为宏不能精确定...
阅读全文
摘要:Axapta提供了一些类用于操作Excel,这些类实际上是对Excel.Application这个COM对象的封装,由于Axapta不支持Unicode,对于含有汉字的Excel文件,可就惨了下列代码,如果Excel中是汉字的话,只能输出一半. void GetDataFromExcel(){ SysExcelApplication app; SysExcelWorkSheet...
阅读全文
摘要:在Axapta中有一个基础类型Container,在某些场合下确实比较好用,axapta现有系统中用的也比较多,比如Runbase的pack()和unpack()方法就是用Container结合宏来实现的.container可以看作是无类型的动态增长的数组,功能基本上等效于C#中的ArrayList.只不过container不能存放对象(Table对象还是可以存的),另外container可以作为...
阅读全文
摘要:在Form上如果想只添加Dimension的某一个是很很简单的事情,只需要指定Dimension[i]就可以了,但在如果想在Runbase的dialog上动态添加Dimension上的某个元素可就不那么简单了.试了半天都没办法加上去,最后只能曲线救国,想了如下三种办法:1.新建一个EDT,该EDT只有一个元素,跟想要添加到Dialog上的Dimension中的那个元素相对应,与Dimension建...
阅读全文
摘要:在Axapta中有一些类封装了对AOT的查询操作,比如Dictionary,DictRelation,DictClass,DictType等.如果想知道某个扩展数据类型的有几个元素组成的,可以用如下代码: static void getArrarySize(Args _args){ Dictionary d; DictType dt; ; d = new Diction...
阅读全文
摘要:多态在语言的表现上就是用父类类型调用子类方法的实现,C++和C#是通过虚函数表来实现的,在具体实例化的时候把重载的函数地址写到虚函数表的地址列表中,我想X++应该也是这样实现的.问题在于如果想访问子类特有的函数,该怎么玩,C#中必须用强制转化,将父类类型强制转化成子类类型,才能调用,强行转化的语法跟C语言一样,(子类型)父类型.在X++中没看到这种语法,不过可以直接赋值子类型=父类型,还可以直接赋...
阅读全文
摘要:在X++中数组类型做入口参数如下两点需要注意:1.字符串数组中字符串必须是定长的.2.如果方法不是内联的,必须定义为anytype.举例如下:1.int类型数组,内联方法 static void InputParameterTest(Args args){ int intTest[2]; //inline method void intArrayInputParameterTes...
阅读全文
摘要:最近跟数组打交道必较多,期间遇到了一些问题,在这里做一下总结.X++中的数组分为两类:基础类型和AFC中的Array,区别在于前者只能存放X++基础类型(比如int,real)而不能存放class对象和Table,本文只讨论前者.这里只叙述跟C#中不同的部分:1.只支持一维数组;不支持多维数组也没办法,只能说是编译器限制.2.定义分为dynamic, fixed length, and partl...
阅读全文
摘要:FormDataSource是连接Form和Table的对象,前端Form上要显示的内容关联到FormDataSource上的字段,而FormDataSource字段又指向Table的字段.有时候一个FormDataSource中的一个字段在Form上显示多次,如果要控制在某些条件下全部显示或者全部不显示,通过设定control的visible有些麻烦,这时可以通过设定FormDataSource...
阅读全文
摘要:一个客户的销售订单和采购订单要求工作流审核才能发货或收货,要求跟OA系统的工作流整合,在Axapta中启动流程,在工作流中签核,签核完毕后再回写Axapta相应单据的信息.今天弄了一下,由于OA是用VB+ASP写的,所以在启动流程的时候需要调用COM,Axapta提供了COM这个类来调用COM,实现起来倒挺容易的,不过在传递数组参数的时候遇到了些麻烦.工作流的COM提供的启动流程的方法是用字符串数...
阅读全文
摘要:为什么要用TransactionTxt这个东西?没找到官方的文档,按照我的理解的话,之所以要用这个TransactionTxt是为了弥补数据集的不完备,或者说有些物理表之间根本就不应该存在关联,但是有时候用户又想看到一些信息,好象越说越乱了,呵呵.举个例子我们知道所有的交易最终过帐产生凭证的记录都会记录在LedgerTrans表中,从表的设计角度来说,LedgerTrans应该只记录凭证号,过帐科...
阅读全文
摘要:事件是观察者模式的一种实现,事件源定义事件,监听者订阅事件,在事件触发时事件源通知监听者,并执行监听者定义的处理程序,这样事件的发生和处理分离.C#为了实现事件模型,增加了一个类型delegate(委托),事件源用event关键字定义事件,监听者通过+=,-=来订阅或取消订阅事件,订阅的过程实际上是在事件上增加处理函数的入口地址,这样当事件发生时,事件源就会自动调用这些处理函数.早在VJ++时代,...
阅读全文