Использование Conversion Studio с помощью To-Increase для импорта заметок в Microsoft Dynamics AX 2009 - PullRequest
0 голосов
/ 04 апреля 2011

В настоящее время я использую Conversion Studio для ввода файла CSV и сохранения содержимого в таблице AX.Эта часть работает.У меня есть определенный блок, и поля правильно сопоставлены.

Файл CSV содержит несколько столбцов комментариев, таких как Комментарии-1, Комментарии-2 и т. Д. Их фиксированное количество.Публичные комментарии помечены как Комментарии-1 ... 5, а частные комментарии помечены как Приват-комментарий-1 ... 5.

Желаемый результат - перенести данные в таблицу AX.(как в настоящее время работает) и либо объедините поля комментариев, либо сохраните их как отдельные комментарии в таблице DocuRef в качестве внутренних или внешних заметок.

Разве это не потребует установки нового блока в проекте Conversion Studio, которыйУ меня уже есть настройки?Можете ли вы указать мне на ресурс, который, возможно, показывает аналогичную процедуру или как это сделать?

Заранее спасибо!

1 Ответ

0 голосов
/ 26 апреля 2011

После погони за кроликом по глубине кроличьей норы я обнаружил, что самый простой способ сделать это выглядит так:

Переопределить метод 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;
}
...