Если же... на одну строку SalesTable несколько строк в PickingRouteid..., то тоже решаемо...
Переопределяем все тот же init:
X++:
public void init()
{
QueryBuildDatasource qbds;
;
super();
qbds = this.query().dataSourceTable(tableNum(PickingRouteid));
qbds.clearDynalinks();
qbds.clearLinks();
qbds.orderMode(OrderMode::GroupBy);
qbds.addSortField(fieldNum(PickingRouteid, Field1));
qbds.addSortField(fieldNum(PickingRouteid, Field2));
qbds.addSortField(fieldNum(PickingRouteid, Field3)); // поля выборки в группировку
qbds.addLink(fieldNum(SalesTable, SalesId), fieldNum(PickingRouteid, transrefId));
qbds = this.query().dataSourceTable(tableNum(SalesTable));
qbds.orderMode(OrderMode::GroupBy);
qbds.addSortField(fieldNum(SalesTable, Field1));
qbds.addSortField(fieldNum(SalesTable, Field2));
qbds.addSortField(fieldNum(SalesTable, Field3)); // поля выборки в группировку
}