Показать сообщение отдельно
Старый 28.09.2006, 15:59   #1  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
Копирование строк таблицы с помощью DictTable
прочитал:
манипуляции с таблицами
Можно ли имея только название(имя) таблицы добавить в неё запись?

т.к. мне необходимо копировать строки таблиц, возникла идея использовать один метод класса для дублирования записей любых таблиц:
Код:
static common copy(int      _tablenum,
                              int      _countField, // количество полей
                              recid    _recid)
{
    DictTable   dt    = new DictTable(_tablenum);
    int         i,insertMethodNum;
    FieldId     fieldId;
    Common      record, newrecord;
    ;
    if(dt.fieldCnt()<_countField)
        throw error('');
    record = dt.makerecord();
    select firstonly record where record.recid == _recid;
    newrecord = dt.makeRecord();
    for(i=1;i<=_countField;i++)
    {
      fieldId = dt.fieldCnt2Id(i);
      newrecord.(fieldId) = record.(fieldId);
    }
    return newrecord;
}
далее, если необходимо,
я изменяю значения нескольких полей, которые должны быть отличными от оригинала и вставляю строку...
Код:
    myTable.Data(RecordCopy::Copy(tablenum(myTable),20,recId));
    myTable.TransDate = systemdateget();
   ...
    myTable.Insert();
вопросы следующие:
на сколько корректен код метода?
каким образом, если возможно, использовать orig(),
что то типа record.orig().(fieldId), для получения значения до изменения?