DMF / DIXF AX 2012 R3自定义生成方法

时间:2015-10-12 17:13:04

标签: axapta dynamics-ax-2012 x++ dynamics-ax-2012-r3

我正在使用Data Import Export Framework(DIXF)处理文件交换(导出),我想添加生成方法来查找与接收行LineAmount关联的VendPackingSlipTrans Purchline PurchLine table.I创建以下脚本但我需要帮助:

[DMFTargetTransformationAttribute(true),DMFTargetTransformationDescAttribute("Function that generate LineAmount"),
 DMFTargetTransformationSequenceAttribute(11),
 DMFTargetTransFieldListAttribute([fieldStr(DMFVendPackingSlipTransEntity,LineAmount)])
]
public container GenerateLineAmount(boolean _stagingToTarget = true)
{

    container                  res;
    PurchLine                  purchLine;
    VendPackingSlipTrans       vendPackingSlipTrans;

    if (_stagingToTarget)
    {
        select firstOnly purchLine
            where purchLine.LineAmount                  == entity.LineAmount &&
                  vendPackingSlipTrans.OrigPurchid      == purchLine.PurchId &&
                  vendPackingSlipTrans.PurchaseLineLineNumber == purchLine.LineNumber;

        if ( ! purchLine )
        {
            entity.LineAmount = purchLine.LineAmount ;
            entity.insert();
        }
    }
    res = [entity.LineAmount];
    return res;
}

我必须使用DMF将数据从ax导出到文件,因此我在VendPackingSlipTrans中存在一些字段,因此在临时表中添加了这些字段,但其他字段存在于LineAmount等其他表中。我不知道如何在登台表中添加此其他字段。为了在myEnityclass中我创建了generat方法来关联源表中的字段。到临时表

1 个答案:

答案 0 :(得分:2)

因此,您似乎希望使用数据导入/导出框架(DIXF)的自定义实体从VendPackingSlipTrans记录中导出PurchLine条记录以及其他信息。如果这是正确的,那么您的实现中会出现一些问题:

  1. if (_stagingToTarget)分支中的逻辑:由于框架可用于导入和导出,因此_stagingToTarget用于区分两者。如果_stagingToTargettrue,则会将数据从登台表导入Dynamics AX目标表。所以你需要把逻辑放在else分支。
  2. 选择PurchLine记录:当前实现永远不会选择PurchLine记录,因为未实例化的VendPackingSlipTrans表变量的值将用作select语句中的条件。所选标准也是错误的,请查看表purchLine的方法VendPackingSlipTrans,了解如何获取PurchLine记录的VendPackingSlipTrans记录并使用{{1变量实例化target表变量。
  3. check VendPackingSlipTrans:此检查表示如果可以使用上一个select语句找到NO if (! purchLine)记录,则此空记录的PurchLine将用于登台记录。这是错误的,而您想要使用已找到的记录的LineAmount
  4. LineAmount:正如我在评论中提到的,实体记录不应该插入到generate方法中;框架将负责插入
  5. 这些问题的可能修复方法如下:

    entity.insert()