13.02.2007, 00:21
|
#3
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Цитата:
Сообщение от mazzy
Ужас какой-то...
1. Может стоит накидать запрос в АОТ мышкой. А range вставлять конструкцией SysQuery::findOrCreateRange(...)
Низзя Да, этот совет уже можно записывать в FAQ и давать ссылку вместо многократного повторения, но в реальном классе, генерирующем отчет, вместо fieldnum(VendTrans, AccountNum) фигурирует this.contragentFieldAccount(), чтобы не писать два идентичных класса для поставщиков/клиентов...Во-первых, у меня уже и так куча подзапросов, поскольку реально для получения необходимых данных используется порядка 9 таблиц, что парсер запросов переварить никак не может. Во-вторых, у меня нет ни одной записи (select forupdate), так что блокировки тут ни при чем. В-третьих, отчет и так генерится по годичному обороту в 6 компаниях вместе с выплевыванием в Excel секунд за 5-7. Другое дело, что сейчас в него попадают лишние проводки
Цитата:
3. Ваш select не эквивалентен Query. В select вы получаете выборку из одного большого union'а. В Query вы прицепили две таблицы к одной ведущей. Порядок обхода будет другим. См. Руководство разработчика. Раздел по ключевому слову "Sequencing of retrieved records".
То, что не эквивалентен, - это понятно. В запросах и так нельзя адекватно отразить многое из обычного SQL; вопрос в том, почему запрос не работает так, как надо
|
|