Вроде все корректно. А что вы ожидали увидеть?
На скрине экрана 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 - такой атрибут всегда загружается. Иначе идейный смысл назначения аннотации был бы потерян.