Вроде все корректно. А что вы ожидали увидеть?
На скрине экрана Lead.browse, судя по наименованиям колонок таблицы, те самые атрибуты, которые вы заказали в FetchPlan на экране: test
, tt
, aa
.
Как описана таблица в дескрипторе этого экрана вы не показываете, но , судя о всему, там заказано отображение именно этих колонок класса LeadClass
: test, tt, aa.
tt
и aa
- ссылочные атрибуты, при отображении их в таблице выводится InstanceName.
Для сущности Test
у вас аннотация @InstanceName стоит на атрибуте name.
Когда таблица на экране Lead.browse отображает ссылочные атрибуты tt
и aa
- отображается InstanceName сущности ссылочного атрибута. Вы законно видите в обоих колонках значение атрибута класса Test, отмеченного как @InstanceName (у вас это атрибут name
).
Если в таблице не экране Lead.browse вы хотите видеть в одной колонке значение атрибута tt.name
, а в другой значение aa.test
- так и укажите в разметке таблицы в теге <Column>
.
FetchPlan - он про Загрузку данных. А разметка таблицы - про то, Что из загруженных данных надо отобразить. Попытаетесь отобразить атрибут, который не заказан в FetchPlan и не загружен - получите ошибку “attribute unfetched”.
Чтобы убедиться, что FetchPlan загрузил то, что ему заказано - ставьте точку останова на экране Lead.browse где-то на уровне события AfterShow
и посмотрите в контейнер LeadClassesDc
.
Вот там вы наверняка увидите, что для экземпляров LeadClass
, для его ссылочного атрибута tt
заграждено только поле name
, а для атрибута aa
загружены оба их поля - и name
, и test
.
Происходит это потому, что атрибут name помечен аннотацией @InstanceName
- такой атрибут всегда загружается. Иначе идейный смысл назначения аннотации был бы потерян.