2

我正在尝试以编程方式在 X++ 中复制以下步骤

  1. 在 AOT 树中右键单击根节点,然后单击“导出”
  2. 提供文件名
  3. 单击“应用程序对象层”复选框
  4. 指定“cus”作为应用程序对象层
  5. 将 XPO 导出到文件

我已经能够导出整个 AOT 树,但我无法找到将其缩小到 cus 层的方法。这是我当前的代码示例...

TreeNode treeNode;
FileIoPermission perm;

#define.ExportFile(@"c:\XPO\AOTCusExport.xpo")
#define.ExportMode("w")
;

perm = new FileIoPermission(#ExportFile, #ExportMode);
if (perm == null)
{
return;
}

perm.assert();

treeNode = TreeNode::findNode(@"\");
if (treeNode != null)
{
    // BP deviation documented.
    treeNode.treeNodeExport(#ExportFile);
}

CodeAccessPermission::revertAssert();

我有一种感觉,解决方案在于“treeNodeExport”方法。有一个我没有使用的“int _flags”属性。我环顾四周,但不确定用什么值填充标志?有没有人尝试过这种过程重复?我走在正确的道路上吗?

4

2 回答 2

2

请看一下AOTExport宏。

然后阅读

#AOT
#AOTExport
TreeNode rootNode = infolog.rootNode();
;
rootNode.treeNodeExport(@'c:\fullaot.xpo', #expKeepIds | #expLables | #expLayer);

我不确定如何指定图层,但很可能只是标志参数上的逻辑或。

如果有疑问,请查看SysElementExport表单和相关类。

更新:正如预期的那样,图层在位掩码中指定。

\Forms\SysExportDialog\Methods\getutilLayer掩码中指定为:

return 1 << layer.selection();

因此,如果要导出 CUS 层,请执行以下操作:

rootNode.treeNodeExport(@'c:\fullaot.xpo', #export | #expLayer | (1 << (UtilEntryLevel::cus+1)));

层有 15 位的空间,因为下一个标志是:

#define.expKeepIds(0x0100)
于 2013-03-01T21:42:21.637 回答
1

您有一个如何将标志传递给SysTreeNode.toFile()类方法中的方法的示例

#AOTExport
...
int flags;
...
flags = #expProjectOnly;
...

// This code runs on the client side only
//BP deviation documented
treenodeToExport.treeNodeExport(_filename, #export | #expKeepIds | #expLayer | flags);

...

根据文档:

// System export flags
#define.noExport(0)                 // Do not export
#define.export(1)                   // Export
#define.expKeepIds(0x0100)          // Export with ID's
#define.expLables(0x0400)           // Export labels
#define.expProjectOnly(0x800)       // Export project only
#define.expLockOnExport(0x1000)     // Lock exported elements
#define.expDefaultValues(0x2000)    // Export default properties values
#define.expLayer(0x4000)            // Export current layer only

你只能导出活动层......这很奇怪,因为表格让你从列表中选择一个层。当您进入表单代码时,会有点奇怪SysExportDialog,列表所在的位置并调用了导出类,并且您在任何地方都找不到图层的使用情况……所以,宏文档毕竟是正确的。

于 2013-03-04T08:40:21.373 回答