Показать сообщение отдельно
Старый 15.10.2008, 10:18   #5  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,497 / 1096 (39) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от bobski Посмотреть сообщение
Спасибо, но это немного не то.
Таблицы разные.
Например: LedgerJournalTrans и LedgerTrans.
Эти таблицы имеют схожие наборы полей, участвующие в процедуре разноски. Но в LJT и в LT было добавлено поле. После разноски значение из созданного поля в LJT должно попадать в LT. Отвечает за разноску класс LedgerJournalCheckPost. А вот в каком методе происходит перенос данных из LJT в JT я, к сожалению, не нашел. И поэтому вспомнил про указанную в вопросе функцию из Nav.
В данном случае лучше сделать доплнительный parm метод на классе LedgerVoucherTransObject и через него передавать в разноску что нужно, и уже внутри разноски все делать.

Но если вернуться к вопросу переноса полей, то в аксапте обычно создают метод типа initFromTable1 на таблице Table2, и вызывают его Table2.initFromTable1(Table1).

Или можно сделать свой buf2buf типа:
X++:
static void myBuf2Buf(
    Common  _from,
    Common  _to
    )
{
    DictTable   dictTable = new DictTable(_from.tableId);
    fieldId     fieldId   = dictTable.fieldNext(0);
    fieldId     fieldIdto;
    fieldName   fieldName;

    while (fieldId && ! isSysId(fieldId))
    {
        fieldName = fieldId2name(_from.TableId, fieldId);
        fieldIdto = fieldname2Id(_to.TableId, fieldName);

        if (fieldIdto && typeof(_to.(fieldIdto)) == typeof(_from.(fieldId))) 
            _to.(fieldIdto)  = _from.(fieldId);

        fieldId         = dictTable.fieldNext(fieldId);
    }
}
За это сообщение автора поблагодарили: kashperuk (3).