Связь - это всегда взгляд подчиненного на начальника. Это подчиненному важно мнения начальника, а не наоборот
Поэтому связь всегда настраивается из DataSource подчиненной таблицы. Если же идти со стороны "начальника", то к моменту инициализации DataSource главной таблицы DataSource подчиненной может быть еще не инициализирована
Если я правильно понял и у Вас
TSRTechItemTreeTable - главная
TSRTechItemImportance - подчиненная
То связь настраивается в init для источника данных TSRTechItemImportance. Подчиненной таблицы
X++:
public void init()
{
super();
this.query().dataSourceTable(tablenum(TSRTechItemImportance)).addLink(
fieldnum(TSRTechItemTreeTable, TechItemId), // поле главной таблицы
fieldnum(TSRTechItemImportance, TechItemId), // поле текущей таблицы
TSRTechItemTreeTableTS_ds.name()); // имя DS главной таблицы
}
Справка по методу addLink указывает распределение параметров так
thisDataSource.addLink(parentField, thisField [, parentDatasourceName])
Имя DataSource главной таблицы (3 параметр) обычно не указывают. Это имеет смысл только в случае, если источников данных с этой таблицей несколько и надо уточнить, о каком именно источнике идет речь
---------------------------------
С другой стороны, а зачем Вы вообще программированием занимаетесь? В смысле, написанием кода. Это имеет смысл только в том случае, если настроенные на таблицах Relation отличаются от той связи, которая Вам нужна на конкретной форме. Ну, или вообще не указана
Если же настроенные Relation на подчиненной таблице к главной и так те, какие Вам нужны, то просто сделайте настройку в DataSource для указания типа связи
В свойствах DataSource подчиненной таблицы TSRTechItemImportance указать
JoinSource = TSRTechItemTreeTable
LinkType = OuterJoin
И никакого программирования не нужно