AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2013, 10:18   #1  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 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
Старый 30.07.2013, 12:50   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
В перечисленном я не нашел ссылку на баги ядра. Там, насколько я помню, такая ситуация, что таблицу разделили на несколько и надо управлять им как единым целым. Клиент это пока не поддерживает - вот и пишут обертки так, чтобы клиент думал, что сохраняет данные, а он их не сохраняет а сохранять самим в одной транзакции.

А баги в ядре регистрируются, я например, весной регистрировал багу с компиляцией в IL и ее пофиксили. Только следует учесть, что это решается в порядке общей очереди - расставляют приоритеты и ставят в план.
За это сообщение автора поблагодарили: Logger (2).
Старый 30.07.2013, 13:21   #3  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
В перечисленном - да. Но вообще в комментах внутри классов было.
Я думал можно было это попроще сделать.
Например inner join между датасорсами сделать или избавиться от связи датасорсов. Если я правильно понял их проблемы, то при сохранении ядро сохраняет LedgerJournalTrans, после чего дергается LedgerJournalTrans_ds.Active
а из-за него
LedgerJournalTransRcash_ds.LinkActive
а из-за него LedgerJournalTransRcash_ds.Executequery

Так что если я правильно понял их затруднения, то это не баг а фича.
По-моему можно было бы проще это решить вообще разорвав связь между датасорсами чтобы не дергался LedgerJournalTransRcash_ds.LinkActive
а дергать его самим по необходимости.

Потому что по сути они ломают принятую в аксапте схему работы, привнося из-за неё новые хитрые глюки.
Старый 30.07.2013, 13:59   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Подобные задачи нынче модно решать по-другому: http://msdn.microsoft.com/en-us/library/jj129662.aspx
За это сообщение автора поблагодарили: Logger (2).
Старый 30.07.2013, 14:48   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ещё вот интересный пост в тему axdaily: Unit of Work
За это сообщение автора поблагодарили: Logger (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
позволяют ли стандартные классы Аксапты проводить валидацию XML? (XMLTextReader, XMLSchema и т п) Cardagant DAX: Программирование 1 15.03.2013 00:24
Классы InventSumDate* и таблица InventSumDelta Bega DAX: Программирование 3 15.11.2012 16:33
abstract классы и методы zZ_TOP_Zz DAX: Программирование 6 24.07.2007 14:52
Axapta 3.0 - можно ли править классы в USR слое AKIS DAX: Программирование 3 07.02.2004 01:19
Системные классы ReportOutput & RepotViewer ta_and DAX: Программирование 2 14.10.2003 13:51

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:53.