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