通过To-Increase使用Conversion Studio将Notes导入Microsoft Dynamics AX 2009

时间:2011-04-04 15:30:31

标签: microsoft-dynamics dynamics-ax-2009 axapta

目前,我正在使用Conversion Studio引入CSV文件并将内容存储在AX表中。这部分正在运作。我定义了一个块,并且字段已正确映射。

CSV文件包含多个注释列,例如Comments-1,Comments-2等。这些列有固定数量。公众意见标记为评论-1 ... 5,私人评论标记为私人评论1 ... 5.

期望的结果是将数据带入AX表(当前正在工作)并连接注释字段或将它们作为单独的注释存储在DocuRef表中作为内部或外部注释。

不需要在我已设置的Conversion Studio项目中设置新块吗?你能指点一个资源,可能会显示类似的程序或怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:0)

在将兔子追逐到最深的兔子洞后,我发现最简单的方式就是这样:

覆盖文档处理程序的onEntityCommit方法(扩展AppDataDocumentHandler),如下所示:

AppEntityAction onEntityCommit(AppDocumentBlock documentBlock, AppBlock fromBlock, AppEntity toEntity)
{

  AppEntityAction ret;
  int64 recId; // Should point to the record currently being imported into CMCTRS
  ;
  ret = super(documentBlock, fromBlock, toEntity);
  recId = toEntity.getRecord().recId;
  // Do whatever you need to do with the recId now
  return ret;

}

以下是插入注释的方法,以防您需要:

private static boolean insertNote(RefTableId _tableId, int64 _docuRefId, str _note, str _name, boolean _isPublic)
{
  DocuRef docuRef;
  boolean insertResult = false;
  ;
  if (_docuRefId)
  {
    try
    {
        docuRef.clear();
        ttsbegin;
        docuRef.RefCompanyId = curext();
        docuRef.RefTableId = _tableId;
        docuRef.RefRecId = _docuRefId;
        docuRef.TypeId = 'Note';
        docuRef.Name = _name;
        docuRef.Notes = _note;
        docuRef.Restriction = (_isPublic) ? DocuRestriction::External : DocuRestriction::Internal;
        docuRef.insert();
        ttscommit;

        insertResult = true;
    }
    catch
    {
        ttsabort;
        error("Could not insert " + ((_isPublic) ? "public" : "private") + " comment:\n\n\t\"" + _note + "\"");
    }
  }
  return insertResult;
}