如何在D365FO导入Excel文件(How to import EXCEL using X++ in D365 FO)

开始之前的准备 Using System.IO; Using OfficeOpenXml; Using OfficeOpenXml.ExcelPackage; Using OfficeOpenXml.ExcelRange; 除了基本的包,我们还需要参考包:Directory 第一部分代码 在这部分代码中,创建了一个导入对话框,在这里我们可以选择需要导入的文件,文件上传之后会被存储在临时的空间中 第二部分代码 在这部分代码中,我们从导入的Excel中获取数据 完整的代码 Using System.IO; Using OfficeOpenXml; Using OfficeOpenXml.ExcelPackage; Using OfficeOpenXml.ExcelRange; class RunnableClass1 { /// <summary> /// Runs the class with the specified arguments. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main(Args _args) { /*———part 1 ——————*/ System.IO.Stream …

Continue reading ‘如何在D365FO导入Excel文件(How to import EXCEL using X++ in D365 FO)’ »

如何在D365FO导出Excel文件(How to export to EXCEL using X++ in D365 FO)

步骤 创建一个Job 添加以下代码 class RunnableClass2 { public static void main(Args _args) { CustTable custTable; DocuFileSaveResult saveResult = DocuFileSave::promptForSaveLocation("@ApplicationPlatform:OfficeDefaultWorkbookFileName","xlsx", null, "excel create and export"); if (saveResult&& saveResult.parmAction() != DocuFileSaveAction::Cancel) { saveResult.parmOpenParameters(’web=1’); saveResult.parmOpenInNewWindow(false); System.IO.Stream workbookStream = new System.IO.MemoryStream(); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); using(var package = new OfficeOpenXml.ExcelPackage(memoryStream)) { var worksheets = package.get_Workbook().get_Worksheets(); var worksheet = worksheets.Add("Sheet1"); …

Continue reading ‘如何在D365FO导出Excel文件(How to export to EXCEL using X++ in D365 FO)’ »

为D365 Devbox 的Windows虚拟机设置静态IP

Hyper-V的虚拟机默认使用Default Switch虚拟网卡来连接宿主机的网络,好处是不需要自己单独配置网络,直接切换选择使用就可以。但倘若是物理机使用mstsc远程连接到当前的虚拟机里,默认的Default Switch虚拟网卡就不能很好的满足我们的需求了,毕竟那玩意儿ip重启就变…… Hyper-v 设置 简单说明 虚拟机内访问互联网的网络由Default Switch虚拟网卡提供。而E0虚拟网卡则通过设置任意的静态IP(非本地回环等一些特殊的ip地址),对宿主机提供内网服务。 1.错误方式 为了实现目的,曾经试过修改虚拟机里的网卡为静态IP,但结果嘛:重启还是关机,又或者变更网络后,默认的 Default Switch 网卡会dhcp获取与设置的静态ip不一致,导致虚拟机内部无法连接到互联网。 后来很长一段时间里,一直使用的是新建内部网络来设置静态IP供mstsc使用。但是有个问题,若虚拟机需要连接到互联网,这时候需要共享宿主机的网络到内部网络里,而且似乎只能选择一个内部网络共享?最伤的还是,有时候宿主机开机后,Windows11 6月份的补丁很容易导致无法连接网络,所以每次只能卸载6月份更新的内容,要不然就是取消共享网络,改用回默认网卡,很是不便利。 2.正确方式 某天点着Hyper-V的设置,突然想起可以给虚拟机设置多网卡啊,这样问题不就得到解决了? 确实如此:使用 Default Switch 虚拟网卡来访问互联网,而自建的 E0 虚拟网卡用来设置静态IP,供同宿主机连接访问使用。 这样的好处是:和Hyper-V对应的物理机平常连接互联网的速度一样。虚拟机内部访问互联网的网络由Hyper-V自带的 Default Switch 虚拟网卡来提供,虚拟机与宿主机直接的网络连接由 E0 虚拟网卡提供,两者互不冲突(前提是你ip不能设置为一样的)。而通过共享、桥接、将Default Switch 网卡设置为静态IP的等方式,多多少少需要等待一会儿才能访问互联网,而且很有可能还会出现连接失败、受限制的问题,这并不方便。 2.1 新建内部网络 设置,虚拟交换机管理器,添加一个内部网络,名称随意。为了方便记录,博主这里用的是 E0 。 2.2 使用内部网络 找到对应的虚拟机,设置,添加网络硬件,选择上面创建好的 E0 网卡,下方网络加入。 2.3 设置静态IP(虚拟机) 虚拟机里找到网络适配器,找到创建好的 E0 虚拟内部网卡,将其ipv4信息“任意”填写一下。注意,这里不能使用本地回环等一些特殊的IP地址。比如:可以填写我们常见的 192.168.x.x ,后面两段就随意了。 宿主机配置 端口转发 将一个RDP服务(远程桌面协议)转发到任意端口,将进来的流量从3340端口转发到标准的RDP端口3389,使用上面分配的IP地址 netsh interface portproxy add v4tov4 listenport=3340 listenaddress=192.168.1.2connectaddress=192.168.168.168 connectport=3389 查看系统中的所有转发规则是否生效: netsh interface portproxy show all …

Continue reading ‘为D365 Devbox 的Windows虚拟机设置静态IP’ »

Code upgrade snippets from AX2009 to AX2012 and D365FO

InventDimSearch In Microsoft Dynamics AX 2009, the InventDimSearch class was used to get information about theinventory dimension setup. This class has been deleted and several new classes have beenimplemented to make it possible to get information about the dimension setup. In order to determine whether a dimension for a specific field is active in Microsoft …

Continue reading ‘Code upgrade snippets from AX2009 to AX2012 and D365FO’ »

| Tagged 

如何配置D365FO本地开发机(How-to-configure-onebox-VM-on-local)

前言 现在如果要使用本地的开发机,微软需要我们先在 Azure 门户中创建一个 Web 应用程序,在您将用户设置为管理员之前,您还必须执行一个步骤,那就是生成自签名证书,这里我们使用Azure创建的应用程序 ID,为它配置证书。 配置Azure 打开 Azure 订阅,搜索App registrations 点击New registration 输入名称,选择允许的账户类型 Redirect URI,输入虚拟机中FO的网站地址,类型选择Web,等会我们还要加另外一条,这里点击Register 点击Redirect URIs 加入另外一条然后保存 配置虚拟机 打开桌面上的Generate Self Signed Certificates,这里输入刚刚创建的Application Id 自签名证书创建好之后,打开桌面上的AdminUserProvisioning,输入对应的邮箱即可。

如何通过命令行部署SSRS报表(Deploy-SSRS-reports-through-command-line-in-D365FO)

可以使用 Visual Studio 完成 D365 FO 中的SSRS报表的部署。但我们还有另一种方法可以更快地部署SSRS报表。 我们可以在环境中使用Windows Powershell来更快、更轻松地部署SSRS报表。以下是在 D365 FO 中使用 Windows Powershell 部署SSRS报表的步骤。 1. 以管理员身份打开 Windows Powershell 2. 使用下面的命令进入相关的文件夹 3. 使用下面的命令部署SSRS报表

如何将 UAT 的数据在上线时部署到生产环境(How-to-deploy-UAT-data-to-production-server-in-D365FO)

前言 首先这次的操作并不是官方推荐的,但是在绝大多数上线的时候,主数据都是在UAT环境配置和测试,并且绝大多数的应用顾问或者用户都不希望做这种重复劳动,他们太忙了吧~ 然而系统并没有提供可以直接部署或者还原的功能,那么我们就创建一个Service Request给微软吧。 Service Request 登录 LCS,打开 Project Details ,创建一个新的Service request 如下图: 新建 如下图: 选择 Sandbox to production 如下图: 接下来需要选择 Sandbox source 、downtime 等等 提交 勾选所有选项后提交吧,提示说这个过程至少需要5个小时的停机时间,但是绝大多数情况1小时左右就能完成了。

DynamicsAX与第三方系统(Using-webservice-to-connect-with-Dynamics-AX)

Webservice 第三方接口调用AX内部程序 SystemConnector 在”Csharp”代码中,我们可以直接调用”Systemconnector”提供的接口从而实现执行AX内部程序的功能。 如:axServiceProvider.handleAgileData(“cig”, _XMLStr); 实际上 “axServiceProvider” 是通过内置函数 “CallStaticClassMethod” 来实现调用AX内部程序。 string returnStr = (string)op.CallStaticClassMethod(“AX Class”, “Class Method”, _legal, _XMLStr); 将第三方外部程序组织的XML数据主动传递给AX,AX内部只需要解析该XML数据即可执行相应的业务逻辑操作。 在 axServiceProvider 中我们可以设定AX2009的环境端口,用户,密码,公司等信息,同样可以构建更多的方法来调用Ax不同的功能。 下文是通过”Csharp”代码调用接口的样例: Consume SystemConnector in VS using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml; using SystemConnector.DynamicsAX;   namespace CIG_WCF4AgileAX { public partial class WebForm1 …

Continue reading ‘DynamicsAX与第三方系统(Using-webservice-to-connect-with-Dynamics-AX)’ »

如何在 DynamicsAX 中处理CLR对象报错的问题(Working-with-CLR-exceptions-in-Dynamics AX)

CLR对象报错 在 Dynamics AX 中 无论版本是2009还是2012或者D365,总是会遇到下面这两个报错: 而且系统给出的日志实在是太简短了,让人摸不着头脑。不过一般出现这两个问题都是在AX中处理 .net 相关的 dll 或者在调用 web service、WCF。那么剩下的问题就是我们该怎么样得知在调用 .net 框架的时候究竟出了什么问题呢,一旦知道了具体原因就好办了。 好,那我们通过一个 Job 演示一下吧: static void RaiseCLRException(Args _args) { ; //Necessary if executed on the AOS new InteropPermission(InteropKind::ClrInterop).assert();   try { //This will cause an exception System.Int32::Parse("abc"); } catch(Exception::CLRError) { //Access the last CLR Exception info(CLRInterop::getLastException().ToString());   //See AifUtil::getClrErrorMessage for another …

Continue reading ‘如何在 DynamicsAX 中处理CLR对象报错的问题(Working-with-CLR-exceptions-in-Dynamics AX)’ »

如何安装和配置一台 Dynamics 365 FO的开发机(How-to-setup-a-d365fo-develop-machine)

配置开发机 以下是一些安装条件 从 Microsoft Dynamics Lifecycle Services 下载安装虚拟机文件 共用资产库 可下载的 VHD 此处略过如何挂载虚拟机… 远程桌面用户名密码: User name: Administrator Password: pass@word1 重命名开发机 在以下两种情况下需要重命名开发机: 在数据库中更新服务器名称 通过以下命令在 Microsoft SQL Server 2016 中更新: sp_dropserver [old_name];GOsp_addserver [new_name], local;GO 如果不记得了,可以通过以下命令得到老的服务器名称:select @@servername 更新报表服务器 需要在报表服务器配置中重新选择数据库 更新 Azure Storage Emulator 开始菜单,打开 Microsoft Azure,打开Microsoft Azure Storage Emulator 或者到路径 :C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Azure\Storage Emulator 执行命令:AzureStorageEmulator.exe startAzureStorageEmulator.exe statusAzureStorageEmulator.exe init -server …

Continue reading ‘如何安装和配置一台 Dynamics 365 FO的开发机(How-to-setup-a-d365fo-develop-machine)’ »