create view
var
date1, dat1, date2, dat2, date3, dat3:date;
XlRes: Boolean;
aFileName: String;
as
Select *
From
basefin,
basedoc,
stepdoc,
katsopr,
katmc katmc1,
tkvart,
t_katmc _katmc
, KatMC
, t_katmc
, t_bf
, t_do
, toplat
Where
((
katmc.nrec==_katmc.nrec
//and 10051==basefin.tipdoc
//только по платежным поручениям
and 1==basefin.direct
and 2==basefin.tidkgal(noindex)
//and '2909'==basefin.nodoc(noindex)
and dat1<<=basefin.ddoc
and dat2>>=basefin.ddoc(noindex)
and basefin.cbasedoc==basedoc.nrec
and word(201)==basedoc.viddoc(noindex)
and dat3<<=basedoc.ddoc(noindex)
and basedoc.nrec==stepdoc.cbasedoc
and stepdoc.nrec==katsopr.cstepdoc
and katsopr.cstepdoc == basefin.cstepdoc
and katsopr.nrec == spsopr.csopr
and 1 == spsopr.prmc
and spsopr.cmcusl == katmc1.nrec
));
угу давным давно в качестве договоров подразумевалось использовать ДО, соотв. к ним сделали этапы(stepdoc), но в жизнь это не пошло, а транзит остался (к тому же там часть полей до сих пор используется).
да строка
and katsopr.cstepdoc == basefin.cstepdoc в вашем случае лишняя
вы приоритеты ставте то, домысливать за вас никто не будет
главная у вас basefin -к ней basedoc - katsopr
вы же попытались katsopr подчинили basefin и зациклили запрос. Можно было бы без basedoc обойтись для скорости- тока таблы в этом условии местами то нужно поменять - дочерние таблы в индексных условиях всегда справа, условия на них слева
смотрите ошибку - если не можете найти связку по ключам,или оптимизировать запрос ставите (noindex) где всплыла ошибка (ошибка говорит что по вашим условиям индекса не найдено) .. для вашего принскрина
проставляете справа от связок где присутствует basefin с полями direct,ddoc,cstepdoc