отчет на прототипе. Галактика 5.

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

отчет на прототипе. Галактика 5.

Сообщение Mary »

Всем привет. Проблема такая. В галактике 5 на основе книги бух.проводок сделала отчет:выгрузка даты проводок,суммы оборота,организации,договора,до. Это все из прототипа. Необходимо мат.ценности достать из спецификации накладной. Запрос рабочий след.:
.var
Sp:string;
.endvar
.create view spnak
Var obnrec:comp;
As select oborot.*,katsopr.*,spsopr.*,katmc.*
From katmc,spsopr,katsopr,oborot
Where((obnrec/==oborot.nrec and oborot.csoprdoc/==katsopr.nrec and katsopr.nrec==spsopr.csopr and spsopr.cmcusl==katmc.nrec));

.{//цикл из прототипа на вывод данных
.begin
Spnak.obnrec:=spnak.oborot.nrec;
End.
.{table 'spnak.oborot'
.begin
Spnak.sp:=spnak.katmc.name;
End.
.}
^^^^^^^^
.}
Данные из прототипа выводит,данные по моему запросу,название мц,не выводит...
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: отчет на прототипе. Галактика 5.

Сообщение KATZ »

Попробуйте так:

Код: Выделить всё

.{table 'spnak.oborot'
.{table 'spnak.katsopr'
.{table 'spnak.spsopr'
.{table 'spnak.katmc'
.begin
Spnak.sp:=spnak.katmc.name;
End.
.}
.}
.}
.}
Совет сугубо теоретический, сам проверить не смогу, т. к. версия уже давно не актуальна.
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

не помогло:(
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

вывела сообщение в .{table 'spnak' -он даже его не выдает,как будто даже не заходит туда...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: отчет на прототипе. Галактика 5.

Сообщение edward_K »

Spnak.obnrec:=spnak.oborot.nrec - вот это что?
потом эту же переменную вы используете в фильтре по oborot.nrec.
в obnrec надо передавать поле из прототипа
+ совет KATZ обязателен к исполнению.
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

в прототипе для галактики 8 есть поле с1р0-оборот.нрек,а в прототипе для галактики 5 нет такого поля.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: отчет на прототипе. Галактика 5.

Сообщение edward_K »

Ну это не значит что туда можно пихать oborot.nrec. Ваша логическая таблица абсолютно не связана с потоком.
Придется тогда поизвращаться.
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

поняла теперь... :(
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

отошли от идеи отчета на прототипе. Написали обычный ард.
.form 'book'
.nameinlist 'книга'
.ard
.p60
.defo landscape
.var
Dat,dBeg,dEnd:date;
Org,nomdo,mc:string;
Datdo:date;
Sum:double;
.endvar
.create view spnak
As select
Oborot.datob,oborot.sumob,katmc.name,katorg.name,basedoc.ddoc,basedoc.nodoc
From oborot,katorg,basedoc,katmc
Where((dbeg<<=oborot.datob and dend>>=oborot.datob and oborot.kauos[1]==katorg.nrec and oborot.kauos[3]==basedoc.nrec and oborot.csoprdoc/==katsopr.nrec and katsopr.nrec/==spsopr.csopr and 1/==spsopr.prmc and spsopr.cmcusl==katmc.nrec )) and oborot.scheto='362' and oborot.schetk='390' and oborot.subschk='0111';
.fields
dbeg
dend
dat
org
nomdo
datdo
sum
mc
.endfields
.begin
sum:=0;
dbeg:=cur_date;dend:=cur_date;
rundialog(getinterval,dbeg,dend);
dbeg:=date(1,month(cur_date),year(cur_date))
dend:=date(last_day(cur_date),month(cur_date),year(cur_date))
.end
книга бух проводок
с ^ по ^
.{table 'spnak'
.begin
dat:=spnak.oborot.datod;
org:=spnak.katorg.name
datdo:=spnak.basedoc.ddoc;
nomdo:=spnak.basedoc.nodoc;
sum:=spnak.oborot.sumob;
mc:=spnak.katmc.name;
.end
^^^^^^
.}
.endform

запрос рабочий. при компиляции ошибок нет. запускаеым отчет,задаем даты,и выдает ошибку - РЕКУРСИВНОЕ РЕЛ.ОТНОШЕНИЕ ТАБЛИЦЫ ОБОРОТ. Что это и где искать?:(
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: отчет на прототипе. Галактика 5.

Сообщение KATZ »

Попробовал на текущей версии компилировать, сразу получил несколько ошибок:
1) .p60 надо писать через пробел.
2) Вместо .end должно быть end. в двух местах.
3) Вместо spnak.oborot.datod должно быть spnak.oborot.datob.
После этого компилятор ругаться перестал. Неужели в 5-ой версии компилятор не считал это ошибками?

По содержательной части. В вашем случае подобрать для OBOROT 100%-но подходящий индекс не получается, но scheto+schetk+datob или schetk+subschk+datob гораздо удачнее, чем ваш datob. А всё, что не удалось поместить в ((...)), лучше отдельно (т. е. вне select-а) обрабатывать. Не раз сталкивался, что select с доп. условиями после скобок в модуле SQL выполняется нормально, а тот же select в VIP-е или в ARD не работает. Не знаю, почему так, вроде бы ядро одно и то же...

В-общем, попробуйте как-то так (сам проверить на старой версии не могу, опечатки не исключаются):

Код: Выделить всё

.form 'book'
.nameinlist 'книга'
.ard
.p 60
.defo landscape
.var
Dat,dBeg,dEnd:date;
Org,nomdo,mc:string;
Datdo:date;
Sum:double;
.endvar
.create view spnak
As select
Oborot.datob,oborot.sumob,katmc.name,katorg.name,basedoc.ddoc,basedoc.nodoc
From oborot,spsopr,katorg,basedoc,katmc
Where
((
'362'==oborot.scheto and '390'==oborot.schetk and
dbeg<<=oborot.datob and dend>>=oborot.datob and
oborot.csoprdoc==spsopr.csopr and 1==spsopr.prmc and
spsopr.cmcusl==katmc.nrec and
oborot.kauos[1]==katorg.nrec and
oborot.kauos[3]==basedoc.nrec
));
.fields
dbeg dend
dat org nomdo datdo sum mc
.endfields
.begin
sum:=0;
dbeg:=cur_date;dend:=cur_date;
rundialog(getinterval,dbeg,dend);
dbeg:=date(1,month(dbeg),year(dbeg));
dend:=date(last_day(dend),month(dend),year(dend));
end.
книга бух проводок
с ^ по ^
.{table 'spnak.oborot'
.{?Internal;(spnak.oborot.subschk='0111')
.{table 'spnak.spsopr'
.begin
dat:=spnak.oborot.datob;
sum:=spnak.oborot.sumob;
mc:=if((spnak.getfirst katmc)=0,spnak.katmc.name,'???');
org:=if((spnak.getfirst katorg)=0,spnak.katorg.name,'???');
datdo:=if((spnak.getfirst basedoc)=0,spnak.basedoc.ddoc,Date(0,0,0));
nomdo:=if((spnak.getfirst basedoc)=0,spnak.basedoc.nodoc,'???');
end.
 ^
 ^
 ^
 ^
 ^
 ^
.}
.}
.}
.endform
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

не помогло,все также -рекурсивное отношение...
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: отчет на прототипе. Галактика 5.

Сообщение KATZ »

Скомпилировал отчет в текущей версии, проверил - действительно "рекурсивное отношение". Стал разбираться... Оказалось, что причина - в имени dEnd, есть такая переменная и есть такое поле в таблице BASEDOC. Мы в запросе указываем переменную, а "Галактика" считает, что речь о поле из таблицы, и, естественно, ругается на рекурсию. Переименование переменной решает проблему.
Mary
Сообщения: 15
Зарегистрирован: 04 фев 2012, 15:25

Re: отчет на прототипе. Галактика 5.

Сообщение Mary »

спасибо огромнейшее! Работает! :grin:
Ответить