📖
zhaoqiang
  • Home
  • Python
    • Python Base
      • Grammar
      • Issue
    • Web DEV
      • Html
      • WebFrame
        • Flask
        • Django
      • WebTemplate
    • Web Crawler
  • Linux
    • Navieboom
    • Telegram Bot
      • RSSBot
      • TwitterBot
    • LetsEncrypt
      • ACME Create
      • ACME Install
    • NextCloud
      • NextCloud创建
      • NextCloud性能优化
    • Google
      • Google Drive
        • 离线下载
      • Chromium
    • Synology
      • Docker
        • 清理Docker占用的磁盘空间
      • Youtube-dl
      • 群晖—-外部访问DDNS教程(第一部分)
      • 群晖—-外部访问DDNS教程(第二部分)
      • SpeedTest - Install
      • BestTrace - Install
      • Rclone - Install
      • IPKG - Install
      • LEDE - Install
    • OpenWrt
      • Compile
        • Lean-4.14
        • Lean-4.9
    • LEDE
    • Linux Base
      • Command
      • Cron
  • DynamicsAX
    • Functions
      • Document Services
        • Auto Generate XML From AX
        • Load XML Files On Server
      • Webservice
      • DB Connect
      • DirectSQL
      • Email Alert
      • Auto Items
      • Auto BOM
      • Auto Order
      • Auto Invoice
      • Auto Packing
    • Data Import
      • Initial Static Data
      • initial Dynamic Data
        • Open SO
        • Open PO
        • Opening Balance
    • Access Right
    • Process
    • Instance
      • DYNAMICS 365 FOR OPERATION INSTANCE
  • Other Skills
    • Markdown
    • GIT
      • Command
    • Office365
Powered by GitBook
On this page
  • 新建查询
  • 文档服务
  • 自动创建Pravite Project
  • XML文件

Was this helpful?

  1. DynamicsAX
  2. Functions
  3. Document Services

Auto Generate XML From AX

AX 自动生成 XML

PreviousDocument ServicesNextLoad XML Files On Server

Last updated 5 years ago

Was this helpful?

新建查询

组织需要输出的数据,新建一个Query。注意新建的表需要有Index。

文档服务

路径:工具 -> 开发工具 -> AIF -> 创建、更新文档服务

自动创建Pravite Project

通过系统工具可以自动创建下图中的所有类,其中Job可以生成XML的XSD,CIG_ICTradeOrderService是对应的文档服务名称

XML文件

如下代码描述了如何在服务器指定位置生成对应XML文件,执行如下程序可以把CIG_ICTradeOrderTable中的指定数据根据Query中的数据结构生成对应的XML文件

static void ExportOrderXml(CIG_ICTradeOrderTable    _tradeOrderTable)
{
    AxdCIG_ICTradeOrder                 TradeOrder;

    AifEntityKey                        key;

    Map                                 map;

    AifPropertyBag                      bag;

    XmlDocument                         xmlDocument = new XmlDocument();

    FileIoPermission                    perm;

    CIG_ICTradeOrderTable                          tradeOrderTable;// = CIG_ICTradeOrderTable::find(_transRefId);

    CIG_ICTradeOrderLine                           tradeOrderLine;



    filename                            filename;// = strfmt("//editest/AX-TEST/%1_%2.xml",strrem(strrem(salesTable.SalesId,'/'),'-'),timenow());

    Boolean                             loadStatus;
    ;

    if(_tradeOrderTable)
    {
        filename = strfmt("//edilive/edi_live/FileSystem/Root/Inbound/ORDER/ORDER_%2.xml",strrem(strrem(_tradeOrderTable.SalesPurchOrderId,'/'),'-'),_tradeOrderTable.EDIGUID);


        perm = new FileIoPermission(fileName,"wr");

        perm.assert();

        map = new Map(Types::Integer, Types::Container);

        map.insert(fieldnum(CIG_ICTradeOrderTable, EDIGUID), [_tradeOrderTable.EDIGUID]);

        map.insert(fieldnum(CIG_ICTradeOrderTable, OrderType), [_tradeOrderTable.OrderType]);

        key = new AifEntityKey();

        key.parmTableId(tablenum(CIG_ICTradeOrderTable));

        key.parmKeyDataMap(map);

        try
        {
            tradeOrder = new AxdCIG_ICTradeOrder();

            loadStatus = xmlDocument.loadXml(tradeOrder.read(key, null, new AifEndPointActionPolicyInfo(), new AifConstraintList(), bag));

            if(loadStatus)
            {
                xmlDocument.save(filename);

                CIG_QueueManager::createQueueManagerData(_tradeOrderTable
                                                        ,xmlDocument.xml()
                                                        ,""
                                                        ,AifMessageDirection::Outbound
                                                        ,filename);

                CIG_TradeInterCompany_EDI::updateStatus(_tradeOrderTable,"Sent");
            }

            CodeAccessPermission::revertAssert();


        }
        catch
        {
            throw error('Error in document service outbound');
        }
    }
}