static void Job47(Args _args)
{
str path,stx;
TreeNodeIterator iter;
TreeNode treeNode, treeNodeToRelease;
Map dictMenuDisplay;
FormName formName;
MenuItemName menuItemName;
container conMenu;
int i,n;
;
for (n=1;n<=1;n++)
{
info::messageWinAddLine(strfmt("iter:%1",n));
path ="Menu Items\\Display";
dictMenuDisplay = new Map(Types::String,Types::Container);
treenode = Treenode::findNode(path);
iter = treenode.AOTiterator();
treenode = iter.next();
while (treenode)
{
formName = treenode.AOTgetProperty("Object");
menuItemName = treenode.AOTname();
if (dictMenuDisplay.exists(formName))
{
conMenu = dictMenuDisplay.lookup(formName);
conMenu = conIns(conMenu,conlen(conMenu)+1,menuItemName);
dictMenuDisplay.insert(formName,conMenu);
}
else
dictMenuDisplay.insert(formName,[menuItemName]);
treenode = iter.next();
}
}
}
當我運行上面的工作批量它顯示了以下錯誤「服務器端人格化(運行方式)會議試圖調用可用的方法只有客戶端處理」,並點到行 info :: messageWinAddLine(strfmt(「iter:%1」,n)); 我曾嘗試在類RunbaseBatch中的方法runsImpersonated()中放置false。但似乎也沒有工作。無法批量運行作業
我是AX2009的新手,所以不真正理解在客戶端或服務器中運行作業的含義,請帶領我走向正確的方向。
嗨Skaue感謝您的快速響應。你能解釋一下運行作業或者服務器端或者客戶端的優點嗎?我怎麼知道哪行代碼會訪問服務器端或客戶端。在我的工作中,info :: messageWinAddLine(strfmt(「iter:%1」,n));它在客戶端嗎? – piku 2011-03-11 14:08:34
當您在客戶端中交互式運行作業時,顯式地從客戶端運行它。您可以激活斷點,調試器將在代碼運行時顯示客戶端或服務器端。他們通過在調用堆棧中有一個圖標來顯示這一點。 擁有一個可以批量運行的類可能是一個優點,如果這是客戶需要的功能。能夠將數據導出爲夜間批量作業是正常的。這一切都取決於你的班級是什麼。 – Skaue 2011-03-11 14:12:04
雖然愚蠢的問題..我怎麼知道我的班級是什麼?你能解釋一下嗎?在我的工作中,info :: messageWinAddLine(strfmt(「iter:%1」,n));它在客戶端還是服務器?感謝快速反應。 – piku 2011-03-11 14:18:31