Показать сообщение отдельно
Старый 30.07.2013, 10:18   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Классы LedgerJournalTransEntityManager, LedgerJournalTransEntityInMemRollback, LedgerJournTransEntityFrmDatEventManager
Добрый день всем.

Кто-нибудь разбирал работу классов
LedgerJournalTransEntityManager,
LedgerJournalTransEntityInMemRollback,
LedgerJournTransEntityFrmDatEventManager

?

Сегодня пришлось поковыряться. Не покидает ощущение какой-то искусственности всех конструкций. Код живет на sys слое, а в комментах ссылаются на баги ядра которые обходят при помощи этих классов. Неужели пофиксить нельзя было. Или прикладная разработка и разработчики ядра живут в параллельных мирах ?

Некоторые места совсем странные.
Например
\Classes\LedgerJournalTransEntityInMemRollback\performRollbackForAbortedDelete
X++:
    // The cursor has been changed by the kernel, but the delete was unsuccessful. Re-read the records
    // and point to the correct buffer.
    ledgerJournalTrans_DS.research();
    ledgerJournalTrans_DS.findRecord(ledgerJournalTransSnapshot);

    // Get the cursors
    ledgerJournalTransCursor = ledgerJournalTrans_DS.cursor();
FindRecord() конечно оптимальное решение для поиска строки

или тут :
\Data Dictionary\Tables\LedgerJournalTrans\Methods\copyTo
X++:
    // Generate the list of system fields contained by this table.
    systemFieldIds.add(fieldnum(LedgerJournalTrans, RecId));
    systemFieldIds.add(fieldnum(LedgerJournalTrans, RecVersion));
    systemFieldIds.add(fieldnum(LedgerJournalTrans, DataAreaId));
С каких-то пор поля Created*, Modified* перестали быть системными ? Походу автор метода никогда не читал Global::buf2buf() и в глаза не видел Global::isSysId()

В общем, осталось ощущение какого-то набора костылей. Неужели нельзя было без этого обойтись. Ядро в конце концов пофиксить если реально никак по-другому.

P.S. ax2009