.Create view provod as select * from KATSOPR, OBOROT where
((OBOROT.CSOPRDOC == KATSOPR.NREC)) and //Связь таблиц
((KATSOPR.VIDSOPR = 211) or //Акт на оказание услуги (сбыт)
(KATSOPR.VIDSOPR = 201) or //Накладная на отпуск МЦ (сбыт)
(KATSOPR.VIDSOPR = 106)) and //Рекламационная накладная от покупателя на возврат МЦ (сбыт)
(KATSOPR.DSOPR <= d2) and (KATSOPR.DSOPR >= d1) and
(OBOROT.DBSCHETO = 62);
1. ну " as select * " эту часть вообще убери из запроса, тогда она будет вытаскивать только те поля, к которым есть обращение далее, а не все поля из всех таблиц.
2. where((
cPlan == oborot.cplanssch
and oborot.csoprdod == katsopr.nrec
and '62' == oborot.dbscheto (noindex) // не помню точный индекс
)) and (oborot.tidk=122 OR oborot.tidk=201 OR oborot.tidk=106)
and (katsopr.dsopr <=d2 and katsopr.dsopr>=d1);
cPlan = ссылка на план счетов (можно взять в настройке)
ну и индекс посмотри по обороту, можте подберёшь что нибудь ещё.
Вопрос. А глюк точно в запросе?
Только что скопировал и запустил в суппорт sql
select * from KATSOPR, OBOROT where
((OBOROT.CSOPRDOC == KATSOPR.NREC)) and //Связь таблиц
((KATSOPR.VIDSOPR = 211) or //Акт на оказание услуги (сбыт)
(KATSOPR.VIDSOPR = 201) or //Накладная на отпуск МЦ (сбыт)
(KATSOPR.VIDSOPR = 106)) and //Рекламационная накладная от покупателя на возврат МЦ (сбыт)
(KATSOPR.DSOPR <= date(30,09,2005)) and (KATSOPR.DSOPR >= date(01,01,2005)) and
(OBOROT.DBSCHETO = 62);
То есть ничего не менял. Только разве что период выставил ручками
Секунд 10 думал и выкинул все как надо
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
select oborot.sumob from oborot where ((
cPlan == oborot.cplanssch
211 == oborot.tidk
and '62' == oborot.dbscheto (noindex)
and oborot.csoprdod /== katsopr.nrec
));
Это выберет проводки, по типу 211 которые привязаны к накладным.
Попробуйте сначала так.
Если всё Ок, поставите потом ограничение на katsopr по датам. Вобще лушче бы по датам сами проводки проверять, индекс есть.
.Create view provod
from OBOROT, KATSOPR
where
((
'562' == OBOROT.SCHETO AND // 562 - это номер плана счетов + '62'
d1 <<= OBOROT.DATOB AND
d2 >>= OBOROT.DATOB AND
OBOROT.CSOPRDOC == KATSOPR.NREC
)) and (OBOROT.TIDK = 201 OR OBOROT.TIDK = 211 OR OBOROT.TIDK = 106);
.Create view provod
from OBOROT, KATSOPR
where
((
'562' == OBOROT.SCHETO AND // 562 - это номер плана счетов + '62'
d1 <<= OBOROT.DATOB AND
d2 >>= OBOROT.DATOB AND
(OBOROT.TIDK = 201 OR OBOROT.TIDK = 211 OR OBOROT.TIDK = 106) AND
OBOROT.CSOPRDOC == KATSOPR.NREC
));
.Create view provod as select * from KATSOPR, OBOROT where
(('362' == OBOROT.ScHETO and OBOROT.CSOPRDOC == KATSOPR.NREC and
d1 <<= OBOROT.DATOB and d2 >>= OBOROT.DATOB)) and //Связь таблиц
((KATSOPR.VIDSOPR = 211) or //Акт на оказание услуги (сбыт)
(KATSOPR.VIDSOPR = 201) or //Накладная на отпуск МЦ (сбыт)
(KATSOPR.VIDSOPR = 106));
Но! Данная таблица строилась для того, чтобы получит проводку со счетом "362" соответственно накладной. Проверял данная проводка одна, накладная тоже одна.
А теперь про НО! Пытаюсь вывести "субсчет проводки" + "NREC проводки" + номер накладной. Данных с одинаковыми параметрами больше сотни. Подскажите где и что не так?