存档

‘Web Services’ 分类的存档

在Navision中使用XMLPort交换数据

2011年8月8日 没有评论

下面为大家介绍如何在Navision中使用XMLPort交换数据.

    1. 打开xml文件, 使用CreateInstream, 读取到InStream中.

IFile.OPEN(FileName);
IFile.CREATEINSTREAM(IStr);
SalesHeaderXML.SETSOURCE(IStr);
SalesHeaderXML.IMPORT;
IFile.CLOSE;

  1. 设定XMLPort的Source.  =SetSource(Instream)
  1. 导入XMLPort
  2. 关闭文件

 

XMLPort中已经进行了XML文件的Mapping操作.

Mapping过程中. Text表示纯文本, 仅作标记用.而Element/Attribute表示是元素还是属性.

 

表示表的一系列记录时, 通常Table 作为Element表示一条记录, Attribute表示一条记录中的每个字段. 再前面再增加一个Element就表示多个记录.

 

 

通过XMLPort中的函数. 比如GenSalesHeader(Var tempSalesHeader : Record::Sales Header) 表示写入Sales Header.

 

GenSalesHeader(VAR TempSalesHeader : Record “Sales Header”)

SalesHeader.RESET;

IF SalesHeader.FIND(‘-‘) THEN

  REPEAT

    TempSalesHeader := SalesHeader;

 

    TempSalesHeader.”External Document No.” := SalesHeader.”No.”;

    TempSalesHeader.”Document Type” := TempSalesHeader.”Document Type”::Order;

    TempSalesHeader.”No.” := ”;

 

    SalesSetup.GET;

    NoSeriesMgt.InitSeries(SalesSetup.”Order Nos.”,SalesSetup.”Order Nos.”,SalesHeader.”Posting Date”,

    TempSalesHeader.”No.”,TempSalesHeader.”No. Series”);

 

    TempSalesHeader.INSERT(TRUE);

    TempSalesHeader.VALIDATE(“Sell-to Customer No.” , ‘C90000002’);

    TempSalesHeader.”Ship-to Code” := SalesHeader.”Ship-to Code”;

    TempSalesHeader.”Ship-to Name” := SalesHeader.”Ship-to Name”;

    TempSalesHeader.”Ship-to Address” := SalesHeader.”Ship-to Address”;

    TempSalesHeader.”Ship-to City” := SalesHeader.”Ship-to City”;

 

    LinkTable.INIT;

    LinkTable.”No.” := TempSalesHeader.”External Document No.”;

    LinkTable.”No. 2″ := TempSalesHeader.”No.”;

    LinkTable.INSERT;

 

    TempSalesHeader.MODIFY(TRUE);

  UNTIL SalesHeader.NEXT = 0;

 

 

导出XML.

  1. 创建File.
  2. 使用CreateOutStream指定OutStream
  1. 执行XMLPort的条件操作
  1. 设定XMLPort的Destination为OutStream
  1. 执行XMLPort.Export.
  1. 文件关闭

      OFile.CREATE(FileName);

      OFile.CREATEOUTSTREAM(Ostr);

      ICOutboxExportXML.SetICOutboxTrans(ICOutboxTrans);

      ICOutboxExportXML.SETDESTINATION(Ostr);

      ICOutboxExportXML.EXPORT;

      OFile.CLOSE;

      CLEAR(Ostr);

      CLEAR(ICOutboxExportXML);

 

下面是SetICOutboxTrans过程的执行动作.

SetICOutboxTrans(VAR NewICOutboxTrans : Record “IC Outbox Transaction”)

ICOutboxTrans.DELETEALL;

ICOutBoxSalesHdr.DELETEALL;

ICOutBoxSalesLine.DELETEALL;

 

IF NewICOutboxTrans.FIND(‘-‘) THEN

  REPEAT

    ICOutboxTrans := NewICOutboxTrans;

    ICOutboxTrans.INSERT;

 

 

    NewICOutBoxSalesHdr.SETRANGE(“IC Transaction No.”,NewICOutboxTrans.”Transaction No.”);

    NewICOutBoxSalesHdr.SETRANGE(“IC Partner Code”,NewICOutboxTrans.”IC Partner Code”);

    NewICOutBoxSalesHdr.SETRANGE(“Transaction Source”,NewICOutboxTrans.”Transaction Source”);

    IF NewICOutBoxSalesHdr.FIND(‘-‘) THEN

      REPEAT

        ICOutBoxSalesHdr := NewICOutBoxSalesHdr;

        ICOutBoxSalesHdr.INSERT;

      UNTIL NewICOutBoxSalesHdr.NEXT = 0;

 

    NewICOutBoxSalesLine.SETRANGE(“IC Transaction No.”,NewICOutboxTrans.”Transaction No.”);

    NewICOutBoxSalesLine.SETRANGE(“IC Partner Code”,NewICOutboxTrans.”IC Partner Code”);

    NewICOutBoxSalesLine.SETRANGE(“Transaction Source”,NewICOutboxTrans.”Transaction Source”);

    IF NewICOutBoxSalesLine.FIND(‘-‘) THEN

      REPEAT

        ICOutBoxSalesLine := NewICOutBoxSalesLine;

        ICOutBoxSalesLine.INSERT;

      UNTIL NewICOutBoxSalesLine.NEXT = 0;

  UNTIL NewICOutboxTrans.NEXT = 0;

 

相当于XMLPort是工作于临时表. 要做到Export. 首相将记录全部清空, 然后插入需要的记录. 接着再导出.

分类: C/AL, Web Services 标签:

如何添加多个NAS服务器

2008年9月24日 没有评论

NAS服务安装好以后默认只有一个,连接到一台服务器

通过复制Navision Application Server文件夹,再使用命令行方式可以创建多个服务。

nassql.exe appservername=TheNasName, NETTYPE=TCP, servername=TheSQLServer,database=TheSQLDatabase, company="The Company", startupparameter=”THEPARAMETER”, objectcache=40000, installasservice

net start TheNasName

Sc delete The NasName  可以删除这个服务.

 

然后在系统中就可以看到 Application Server for Microsoft Dynamics NAV TheNasName的服务

如果是Codeunit,还需要在属性中设置对TableNo Job Entry的访问。

 

NAS需要配置系统Job Queue才可以运行,测试Job Queue是否正常运行,执行CodeUnit 448 即可实现。

 

关于NAS服务器的参数,如果不是用JOB Queue,也可以使用其他的参数来执行,但需要在Codeunit 1的NASHandle中对这个参数进行描述,比如IF Para=’Test123′ Then Codeunit.Run(xxx)

分类: Installation, Web Services 标签:

配置NAS服务-入门

2007年4月3日 没有评论

首先安装NAS服务器,按照默认会安装两个服务,分别是对应到Navision Classic和Navision SQL Server.
接着配置NAS for SQL Server.
1.创建一个administrators账户,比如nav_app,设定NAS for SQL Server的运行账户为nav_app
2.运行MMC.新建,下面的Service Name中输入NAS for SQL Server的服务名称.Host默认
3.配置Database Server Name为SQL Server的连接名称
4.配置Navision的SQL Server中数据库名称
5.Company Name指定公司名称
6.Start-Up Parameter中输入 JOBQUEUE,这个表示和Codeunit中的1对应,里面有JOBQUEUE的识别过程.
7.Net Type,选择TCP/IP Sockets
8.选择Apply these settings,应用设置,启动服务.
9.再Refresh就可以看到服务已经显示Started.
10.在Navision的客户端中查看Session中,可以看到NAS的连接.
配置完毕,在客户端中启动Application setupJob queue,就可以执行定期任务.

分类: Installation, Web Services 标签: