14.07.2014, 10:04 | #1 |
Участник
|
Отображение значения аналитики DimensionDefault в отладчике
AX2012
есть вот такой код X++: LedgerJournalTrans lgt; ; select firstOnly lgt where lgt.DefaultDimension; info(strFmt("%1, %2", lgt.LedgerDimension, lgt.DefaultDimension)); VALUE: 5637146433 { DisplayValue: 8004} а для lgt.DefaultDimension 5637144870 {[FK REPLACEMENT FAILED]} собственно вопрос как можно повлиять на это(перекрыть какой-нибудь метод может), чтобы вместо фразы FK REPLACEMENT FAILED показывать что-нибудь осмысленное |
|
14.07.2014, 10:41 | #2 |
Участник
|
Может это вам поможет
Как лучше отлаживать код с временными таблицами, recordset'ами, set'ами, map'ами и прочими сложными структурами? Правда на табличке я не пробовал toString() перекрывать. Но можно сделать класс просмотрщик, как по ссылке описано. |
|
14.07.2014, 11:10 | #3 |
Участник
|
ну перекрытие на DimensionAttributeValueSet метода toString() не помогает
надо перекрывать что то ответственное за вывод FK REPLACEMENT FAILED, не понятно только что |
|
14.07.2014, 11:14 | #4 |
Участник
|
я не это вам предлагал.
Я бы сделал вспомогательный метод, который по связям таблички для заданного поля искал бы связанную запись и возвращал бы common.Titlefiled1, common.Titlefiled2 А метод можно дергать из класса обертки из метода toString() тогда получится как бы плагин к отладчику для просмотра значений полей произвольной таблички. Но это разработка не на 5 минут. Если нужно быстро слепить - то можно то же самое для конкретной таблички. Самое просто сделать еще одно поле, несохраняемое в базе, которое заполнять на postLoad() таблички. Конечно замедлит производительность, но после отладки это можно и отключить. |
|
14.07.2014, 11:23 | #5 |
Участник
|
не очень понял идеи.
если для просмотра значения при отладке менять текущий отлаживаемый код понятно что можно написать что угодно и выводить это как надо, вопрос собственно как это сделать не меняя выполняемого кода |
|
14.07.2014, 11:35 | #6 |
Участник
|
Цитата:
Класс просмотрщик "поселить" в application и сделать в нем два параметра - имя переменной и имя поля. В классе просмотрщике на toString вытаскивать значения (можно например использовать runbuf() ) и отображать нужные значения. Проще наверно никак. Возможно для RefRecid полей есть аналог метода toString который и возвращает строку для отладчика, но я про такой ничего не слышал. |
|
14.07.2014, 12:17 | #7 |
Участник
|
Для DefaultDimension идет ссылка на таблицу DimensionAttributeValueSet, для которой нет ссылок на другие таблицы и не заполнена автогруппа AutoIdentification
К сожалению, отладчик не выводит значения из дисплейного метода в этом случае. Но можно воспользоваться, как выше советуют, методом postLoad() и несохраняемым в БД полем, заполняя его только для случая отладки (и добавить его в группу AutoIdentification)
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Logger (1). |