подскажите, пожалуйста, почему возвр. накл. не вычитаются

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

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

Ответить
sildae
Постоянный обитатель
Сообщения: 188
Зарегистрирован: 04 апр 2009, 15:56
Откуда: сАРАТОВ
Контактная информация:

подскажите, пожалуйста, почему возвр. накл. не вычитаются

Сообщение sildae »

Вот код , сначала собираю приход , он срабатывает, limtmp заполняется правильно. Потом заполняю для расхода, и тогда впечатление такое , что не позиционируется на нужную запись,
вычитание происходит совсем для другой матценности.
.create view tnakl
from basedoc
where
((aa==Basedoc.nrec
and
basedoc.nrec==stepdoc.CBASEDOC and
stepdoc.nrec==katsopr.CSTEPDOC and
katsopr.nrec==spsopr.csopr and
vid == spsopr.vidsopr (noindex) and
spsopr.cmcusl==katmc.nrec
and
katmc.nrec == limtmp.ckatmc
))
and
(katsopr.dsopr<=d1)
;
.create view tt
from limtmp
;
.begin
d1:=StrTodate(Конец_периода,'DD/MM/YYYY');
end.
.fields
Начало_периода
Конец_периода
Клиент
Дата_остатка Сумма_остатка2
.endfields
ОСТАТКИ НА ОТВЕТХРАНЕНИИ
У КОНТРАГЕНТОВ ПО НАКЛАДНЫМ И ВИДАМ СТЕКЛА
За период: ^ по ^
.{
.begin
sum1:=0;
sum2:=0;
end.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Клиент @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
@@@@@@@@@@ Вх.ост &'&&&&&&&&&&&&&.&&
──────────┬─────────────┬──────────────────────┬───────────────────────┬───────────────────┬────────────────┬──────────────────────────┬
Дата │ Номер счета │ Баркод │ МЦ │ Количество │ Цена │ Сумма │
──────────┴─────────────┴──────────────────────┴───────────────────────┴───────────────────┴────────────────┴──────────────────────────┴
.{
.begin
delete all limtmp;
runinterface('DelTab');
end.
.begin
aa:=comp(Нрек_счета);
vid:=word(202);
end.
.{table 'tnakl.basedoc'
.{table 'tnakl.stepdoc'
.{table 'tnakl.katsopr'
.{table 'tnakl.spsopr'
.begin
c_mc:=tnakl.spsopr.cmcusl;
if (tt.getfirst limtmp where ((c_Mc==LimTmp.cKatmc and round(Tnakl.spsopr.price,2)==Limtmp.Dcotp(noindex))) <>tsOk) then begin
insert limtmp
set
limtmp.namemc:=tnakl.katmc.name,
limtmp.barkod:=tnakl.katmc.barkod,
limtmp.dsumlimit:=tnakl.spsopr.kolfact,
limtmp.ckatmc:=tnakl.spsopr.cmcusl,
limtmp.LASTUSER:=tnakl.katmc.tnved,
Limtmp.DCOTP:=round(tnakl.spsopr.price,2);
end;
else
update current limtmp set limtmp.dsumlimit:=limtmp.dsumlimit+tnakl.spsopr.kolfact;
end.
.} //spsopr
.} //katsopr
.} //stepdoc
.} //basedoc
.begin
aa:=comp(Нрек_счета);
vid:=word(102);
end.
.{table 'tnakl.basedoc'
.{table 'tnakl.stepdoc'
.{table 'tnakl.katsopr'
.{table 'tnakl.spsopr'
.begin
c_mc:=tnakl.spsopr.cmcusl;
if (tt.getfirst limtmp where ((c_Mc==LimTmp.cKatmc and round(Tnakl.spsopr.price,2)==Limtmp.Dcotp(noindex))) <>tsOk) then begin
insert limtmp
set
limtmp.namemc:=tnakl.katmc.name,
limtmp.barkod:=tnakl.katmc.barkod,
limtmp.dsumlimit:=tnakl.spsopr.kolfact,
limtmp.ckatmc:=tnakl.spsopr.cmcusl,
limtmp.LASTUSER:=tnakl.katmc.tnved,
Limtmp.DCOTP:=round(tnakl.spsopr.price,2);
end;
else
update current limtmp set limtmp.dsumlimit:=limtmp.dsumlimit-tnakl.spsopr.kolfact;
end.
.} //spsopr
.} //katsopr
.} //stepdoc
.} //basedoc
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

ну для начала бы я объединил 2 прохода по таблицам в 1, подключив во вьюху синонимы на приход и расход.
а затем включил логирование и пошагово оттрассировал.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Ответить