Time of Update: 2018-12-06
經常要用代碼建立採購和銷售訂單,需要弄清楚哪些欄位是必輸的,這段代碼經常需要拷貝,放在這裡做個備份。static void CreatePurchDirectly(Args _args){ PurchTable purchTable; PurchLine purchLine; InventDim inventDim; ; ttsbegin; //PurchTable //PurchId purchTable.PurchId
Time of Update: 2018-12-06
列舉出某個目錄下所有的檔案,C#代碼如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace CLRIntegration{ class Program { static void Main(string[] args) { Program.DisplayFilesOfSo
Time of Update: 2018-12-06
這兩天折騰在Windows2008裝AX2009,MOSS2007,Project Server 2007,打了N個補丁後終於全部裝上了,角色中心,EP,WorkFlow也配好了,可AX2009的速度無比慢,點類邊上的+都要半天才能列舉出方法列表,或許是我可憐的HP本本配置太低,運行這個虛擬機器太費力。。。但AX4.0+Windows2003在虛擬機器上運行,消耗的資源差不多,運行得蠻好。搞不清楚是AX2009的問題,還是Windows2008的問題。查看
Time of Update: 2018-12-06
在X++中調用.NET的Assembly寫檔案的代碼如下:static void WriteFile(Args _args){ System.IO.FileMode fileMode; System.IO.FileStream fs; System.IO.StreamWriter sw; ; try { fileMode = CLRInterop::parseClrEnum('System.IO.File
Time of Update: 2018-12-06
新建立一個類TestClass,用代碼修改其類名為NewTestClass:static void ChangeClassName(Args _args){ #AOT TreeNode treeNode = TreeNode::findNode(#ClassesPath+'\\TestClass'); ; treeNode.AOTsetProperty("Name","NewTestClass"); treeNode.AOTcompile(1); tre
Time of Update: 2018-12-06
為了響應鍵盤事件,AX增加了一個系統方法task,在使用者點擊某些鍵時會調用Form的task方法,如果想對這些鍵實現自己的響應,可以重載task方法,在其中判斷當前的_taskId為哪個值,再寫自己的響應code.比如使用者選中ALT時,如下代碼所示:public int task(int _taskId){ int ret; #Task if( _taskId == #taskAlt) info("I am 'Alt'"); return tru
Time of Update: 2018-12-06
實施AX項目籠共分幾步?1.理順企業流程;2.找Gap;3.填Gap;4.錄資料測參數;5.試運行流程.我覺得基本上就這幾大步,其中的第4步,錄資料,又分為幾個部分的資料:1.基本資料這些資料包括使用者,貨幣,計量單位,各種組(比如客戶組)等,這些資料不會很多一般通過手工錄入就可以了.2.主要資料這些資料包括會計科目表,客戶,供應商,物料等,這些資料都是主要資料,都只涉及到一張表,通過AX系統提供的Excel模板就可以實現了.3.期初帳這些包括會計帳戶餘額,客戶供應商餘額,固定資產以及物料的期初
Time of Update: 2018-12-06
JachE
Time of Update: 2018-12-06
聽很多人說起BOM Configuration和Product
Time of Update: 2018-12-06
AX有個很不錯的功能,可以隱藏或者顯示某個維度,比如倉庫,庫位,批處理號等,這樣的操作幾乎在涉及業務的各個表單都有,比如銷售,採購訂單行,庫存日誌,物料現有,等等表單,都可以庫存->維度顯示 按鈕進行相關維度設定。這個功能在大多數情況下沒什麼問題,只是有些時候使用者想每次進入的時候都顯示特定的維度,這個時候就有些困惑,當然我們可以要求使用者去選擇 維度顯示表單裡的 儲存設定,但是由於AX的這個功能是依託於SysPackable介面的,它的實現機制跟RunBase的儲存使用者的選擇完全一樣,
Time of Update: 2018-12-06
本系列筆記是我在學習公司間交易的過程中的隨筆,有些是我自己的想法,內容可能跟教程有所出入,由於對AX的應用部分理解得很淺,所以如果錯誤還請多多指教。為了處理集團公司中各個分公司之間的交易,AX採用了InterCompany功能。各個分公司是獨立的公司法律實體,要分別出財務報表。這些分公司可以各自在AX中對應一個公司,通過
Time of Update: 2018-12-06
經常要用到一些字串的處理函數,前段時間寫過一些,這裡再補充幾個,雖然簡單,但用的時候一時想不起來就要自己重寫一個也是比較浪費時間的事。Global類裡有幾個字串處理的靜態方法,可以全域調用的。strLFix,strRFix,strRep這兩個函數可以用做用特定的字元補齊的函數,不滿多少位的時候就用特定的字元補齊,比如數字如果不滿三位就用前置0或者後置0補齊。如果想在前面用0補齊,就用strRFix,如果想在後面用0補齊,就用strLFix。看看代碼吧:當數字長度不滿足三位的時候就用前置0補齊,比
Time of Update: 2018-12-06
要想做好AX的二次開發,除了要熟練掌握X++的文法和一些系統類別的用法外,還有兩個必要條件:1.精通AX的現有功能只有熟練應用AX的現有功能才能在應用顧問提出開發需求時,準確地評估開發的合理性,並針對AX系統提出自己開發的想法,想做好開發就一定要比應用顧問更加熟練地使用系統.可能覺得這種觀點有些荒謬,其實這是最基本的要求.如果連繫統都不會用,又怎麼保證開發的東西符合AX的Style?又怎麼評估應用顧問提出的開發需求系統中是不是已經實現了?那如果技術顧問能做到這一點還要應用顧問做什嗎?其實應用顧問
Time of Update: 2018-12-06
開發了大半,遇到這樣一個需求:1.自己建立的表,要加上公司的簡稱做為首碼;2.自己建立的表的欄位不需要添加公司的簡稱做為首碼;3.在系統原有的表上添加的欄位要添加公司的簡稱做為首碼。建立的表太多了,一個個修改是重體力活,於是寫了個Job來完成,在這裡記錄一下:static void ModifyTableAndFieldNameOfSomeProject(Args _args){ #TreeNodeSysNodeType #define.prefix('PF') #define
Time of Update: 2018-12-06
<<Inside Microsoft Dynamics AX 4.0>>確實是一本不可多得的好書,雖然有些問題也沒有太深入的介紹,不過比起Develop Guide過癮多了,並且成一體系,是為數不多的值得看N遍以上的書.前些日子一直有想翻譯一下這本書的衝動,也在blog中翻譯了兩章,但總是被項目搞得焦頭爛額,並且總體感覺這本書要想翻譯得"信,達,雅"基本上是不太可能的,因為這本書太多隻可意會而不可言傳的表述,看英文反而更順一些.看到很多朋友想看這本書,在這裡提供一下下載,
Time of Update: 2018-12-06
記得很久以前看過Brooks的<<人月神話>>,其中有一篇描述軟體開發模式的,具體內容不記得了,只記得他描述了一個外科手術模式的Team Dev,在一個軟體Team
Time of Update: 2018-12-06
感謝網友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 the layers in one method. Such as method1() has
Time of Update: 2018-12-06
說到開發,首先想到的是對語言文法細節的熟悉,對物件導向的理解.對於AX的二次開發,這些當然也比較重要,但相對來說更加重要的是對系統已有的幾千張表和幾千個類的熟悉.決定二次開發速度的主要因素也是對這些表和類的理解,因為系統中有大量的功能已經封裝成了比較好的類可以調用,比如擷取庫存的現有想到InventOnhand可以使用,想擷取此前某一天的庫存量可以用InventSumDate,銷售訂單和採購訂單的過賬可以調用SaelsFormLetter和PurchFormLetter的update方法等等.有
Time of Update: 2018-12-06
用代碼建立表的代碼,在這裡記錄一下:static void CreateNewTable(Args _args){ #AOT TreeNode treeNode = TreeNode::findNode(#TablesPath); DictType dictType; TreeNode treeNodeField; str tableName = 'S
Time of Update: 2018-12-06
直接看代碼吧:static void OuterJoinWhere(Args _args){ WMSStoreArea wmsStoreArea; WMSLocation wmsLocation; ; while select * from wmsStoreArea outer join wmsLocation where wmsLocation.storeAreaId == wmsStoreArea.st