Кажется понял - почему у меня сработало. В моем примере не было предыдущего reread(). Т.е. если в Вашем примере убрать первые строки с reread(), то все отработает независимо от вызова clear();
X++:
static void JobTestCommonReread(Args _args)
{
InventTable InventTable, InventTable2;
RecId RecId;
;
select firstonly InventTable;
RecId = InventTable.RecId;
// InventTable2.RecId = RecId;
// InventTable2.reread();
// info(InventTable2.ItemId);
InventTable2.clear();
InventTable2.RecId = RecId;
InventTable2.reread();
info(InventTable2.ItemId);
}
А вот конкретно исходный пример на той же 4.0SP2 действительно отработал как Вы и писали