如何在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)’ »

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创建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)’ »

如何在D365FO创建SSRS报表(一)Report Data Provider Class(how-to-create-ssrs-report-in-d365fo-part1-report-data-provider-class)

Report data provider class 继承SrsReportDataProviderPreProcessTempDB 声明所用到的Contract 和 Query还有其他变量 [ SRSReportParameterAttribute(classStr(Demo_InventJournalTransTransferContract)), SRSReportQueryAttribute(queryStr(Demo_InventJournalTransTransferQuery)) ] class Demo_InventJournalTransTransferDP extends SrsReportDataProviderPreProcessTempDB { } SRSReportDataSetAttribute 定义临时表保存报表的Header,Footer 等数据 [ SRSReportDataSetAttribute(’Demo_InventJournalTransTransferHeaderTMP’) ] public Demo_InventJournalTransTransferHeaderTMP getHeader() { select * from header; return header; }   [ SRSReportDataSetAttribute(’Demo_InventJournalTransTransferFooterTMP’) ] public Demo_InventJournalTransTransferFooterTMP getFooter() { select * from footer; return footer; } Process report 处理报表的数据 public void …

Continue reading ‘如何在D365FO创建SSRS报表(一)Report Data Provider Class(how-to-create-ssrs-report-in-d365fo-part1-report-data-provider-class)’ »