如何在 D365FO 的现有量查询中增加字段和数据源(Add the new field or datasource in Inventory On hand form using X++ in D365FO)

我们需要为类 InventDimCtrl_Frm_OnHand 创建一个扩展,以使用方法 modifiedQueryBasedOnDatasourceName 来实现这种Inventory On hand定制。 通过这种方式,我们可以在网格中添加带有过滤选项的新字段。(不使用显示方法)。根据需求,我们可以在表单中添加来自现有数据源以及新数据源的字段。 [ExtensionOf(classStr(InventDimCtrl_Frm_OnHand))] final class InventDimCtrl_Frm_OnHandClass_Extension { public void modifyQueryBasedOnDatasourceName( Query _inventSum_DS_Query, str _inventSum_DS_Name, FormDataSource _inventDim_DS) { Query query; QueryBuildDataSource qbds; QueryBuildDataSource qbdsInventOnHandItemListView; QueryBuildDataSource qbdsInventTable; Counter loop; boolean qbdsExists; next modifyQueryBasedOnDatasourceName(_inventSum_DS_Query, _inventSum_DS_Name, _inventDim_DS);       query =   _inventSum_DS_Query;       qbdsInventTable = query.dataSourceTable(tableNum(InventTable));       if (qbdsInventTable)     {         qbdsInventTable.addGroupByField(fieldNum(InventTable, BinLocation));         qbdsInventTable.addGroupByField(fieldNum(InventTable, ItemStatus)); …

Continue reading ‘如何在 D365FO 的现有量查询中增加字段和数据源(Add the new field or datasource in Inventory On hand form using X++ in D365FO)’ »

| Tagged 

如何D365FO使用视图使Display方法可以被过滤(How to create a filter on display method using view in D365FO)

基于Display的方法的表单字段不可过滤,但在某些情况下,客户希望这些字段可过滤(Filter on display method)。有两种方法可以使显示字段可过滤,我们将在本博客中仅解释最佳方法(使用最佳实践)。 在我们的案例中,供应商名称字段是一个基于Display方法的字段,并且不可过滤。 1.创建一个视图: – metadata: 我们需要获取将替换显示字段的字段以及将用于与表单数据源创建关系的字段的表。(在我们的例子中是 VendTable 和 DirPartyTable) – fields: 将替换显示字段的字段和我们将用于与表单数据源创建关系的字段。(在我们的例子中是 Name 和 AccountNum) 2.在 FormDatasource(我们的案例 PurchLine)表上,我们需要添加一个与我们创建的 VendTableName 视图的新关系。 3. 在我们的表单上添加视图 VendTableName 作为数据源,并在 VendTableName FormDatasouce 属性上与主数据源(PurchLine)创建连接。 4. 最后一步是在表单网格上添加我们想要的视图数据字段。 输出结果:

| Tagged 

如何在D365FO工作流中使用审核编辑功能(how to use approval editable in d365fo workflow)

在Dynamics 365 F&O工作流开发过程中,配置采购订单工作流时,有两个审批元素可供使用,一个是“审批采购订单”,另一个是“可编辑的审批采购订单”(下文也将对其进行突出显示)。我的问题是关于第二个元素的开发,即“可编辑的审批采购订单”。根据我的测试,如果在配置过程中将此元素关联起来,系统将允许审批人编辑采购订单,然后在之后进行审批操作。 可编辑的审批仅允许审批人编辑所选记录(他们正在审批的)。您可以按照以下步骤实现相同的功能: public boolean editAllowed() { WorkflowElementTable workflowElementTable; WorkflowWorkItemTable workflowWorkItemTable;   select * from workflowWorkItemTable where workflowWorkItemTable.RefRecId == this.RecId && workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending && workflowWorkItemTable.UserId == curUserId() && workflowWorkItemTable.CompanyId == this.DataAreaId;   select * from workflowElementTable where workflowElementTable.ElementId == workflowWorkItemTable.ElementId;   return workflowElementTable.ElementName == workflowApprovalStr(CaseDetailBaseApprovalEdit) || this.CaseWFStatus == CaseWFStatus::Draft; } public int active() …

Continue reading ‘如何在D365FO工作流中使用审核编辑功能(how to use approval editable in d365fo workflow)’ »

如何在D365FO 中使用 Num2Str(因为每次使用的时候都会忘记)

参数 : number :要转换为字符串的实数。 seperator1 参数的可能枚举值为:点(.),逗号 (,) seperator2 参数的可能值为:无,点(.),逗号(,),空格( ) 使用 static void Job_Num2Str(Args _args) { real realNum = 12345.1294567890123456777; // 19 decimals places. ; info(Num2Str(realNum,0,16,1,3)); // 16 decimal places info(Num2Str(realNum,0,17,1,3)); // 17 decimal places } } 输出 12 345.1294567890123457 12 345.13  

| Tagged 

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