Сейчас посмотрел в своё приложение. У нас там заплатка в классе SysQuery в методах packDataSource/unpackDataSource вместе с queryBuildDataSource.table() пакуется и восстанавливается queryBuildDataSource.label(). И вспоминается мне, что это как раз из-за похожей проблемы.
X++:
// Pack table-Id
dataSourcePack = conins(dataSourcePack, #packTableIdPos, [queryBuildDataSource.table()]);
dataSourcePack = conins(dataSourcePack, #packLabelPos, [queryBuildDataSource.label()]); // <<--
X++:
str Label; // KSM
...
// Unpack tables
...
[relatedTableId] = conpeek(pack, #packTableIdPos);
dictTable = new DictTable(relatedTableId);
if (dictTable)
{
childDataSource = _queryBuildDataSource.addDataSource(relatedTableId);
// -->>
[Label] = conpeek(pack, #packLabelPos);
childDataSource.label(Label);
// <<--
childDataSource.joinMode(JoinMode::ExistsJoin);
childDataSource.fetchMode(QueryFetchMode::One2One);
SysQuery::unpackDataSource(_query, pack, childDataSource, _origRangeMap, _childDataSourceMap, false, _unpackOnlyOpenRanges, dataSourceNo + i);
}
...