DMF/DIXF AX 2012 R3 自定义生成方法
DMF/DIXF AX 2012 R3 Custom generate method
我正在使用 Data Import Export Framework
(DIXF) 解决文件交换(导出)问题,我想添加生成方法以查找与来自 VendPackingSlipTrans
的接收行关联的 LineAmount
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 中存在一些字段,所以在暂存中添加了这个字段 table 但其他字段存在于其他 table 中,例如LineAmount.I 不知道如何在暂存中添加其他字段 table。为此,我在 myEnityclass 中创建了生成方法来关联源 table 中的字段。分期 table
所以您似乎想要使用数据 import/export-Framework (DIXF) 的自定义实体从 PurchLine
记录中导出包含附加信息的 VendPackingSlipTrans
记录。如果那是正确的,那么您的实现中存在几个问题:
if (_stagingToTarget)
分支中的逻辑:由于框架既可以用于导入也可以用于导出,所以使用_stagingToTarget
来区分两者。如果 _stagingToTarget
是 true
,数据将从暂存 table 导入到 Dynamics AX 目标 table。所以需要把逻辑放在else
分支中。
- selection of
PurchLine
record:当前实现永远不会 select a PurchLine
record 因为未实例化的值 VendPackingSlipTrans
table 变量用作 select 语句中的条件。此外,选择的标准是错误的,请查看 table VendPackingSlipTrans
的方法 purchLine
以了解如何获取 PurchLine
记录以获取 VendPackingSlipTrans
记录并使用target
变量实例化 VendPackingSlipTrans
table 变量。
- check
if (! purchLine)
:这个检查的意思是如果前面的select语句找不到PurchLine
条记录,就使用这条空记录的LineAmount
用于暂存记录。这是错误的,相反,您想使用已找到的记录的 LineAmount
。
entity.insert()
:正如我在评论中提到的,不应在生成方法中插入实体记录;该框架将负责插入
这些问题的可能解决方案如下所示:
[
DMFTargetTransformationAttribute(true),
DMFTargetTransformationDescAttribute('function that determines LineAmount for export'),
DMFTargetTransformationSequenceAttribute(11),
DMFTargetTransFieldListAttribute([fieldStr(DMFVendPackingSlipTransEntity, LineAmount)])
]
public container GenerateLineAmount(boolean _stagingToTarget = true)
{
container res;
PurchLine purchLine;
VendPackingSlipTrans vendPackingSlipTrans;
if (_stagingToTarget)
{
// this will be executed during import
res = [0.0];
}
else
{
// this will be executed during export
// the target variable contains the VendPackingSlipTrans that is exported
vendPackingSlipTrans = target;
purchLine = vendPackingSlipTrans.purchLine();
if (purchLine)
{
res = [purchLine.LineAmount];
}
}
return res;
}
我正在使用 Data Import Export Framework
(DIXF) 解决文件交换(导出)问题,我想添加生成方法以查找与来自 VendPackingSlipTrans
的接收行关联的 LineAmount
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 中存在一些字段,所以在暂存中添加了这个字段 table 但其他字段存在于其他 table 中,例如LineAmount.I 不知道如何在暂存中添加其他字段 table。为此,我在 myEnityclass 中创建了生成方法来关联源 table 中的字段。分期 table
所以您似乎想要使用数据 import/export-Framework (DIXF) 的自定义实体从 PurchLine
记录中导出包含附加信息的 VendPackingSlipTrans
记录。如果那是正确的,那么您的实现中存在几个问题:
if (_stagingToTarget)
分支中的逻辑:由于框架既可以用于导入也可以用于导出,所以使用_stagingToTarget
来区分两者。如果_stagingToTarget
是true
,数据将从暂存 table 导入到 Dynamics AX 目标 table。所以需要把逻辑放在else
分支中。- selection of
PurchLine
record:当前实现永远不会 select aPurchLine
record 因为未实例化的值VendPackingSlipTrans
table 变量用作 select 语句中的条件。此外,选择的标准是错误的,请查看 tableVendPackingSlipTrans
的方法purchLine
以了解如何获取PurchLine
记录以获取VendPackingSlipTrans
记录并使用target
变量实例化VendPackingSlipTrans
table 变量。 - check
if (! purchLine)
:这个检查的意思是如果前面的select语句找不到PurchLine
条记录,就使用这条空记录的LineAmount
用于暂存记录。这是错误的,相反,您想使用已找到的记录的LineAmount
。 entity.insert()
:正如我在评论中提到的,不应在生成方法中插入实体记录;该框架将负责插入
这些问题的可能解决方案如下所示:
[
DMFTargetTransformationAttribute(true),
DMFTargetTransformationDescAttribute('function that determines LineAmount for export'),
DMFTargetTransformationSequenceAttribute(11),
DMFTargetTransFieldListAttribute([fieldStr(DMFVendPackingSlipTransEntity, LineAmount)])
]
public container GenerateLineAmount(boolean _stagingToTarget = true)
{
container res;
PurchLine purchLine;
VendPackingSlipTrans vendPackingSlipTrans;
if (_stagingToTarget)
{
// this will be executed during import
res = [0.0];
}
else
{
// this will be executed during export
// the target variable contains the VendPackingSlipTrans that is exported
vendPackingSlipTrans = target;
purchLine = vendPackingSlipTrans.purchLine();
if (purchLine)
{
res = [purchLine.LineAmount];
}
}
return res;
}