Добрый день всем.
Кто-нибудь разбирал работу классов
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