Чем больше разбираюсь с запросами, тем все непонятнее становится.

(
Если с созданием запросов в АОТ еще все более-менее понятно то при создании из кода уже не все так гладко.
1. Куда возвращается результат выражений типа: select * from CustTable;
В документации сказано: The result will always be returned in the table variable. Тогда почему следующий код вызывает ошибку:
<pre> CustTable ct;
ct = select * from CustTable;
Eсли я делаю так:
CustTable ct;
select * from ct where .....;
</pre>
как я понимаю, результат сохраняется в ct.
А что происходит в случае выборки из двух таблиц ? То есть, если я пишу:
CustTable ct;
VendTable vt;
select * from ct,vt where .....
Где в данном случае сохранится результат ?
2. В Аксапте есть классы: Query, QueryBuildDataSource, QueryBuildRange, QueryBuildLink, QueryBuildDynalink, QueryRun. Почему я не вижу их в АОТ ?
3.<pre> QueryRun qr;
Query NewQuery;
QueryBuildDataSource bb;
QueryBuildRange br;
NewQuery = new Query ("MyQuery");
bb = NewQuery.AddDataSource (TableNum(CustTable));
br = bb.AddRange (fieldNum(CustTable, AccountNum));
br.value ("1500..2000");
qr = new QueryRun (NewQuery);
</pre>
Как я понимаю, выполнив этот код я должен получить в qr искомый набор данных. Почему же если я пытаюсь затем сделать следующее:
<pre>if (qr.prompt())
{
while (qr.next())
{
print qr.AccountNum; // !!! Ошибка !!!
}
}
</pre>
компилятор сообщает об ошибке. Как обратиться к определенному полю в выборке? А как узнать количество записей возвращенных запросом ?
Еще больше удивляет то, что запросы реализованны именно так и не иначе.

((
Насколько я помню в рекламных проспектах Аксапты сообщалось о возможности использования SQL напрямую в коде программы. Вышеприведенный код, который, кстати, взят из справочной системы, свидетельсвует об обратном.
Извините за столь обширный вопрос, но на службу поддержки особой надежды нет

(((
<hr>
<i>Отредактировал Роман Кошелев, используя тег <pre>
см.
http://www.axforum.info/forums/showt...=&threadid=177