|
![]() |
#1 |
Участник
|
Добавил проект.
Артём, спасибо за предложенные альтернативы, но меня смущает именно текущая проблема getValue(), и вот собственно откуда это пришло: \Forms\LedgerJournalTransVendInvoice\Data Sources\LedgerJournalTrans\Fields\AccountType\Methods\modified (кстати не понятно зачем использовать getValue, если можно вызвать ledgerJournalTrans.AccountType, при чём в локализации добвленнный код как раз таки и использует ledgerJournalTrans.AccountType, кстати в 2012 getValue так же используется) LedgerJournalACType ledgerJournalACType = this.getValue(); если при инициализации новой линии журнала, мы хотим задать определённый тип журанала: \Classes\LedgerJournalEngine_VendInvoice\initValue X++: ledgerJournalTrans.AccountType = newAccountType;
ledgerJournalTrans_ds.object(fieldNum(LedgerJournalTrans, AccountType)).modified(); так что на данный момент меня интересует почему getValue() не работает, а getValue(1) работает? почему не выходит ошибка, что object not initialized или что-нить в этом духе, а сразу падает дакс ![]() |
|
![]() |
#2 |
Ищущий знания...
|
Цитата:
Сообщение от stalker25
![]() Добавил проект.
Артём, спасибо за предложенные альтернативы, но меня смущает именно текущая проблема getValue(), и вот собственно откуда это пришло: \Forms\LedgerJournalTransVendInvoice\Data Sources\LedgerJournalTrans\Fields\AccountType\Methods\modified (кстати не понятно зачем использовать getValue, если можно вызвать ledgerJournalTrans.AccountType, при чём в локализации добвленнный код как раз таки и использует ledgerJournalTrans.AccountType, кстати в 2012 getValue так же используется) LedgerJournalACType ledgerJournalACType = this.getValue(); если при инициализации новой линии журнала, мы хотим задать определённый тип журанала: \Classes\LedgerJournalEngine_VendInvoice\initValue X++: ledgerJournalTrans.AccountType = newAccountType;
ledgerJournalTrans_ds.object(fieldNum(LedgerJournalTrans, AccountType)).modified(); так что на данный момент меня интересует почему getValue() не работает, а getValue(1) работает? почему не выходит ошибка, что object not initialized или что-нить в этом духе, а сразу падает дакс ![]() как я уже писал, судя по тестам, которые я вчера вечером проводил, метод getValue() не делает того, что от него хотят. Судя по контексту кода напрашивается вывод, что в методе modified() нужно получить значение определенного поля (с типом Enum) текущей, создаваемой строки. Но метод getValue() НЕ ВОЗВРАЩАЕТ значение поля ИЗ ТЕКУЩЕЙ, СОЗДАВАЕМОЙ строки, а возвращает значение этого поля из УЖЕ СУЩЕСТВУЮЩИХ строк в таблице, которые ОТОБРАЖАЮТСЯ на датасорсе формы (по крайней мере так он работает, возможно задумывалось по другому). Если ему (методу getValue()) не передали никаких параметров (т.е. _indexRow = 0), то по умолчанию возвращается значение из ПОСЛЕДНЕЙ строки, отображаемой на датасорсе формы (если строк нет, то приложение падает, это, как я уже писал, косяк ядра). Если параметр передан, то система пытается найти нужную строку, и если не находит, то просто ничего не возвращает (не падает). Я не знаю, что на самом деле там задумывали разработчики в этом методе, так же не знаю почему они его используют. Но что то мне подсказывает, что в методе modified() поля AccountType нужно переписать строку с: X++: LedgerJournalACType ledgerJournalACType = this.getValue(); X++: LedgerJournalACType ledgerJournalACType = ledgerJournalTrans.AccountType; З.Ы. сейчас подумал, возможно разработчики расчитывали, что метод вернет значение из СОЗДАВАЕМОЙ строки, если не передать параметр, так как по идее она последняя. Но либо метод как то косячно написан, либо ещё чего, но он возвращает значения только уже СОЗДАННЫХ строк ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 14.12.2011 в 13:42. |
|
|
За это сообщение автора поблагодарили: Bega (1), stalker25 (1). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от lev
![]() Но метод getValue() НЕ ВОЗВРАЩАЕТ значение поля ИЗ ТЕКУЩЕЙ, СОЗДАВАЕМОЙ строки, а возвращает значение этого поля из УЖЕ СУЩЕСТВУЮЩИХ строк в таблице, которые ОТОБРАЖАЮТСЯ на датасорсе формы (по крайней мере так он работает, возможно задумывалось по другому). Если ему (методу getValue()) не передали никаких параметров (т.е. _indexRow = 0), то по умолчанию возвращается значение из ПОСЛЕДНЕЙ строки, отображаемой на датасорсе формы (если строк нет, то приложение падает, это, как я уже писал, косяк ядра). Если параметр передан, то система пытается найти нужную строку, и если не находит, то просто ничего не возвращает (не падает).)
|
|
![]() |
#4 |
Ищущий знания...
|
Цитата:
проверял на AX2009 RU5.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#5 |
Участник
|
Иван, я вижу последнюю версию 6.0.947.280, как я понимаю 6.1 будет релиз в первом квартале 2012 года, тем не менее в 6,0 уже выскакивает ошибка, без крэша
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|