在 Microsoft Dynamics AX 2009 年过帐采购订单时出现错误消息:"无法创建记录在采购订单头-更新表 (PurchParmSubTable)"

适用于: Microsoft Dynamics AX 2009Microsoft Dynamics AX 2009 Service Pack 1

本文适用于 AX 的所有地区。

症状


当您在 Microsoft Dynamics AX 2009 年过帐采购订单时,您会收到以下错误消息:
不能在采购订单头-更新表 (PurchParmSubTable) 中创建一个记录。
如果满足以下条件之一为真,将发生此问题:
  • 启用所有表的"生命科学电子签名审核跟踪安装程序"的设置。
  • 您创建的通用表的记录。
  • 数据库日志中,您设置的 PurchParmTable 表。
在您过帐采购订单、 收货清单、 装箱单和发票时,将发生此问题。下列产品中发生此问题:
  • 与服务 Microsoft Dynamics AX 2009 包 1
  • Microsoft Dynamics AX 2009

解决方案


修补程序信息

受支持的修补程序现已从 Microsoft 推出。 然而,它仅用于纠正本文中描述的问题。 它仅应用于正经历此特定问题的系统。 此修补程序可能会接受进一步的测试。 因此,如果这个问题没有对您造成严重的影响,我们建议您等待下一步的 Microsoft Dynamics AX 2009 service pack 或包含此修复程序的下一个版本。 注意 在特殊情况下,可免收的支持电话,可免收如果技术支持专业人员对 Microsoft Dynamics 和相关的产品的费用确定某个特定的更新能够解决您的问题。 照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

安装信息

安装此修复程序之前,请验证 AX 客户端的用户都将被注销系统。 要实现此修补程序时,在登录的唯一客户端用户。若要实现此修补程序,必须使用开发人员许可证。注意 我们建议用户帐户在 Windows 登录窗口或数据库登录窗口将 AX 中的管理员用户组的成员。

代码更改

Microsoft 提供的编程示例只用于演示目的,不带任何明示或暗示性担保。 这包括但不限于对适销性或特定用途适用性的暗示性担保。 本文假定您熟悉演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释某个特定过程的功能。 但是他们不会修改这些示例以提供额外的功能,也不会构建过程以满足您的特定要求。 始终测试代码修复在受控环境中应用之前与您的生产计算机的修补程序。若要解决此问题,请它们执行以下步骤:
  1. 按如下所述覆盖 PurchParmSubTable 表中的插入方法中的代码:
    public void insert(){    PurchParmSubTable tempPurchParmSubTable;    ;    select tempPurchParmSubTable where        tempPurchParmSubTable.ParmId == this.ParmId        && tempPurchParmSubTable.TableRefId == this.TableRefId        && tempPurchParmSubTable.OrigPurchId == this.OrigPurchId;    if(tempPurchParmSubTable.RecId == 0)    {        super();    }}
  2. 按如下所述覆盖 PurchParmSubTable 表中的createFromPurchParmTable方法中的代码:
    static PurchParmSubTable createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true){    PurchParmSubTable   purchParmSubTable;    systemSequence systemSequence;    ;    ttsbegin;    purchParmSubTable.clear();    purchParmSubTable.initValue();    purchParmSubTable.initFromPurchParmTable(_purchParmTable);    if (_insert)    {        systemSequence = new systemSequence();        purchParmSubTable.RecId = systemSequence.reserveValues(1, tablenum(PurchParmSubTable));        purchParmSubTable.insert();    }    ttscommit;    return purchParmSubTable;}
  3. 按如下所述覆盖 SalesParmSubTable 表中的插入方法中的代码:
    public void insert(){    SalesParmSubTable tempSalesParmSubTable;    ;    select tempSalesParmSubTable where        tempSalesParmSubTable.ParmId == this.ParmId        && tempSalesParmSubTable.TableRefId == this.TableRefId        && tempSalesParmSubTable.OrigSalesId == this.OrigSalesId        && tempSalesParmSubTable.subId == this.subId;    if(tempSalesParmSubTable.RecId == 0)    {        super();    }}
注意 您必须将合并在这些方法中的任何现有自定义。

先决条件

不需要任何先决条件。

重启要求

应用此修补程序后,不需要重新启动计算机。

状态


Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。