Вот набрасал небольшой пример
X++:
static void TEST_Job(Args _args)
{
TEST_tmpTable1 TEST_tmpTable1;
TEST_tmpTable2 TEST_tmpTable2;
;
//-----------------------------------------------
TEST_tmpTable1.GroupId = '01';
TEST_tmpTable1.Id = 1; TEST_tmpTable1.insert();
TEST_tmpTable1.Id = 2; TEST_tmpTable1.insert();
TEST_tmpTable1.GroupId = '02';
// Но если следующие две строки кода поменять местами,
// то результат будет другой
TEST_tmpTable1.Id = 4; TEST_tmpTable1.insert();
TEST_tmpTable1.Id = 3; TEST_tmpTable1.insert();
TEST_tmpTable2.Id = 1; TEST_tmpTable2.insert();
TEST_tmpTable2.Id = 3; TEST_tmpTable2.insert();
//-----------------------------------------------
while select TEST_tmpTable1
group by GroupId
exists join TEST_tmpTable2
where
TEST_tmpTable2.Id == TEST_tmpTable1.Id
{
info(TEST_tmpTable1.GroupId);
}
}