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 

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 UAT的数据库还原到开发环境(how-to-restore-d365fo-sandbox-db-to-dev)

还原数据库 以下是将 Sandbox DB 恢复到 DEV 的过程。 SqlPackage.exe /a:import /sf:D:\Exportedbacpac\my.bacpac /tsn:localhost /tdn:<target database name> /p:CommandTimeout=1200 Example Demo 1. SqlPackage.exe /a:import /sf:J:\MSSQL_BACKUP\Demo_PreProdbackup.bacpac /tsn:localhost /tdn:PreProd_20220712 /p:CommandTimeout=1200 Demo 2. SqlPackage.exe /a:import /sf:J:\MSSQL_BACKUP\Demo_uatbackup.bacpac /tsn:localhost /tdn:uat_20221028 /p:CommandTimeout=1200   NEW-20251113 >SqlPackage.exe /Action:Import /SourceFile:"C:\Users\localadmin\Downloads\restoredb\cig-uatbackup.bacpac" /TargetServerName:"dvhd10039vm2" /TargetDatabaseName:"AxDB_Prod_20251107" /TargetEncryptConnection:False /p:CommandTimeout=0 /TargetTrustServerCertificate:True ALTER DATABASE [uatbackup_20190401.bacpac] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 6 DAYS, AUTO_CLEANUP = …

Continue reading ‘如何把Dynamics 365 FO UAT的数据库还原到开发环境(how-to-restore-d365fo-sandbox-db-to-dev)’ »

如何在D365FO创建SSRS报表(三)Contract Class(how-to-create-ssrs-report-in-d365fo-part3-contract-class)

Contract 存放报表打印时使用的参数 实现接口 SysOperationValidatable [ DataContractAttribute, SysOperationGroupAttribute(’Parameters’, "@SYS28007", ‘1’), SysOperationGroupAttribute(’ViewGroup’, "@SYS5252", ‘2’) ] public class Demo_InventJournalTransTransferContract implements SysOperationValidatable { TransDate fromDate,toDate; InventDimViewContract InventDimViewContract;     [ DataMemberAttribute("From date"), SysOperationLabelAttribute(literalstr("From date")), SysOperationDisplayOrderAttribute(’1’) ] public TransDate parmFromDate(TransDate _fromDate = fromDate) { fromDate = _fromDate; return fromDate; }   [ DataMemberAttribute("To date"), SysOperationLabelAttribute(literalstr("To date")), SysOperationDisplayOrderAttribute(’2’) ] public TransDate …

Continue reading ‘如何在D365FO创建SSRS报表(三)Contract Class(how-to-create-ssrs-report-in-d365fo-part3-contract-class)’ »

如何修改系统标准的SSRS报表(how-to-extend-standard-ssrs-report)

CustAccountStatementExt 演示如何向 Customer account statement report 添加新字段 1.添加新字段 主临时表是 CustAccountStatementExtTmp,右键单击并创建扩展;我将添加一个新的字符串字段 MaxTxT。 2. 复制这个报表 重命名为:CustAccountStatementExt 3.修改报告设计 右键单击报表数据集并选择恢复以刷新新字段,打开报表设计器并将该字段添加到表中 4. 创建一个新的扩展类来扩展标准报表Controller class class CustAccountStatementExtControllerExtextends CustAccountStatementExtController { //Add construct public static CustAccountStatementExtControllerExtconstruct() { return new CustAccountStatementExtControllerExt(); }   public static void main(Args _args) { SrsPrintMgmtFormLetterController controller = new CustAccountStatementExtControllerExt(); controller.parmReportName(PrintMgmtDocType::construct(PrintMgmtDocumentType::CustAccountStatement).getDefaultReportFormat()); controller.parmArgs(_args); CustAccountStatementExtControllerExt::startControllerOperation(controller, _args); }   protected static void startControllerOperation(SrsPrintMgmtFormLetterController _controller, Args …

Continue reading ‘如何修改系统标准的SSRS报表(how-to-extend-standard-ssrs-report)’ »

如何通过Print management 打印SSRS报表(how-to-print-ssrs-report-using-print-management)

报表打印管理Print management 添加一个新的Report format 如下图为Customer invoice添加两个新的Report format 图中的两个Report format可以通过添加一下代码可以实现 [ExtensionOf(classStr(PrintMgmtReportFormatPopulator))] public final class PrintMgmtReportFormatPopulator_Demo_Extension { #PrintMgmtSetup   protected void addDocuments() { // Add new customized reports this.addOther(PrintMgmtDocumentType::SalesOrderInvoice, ssrsReportStr(DocSalesInvoice, Report), ssrsReportStr(DocSalesInvoice, Report), #NoCountryRegionId); this.addOther(PrintMgmtDocumentType::SalesOrderInvoice, ssrsReportStr(DocSalesInvoiceExt, Report), ssrsReportStr(DocSalesInvoiceExt, Report), #NoCountryRegionId); // Add the standard report design, because of PrintMgmtDocType.getDefaultReportFormatDelegate() this.addOther(PrintMgmtDocumentType::SalesOrderInvoice, ssrsReportStr(SalesInvoice, Report), ssrsReportStr(Sal next addDocuments(); } } …

Continue reading ‘如何通过Print management 打印SSRS报表(how-to-print-ssrs-report-using-print-management)’ »

如何在D365FO创建SSRS报表(二)Controller Class(how-to-create-ssrs-report-in-d365fo-part2-controller-class)

Report controller 继承SrsReportRunController 如果没有特殊要求,以下代码就可以搞定。 public class Demo_InventJournalTransTransferController extends SrsReportRunController {   public static void main(Args _args) { Demo_InventJournalTransTransferController controller = new Demo_InventJournalTransTransferController();   controller.parmReportName(ssrsReportStr(Demo_InventJournalTransTransfer, Report)); controller.parmDialogCaption("@Demo954"); controller.parmArgs(_args); controller.startOperation(); } } 多选 如果需要打印用户所选的数据,多选需要用到 MultiSelectionHelper public class Demo_InventJournalTransTransferController extends SrsReportRunController { ……   public void preRunModifyContract() { Demo_InventJournalTransTransferContract contract = this.parmReportContract().parmRdpContract() as Demo_InventJournalTransTransferContract; }   public void …

Continue reading ‘如何在D365FO创建SSRS报表(二)Controller Class(how-to-create-ssrs-report-in-d365fo-part2-controller-class)’ »

如何在SSRS报表中创建条码、 二维码(how-to-create-barcode-qrcode-in-ssrs-report)

Barcode和QR code在SSRS报表中很常见,下面分别介绍如何添加他们。 二维码QRcode 在SSRS的临时表中创建一个字段存储二维码,类型扩展 Bitmap 在相关类中添加如下代码,举例说明: xyzTableBuffer.QRCode =QRHelper::QRCode(“123456789”) public static container QRCode(Str _QRContents) { // QRContents is a formatted string provided as input to this function. // For example _QRContents= ?name=’Customer name’&rr=’RFCno’&tt=’totalInvoiceAmount’;   System.Drawing.Bitmap bm = null; try { var qrCodeEncoder = new Encoder(); bm = qrCodeEncoder.Encode(_QRContents); } catch (Exception::CLRError) { error(CLRInterop::getLastException().ToString()); } using (var stream …

Continue reading ‘如何在SSRS报表中创建条码、 二维码(how-to-create-barcode-qrcode-in-ssrs-report)’ »