存档

2014年11月 的存档

NAV中的帐号迁移

2014年11月19日 评论已被关闭

在NAV中, 用户帐户体系支持SQL Server用户与Windows用户, 有不少朋友来问到升级过程中, 可能同时会伴随用户帐号的升级, 有什么方便的方法呢?

 

下面以SQL Server帐号迁移至Windows帐号来做例子进行简单介绍, 这个过程中, 可能会涉及到相应的代码. 大家按需使用即可.

  1. 在Windows Login表中新建字段SQL ID

     

  2. 准备如下所示的用户映射表

SQL ID

Windows ID

Name

A001

ZhangSan

张三

 

  1. 使用Dataport或Excel导入工具导入到Windows Login表中.

    也可以使用DataLoad工具来导入, 这个是Jack介绍给我的一个工具, 早期的Oracle平台常用此工具来导入数据.

    关于DataLoad的使用, 大家可以Baidu了解

 

  1. 完成Windows Login的数据录入并且SQL ID信息也都完成匹配后, 接下来创建一个用于直接运行的Report.

     

    以Windows Login作为DataItem, 在OnAfterGetRecord()后书写下面代码:

    “Member Of”.SETRANGE(“User ID”, “SQL ID”);

    If “Member Of”.Find(‘-‘) Then Repeat

        “Windows Access Control”.Init;

        “Windows Access Control”.”Login SID” := “SID”;

        …… 继续编写从Member Of中复制权限到Windows Access Control中.

    Until “Member Of”.Next=0;

     

    接下来运行报表, 完成权限的移植. 查看 Tools\Security\Windows Logins, 用户对应的Roles此时应该已经创建完毕.

     

  2. 再次以Windows Login作为DataItem创建用于直接运行的Report.

    在OnAfterGetRecord()后编写代码:

    wName := Login.ShortUserID(Name);

    if userSetup.get(wName) then currReport.Skip;

     
     

    if userSetup.get(“SQL ID”) then

    Begin

    if not(nUser.get(wName)) then Begin

    nUser.init;

    nUser.transferfields(userSetup);

    nUser.”User ID” := wName;

    nUser.insert(False);

    End;

    End;

    上面代码中:

    wName表示缩减后的Windows Name, 即\字符后的Windows Name

    Login 表示Codeunit 418 Login Management

    userSetup 表示用户设置表

    nUser 表示用户设置的临时表, 用来保存需要新增的用户表

     

    接下来在DataItem的OnPostDataItem()后编写代码:

    userSetup.reset;

    if nUser.find(‘-‘) then repeat

    userSetup.init;

    userSetup.transferfields(nUser);

    userSetup.insert(False);

    until nUser.Next=0;

     

    用于将临时表中的数据写回到User Setup中.

 

接下来, 仿照第五步的操作, 如果有启用Bin模块, 则复制Warehouse Employee的数据. 这里的get需要调整下, 采用反查. 即以User表作为DataItem, 得到具有仓库权限的用户, 再根据SQL ID得到Windows Login的Name, 将Name继续创建到Warehouse Employee表中.

 

至此, 整个系统的帐号完成迁移过程. 整个过程无需保存Report, 客户用License都能完成上述所有操作.

分类: Uncategorized 标签:

NAV2015中的几个特别Page

2014年11月18日 评论已被关闭

在NAV2015中, 开始引入了丰富的图和Cuegroup组件. 采用醒目的看板方式显示在Role Center中.

 

经过博主的分析和整理, 特别将下面几个Page介绍给大家.

 

Page 1393, Mini Trial Balance, 使用GridLayout + 数组变量, 卡片式窗口, 完全实现动态构建整个前台界面. 此点非常值得学习. 如果我们需要做一些交互式的界面.用此方式较为方便.

 

Page 1395, Mini Video Player, 使用VideoPlay组件, 用于在Web前台播放如何使用的案例, 并且此Page在Role Center相应的Codeunit中还有判断是否首页推送, 实现在Web前台登录后, 在RTC Web界面上弹出视频播放窗口. 视频播放地址和来源在Codeunit 1321中. 其调用过程是Page 9022 Small Business Role Center àPage 1310 Mini Activities (CueGroup展开)à调用Codeunit 1321(显示Video Player播放窗口)

 

Page 681, Report Inbox Part, NAV2015的新功能, 配合报表任务, 实现报表自动运行并保存后存储于用户的报表收件箱中. 此Page使用PingPong组件,用于检查Inbox的数据并自动更新. CurrPage.PingPong.Ping(10000); 为其更新频率10000毫秒.

 

Page 1390, Mini Generic Chart, 用于显示KPI视图, 在Web界面下显示效果明显优于RTC界面. 使用Microsoft Chart组件. 如果需要图表功能, 建议学习此界面.

 

Page 9025, Small Business Report Catalog, 使用NAV2015中的CueGroup + Control Action, 将相应的Action采用看板标签方式显示. 在Web界面上显示效果漂亮, 在RTC客户端上显示为普通网格, 效果较差.

 

Page 9030 Account Manager Activities等系列Activities Page, 都是用了Cue Group + Field, 其中Field使用DrillDown已显示相应的功能. 其字段数据来源于表9050-9061的Calcsums数据

 

Page 9175 Connection Online, 使用Microsoft Connect Online组件, 用于在RTC中显示微软沟通社区, 下面有三个页签更换按钮, 用于切换不同社区, Customer Source等. 但此界面在Web下无法工作.

 

分类: Uncategorized 标签:

NAV也能做计划任务

2014年11月17日 评论已被关闭

NAV也能实现计划任务, 身边的朋友可能比较陌生.

下面通过一个简单的示例演示如何实现NAV下的计划任务.

  1. 准备NAV5.0的NAS安装程序
  2. 准备NAV5.0的标准数据库. 在这里, 博主特别分享NAV5下的独立NAS数据库(微云下载). 大小为1MB fdb格式.
  3. 安装NAS后, 在命令行下执行

    nas appservername=nasjob,database=c:\Nas.fdb,company=Cronus,startupparameter=JOBQUEUE,installasservice

  4. 更改nasjob服务的运行帐号为Windows帐号, 启动服务.

 

通过上面简单的4个步骤, 非常简单, 一个标准的NAV计划任务环境建立完毕. 那么这个环境可以做些什么呢?

下面我们来回顾下计划任务本身含义, 在指定的时间执行指定的任务. 那么NAV的计划任务我们需要了解如何设置指定的时间以及指定的任务.

接下来, 请暂停上面步骤建立的nasjob服务, 启动NAV5的单机客户端, 打开Nas.fdb, 并打开公司Cronus

如上图所示, 在这个1MB的环境中, 我们包括了计划任务和一些系统简易功能. 我们主要看计划任务.

点击Job Queue Setup. 我们可以查看到Job Queue Active已经是选中状态, 表示计划任务已经激活.

点击Job Queue Entries. 可以查看到目前的任务有执行Report 5001, 当前状态是Ready.

切换到Recurrence, 我们可以查看到这是一个经常的任务, 每天都会运行. 从早到晚, 每隔一分钟运行一次.

 

那么, 我们现在关闭NAV客户端, 启动nasjob服务, 就将查看到我们的计划任务按照每天/每隔一分钟运行一次的频率, 运行着Report 50001.

 

Report 5001 就是NAV里面编写的代码, 这里各位可以编写基于文件的复制/备份, 亦或是基于微信的提醒. 具体执行的任务就由大家来编码了.

请注意, Nas.fdb中的Report 50001无任务执行代码. 仅用于观察计划任务的执行.

 

分类: Uncategorized 标签:

NAV与其他应用的交互

2014年11月17日 评论已被关闭

NAV自3.x版本以来, 一直以开放的平台型ERP为其主要特点. 在这一点上, 本博文将重点讨论开放平台上的应用交互.

作为应用的交互, 我们的通常的理解是, 与Office交互, 网络访问. 而在计算机领域, 通常有下面几种划分:

Automation DLL方式交互

这类型的交互, 主要有Office, AutoCAD,QlikView等应用软件或ADO, RDO等数据库连接器, 他们安装好以后, 支持以自动化方式全面交互.

在NAV中, 典型实例可以参考Table 370, 使用Office Excel 的自动化交互. 这些交互支持事件管理. 如应用程序激活后, NAV中如何控制其事件.

这些交互方式的一般应用方法是:

  1. Create(对象); 创建对象
  2. 对象.方法(参数); 执行相应的功能
  3. Clear(对象); 清除对象, 释放内存

 

那么使用这些交互能实现什么功能呢?

  1. 使用ADO可以进行字符集转换, 如经常我们对于文本文件需要UTF8/Unicode/ANSI格式相互转换. ADO.Stream可以支持此应用
  2. 使用ADO可以连接到SQL Server, Access, MySQL, Oracle等其他数据库, 进行数据交互. 通常有Ado.Connection, Ado.RecordSet
  3. 使用Office Excel可以进行Excel文件交互, 如自动启动Excel, 并填写数据. 绘制图表
  4. 使用CDO可以进行邮件发送. 参考Codeunit 400
  5. 使用QlikView可以进行Qlik Application (QVW)交互
  6. 使用AutoCAD可以启动CAD, 并自动标注绘图, 打印绘图等
  7. 使用Wscript可以进行WMIC, Shell, Popup等系统交互

 

 

OCX方式交互

OCX又名ActiveX控件, 是在Windows平台上的另外一种应用交互形式. 如Flash的播放器, 就是以ActiveX控件形式体现.

OCX与Automation的主要区别在于, OCX是可视化的, 一定具备界面的, 通常是由NAV来调用生成的界面. 而Automation则不一定具备界面. 如ADO,CDO,Wscript等

 

OCX在NAV中的交互方式是Automation非常接近.

 

 

传统动态链接库DLL方式交互

传统动态连接库DLL, 主要指传统的C++接口, 这类型接口多见于POS机接口, 收银箱接口等. 这类型DLL在NAV中不能直接进行交互. 因为其不能在Automation / OCX中直接列出, 那么是不是我们就不能用了呢? 不是, 我们可以通过VS.Net创建基于COM Interop的Automation DLL, 下面简单介绍下创建过程.

  1. 新建VS.Net类项目, 可以是C#, 也可以是VB.Net
  2. 在项目属性中, 配置Register for COM Interop为True, 如果是基于x86的应用, 还需要设置项目属性中编译为x86平台.
  3. 新建类. 并添加对System.Runtime.InteropServices的引用.
  4. 使用Dllimport “传统dll文件名” function xxx end function创建对传统DLL的接口调用
  5. 新增Function, 如传统dll中是Login, 我们新增的可以叫做nLogin, 在新增Function中调用传统的Login
  6. 编译并生成DLL, 并在NAV中使用Automation进行调用. 后面的使用就和上面介绍的第一种交互方式一样了.

 

DotNet交互

从NAV2009R2开始, NAV开始了与DotNet的直接交互, 不过仅限于RTC平台. 有了DotNet的直接交互. 可以更加方便的进行业务设计.

在这里, 特别推荐NAV中的计划解决方案, 采用的是DotNet Netronic Gantt组件.

 

这些对象与RTC的交互方式由于涉及篇幅较多, 主要都是基于业务来设计. 后续有时间将转型描述. 当然, 如果我们要与DotNet在传统客户端上也交互, 可以使用COM技术, 将DotNet组件转换为Automation DLL来实现Classic客户端上的应用.

 

互联网相关的API交互

在互联网浪潮的今天,越来越多的应用开放了API, 并允许我们进行相互交互调用, 那么NAV如何支持并实现呢?

在NAV中, 对于这些API, 我们主要使用Microsoft XMLHttp组件来进行交互. Microsoft XMLHttp是AJAX的主要应用. 支持Post, Get等数据交互.


 

分类: Uncategorized 标签:

三分钟建立云端NAV2013

2014年11月14日 评论已被关闭
  1. 登录到Windows Azure管理平台


     

  2. 选择新建计算机, 虚拟机


     

    接下来选择从库中创建


     

    在接下来的创建虚拟机四步骤中:

    第一步: 选择Dynamics NAV 2013 R2映像


     

    第二步: 输入虚拟机名称, 虚拟机的用户名和密码(注意, 用户名和密码是远程登陆使用的)


     

    第三步: 选择虚拟机的付款方式(订阅). 所在区域, 及开放端口(注意3389的公用端口会自动生成)


     

    第四步: 选择增值的第三方扩展. 如第三方管理和安全管理等.

    如果不安装这些扩展, 可以直接选择红圈标记的完成创建动作.


     

     

  3. 现在又返回到Windows Azure管理控制台, 在这里可以查看到NAVASIA正在创建中

  4.  

    点击下方的活动区域, 可以查看到当前的虚拟机活动状态


     

  5. 约三分钟后, 我们通过状态栏查看到NAVASIA已经创建完毕.

  6.  

     

  7. 接下来我们点击 NAVASIA, 打开虚拟机的状态监控仪表盘, 在右侧有显示DNS名称和公网IP地址. 请记住此信息.

  8.  

    本演示中, 获取到其公网IP为 23.99.102.215

    接着切换到端点, 可以查看到其远程桌面端口为55895. 请记录此信息.


     

  9. 现在使用本地计算机上的远程桌面管理软件, 输入地址 23.99.102.215:55893

  10.  

    在弹出的用户名密码中输入创建云端服务器环境中设置的用户名和密码.


     

    至此, 已经可以连接到云端服务器中. 如下图所示:


     

    桌面上已经安装并创建好NAV2013R2的服务器,RTC客户端, Web客户端, 开发环境

    我们的云端NAV ERP环境已经快速搭建好. 整个步骤在3分钟之内可以完成.


     


分类: Installation, NAV2013, Training 标签: