摘要:在AZure里,一般用Azure Blob做数据传输的中间媒介,D365 FO的数据生成到Blob里,其他系统从Blob里获取,或者相反,这样就不用单独设置FTP服务器了,当然这个是要钱的。要想使用Blob,需要在AZure上创建存储账号,创建好存储账户以后,就可以设置访问密钥了。 .NET提供了读
阅读全文
摘要:https://www.cnblogs.com/Farseer1215/p/12845342.html这一篇文章中介绍了,通过属性扩展的框架。最近遇到一个问题,不小心笔误了,比如如下所示,把Female的属性不小心写成male了,然后编译是不会报错的。 1 [Gender(Gender::Male)
阅读全文
摘要:Global类里提供了两个方法strRFix和strLRfix,方法的实现如下: 1 static str strRFix(str _str, int _length, char _char = ' ') 2 { 3 return strRep(_char, _length - strLen(_st
阅读全文
摘要:D365FO采用https,第三方通过API调用的时候,客户端不见得信任D365FO的证书,调用时候会报基础连接已关闭,发送时发生错误,调用堆栈如下: 1 at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, In
阅读全文
摘要:D365FO引用.NET DLL比AX2012更方便,自己用C#写一个功能,在X++中引用也非常简单,具体实现方式可以参照D365FO的开发文档。https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-tools
阅读全文
摘要:客户端调用json-based服务非常简单,就是标准的http调用。http调用首先要解决URL的组成,D365 FO json-based调用的url组成如下:https://usnconeboxax1aos.cloud.onebox.dynamics.cn/api/services/{服务组名}
阅读全文
摘要:D365 FO的Custom Service的实现比AX2012简单了很多。AX2012服务方法要用属性SysEntryPointAttribute标记,添加到Services以后,还要发布服务并在系统管理入站端口添加操作,服务运行在CIL下,所以每次改动服务方法的代码都要增量生成CIL。AX201
阅读全文
摘要:D365 FO 在github上发布了第三方访问D365 FO的示例代码,里面包含了各种调用示例,代码很清晰。https://github.com/microsoft/Dynamics-AX-Integration这篇blog简单分析一下代码中获取访问令牌的部分代码。与获取访问令牌相关的代码有两个类
阅读全文
摘要:从Axapta3.0的COM Business Connector,到AX4.0和AX2009的 .NET Business Connector,到AX2012的WCF Services,最后到D365FO的接口方式。AX的接口演化,几乎见证了微软整个技术栈的变迁。D365 FO的Web Servi
阅读全文
摘要:实施AX2012的时候,如果不注意经常会发生测试环境和正式环境搞混的情况,特别是上线初期,如果在窗体的状态栏加上不同的颜色做区分更方便识别环境。上线以后,如果是多公司,一个用户有多个公司的权限,需要切换公司进行操作,也可以用不同的颜色进行提示。原理很简单,AX的窗体有统一的入口SysSetupFor
阅读全文
摘要:在一个表里用到了Unit,最开始的时候想用UnitOfMeasure的字符串Symbol,所以就用了EDTA类型UnitIdBase,它的基础类型是str。后来想用RecId更合适,就把字段删掉,重新创建了一个int64的字段,EDT类型用了UnitOfMeasureRecId。然后同步数据库的时候
阅读全文
摘要:BPErrorClassNewNotProtected: The constructor (i.e. the 'new' method) should be protected. In addition, private constructors are allowed on final class
阅读全文
摘要:D365以后X++越来越像主流的编程语言了。D365之前X++类成员变量是不能使用访问修饰符pubic,protected,public的,默认为protected,也就是类及其子类可以访问成员变量。D365以后可以使用变量修饰符修饰成员变量。D365之前的类成员变量是不能初始化的,也就是不能在定义
阅读全文
摘要:X++里格式化字符串使用strFmt函数,字符串里面的替代符号用%1表示,比如 1 strFmt("%1 World", Hello); 类似于C#里的string.Format,只不过C#里使用{0}做替代符号。在C#里,如果{N} N大于了后面字符串的数目,在运行期会报错,如下代码: Conso
阅读全文
摘要:系统中定义属性,有些属性的new方法会有入参,指定一些property的值,如果没有正确赋值,在编译的时候会导致编译错误,但是并不会明确告诉 是哪里的问题,只会给出如下图所示的报错。 当然它会指出具体是哪个类报错了,但不会提示是属性赋值错误导致的。比如下面的代码。 是想在某种情况下忽略BP检查,Su
阅读全文