проблема при использовании условного блока ?Internal

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

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

Ответить
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

проблема при использовании условного блока ?Internal

Сообщение Rishat »

есть отчет
Управление сбытом > Отчеты > Исполняемые документы-основания по периодам > Фактические задолженности по периодам (свернутый)

При формировании отчета по исполняемым ДО на продажу нужно вывести только те ДО, по которым сумма баланса =0.
Для этого в форму включаем оператор ?Internal. После применения Internal ни одна строчка не формируется.
Есть что-то особенное в этой форме? Как возможно ограничить выборку по ДО с ненулевым балансом?

.LinkForm 'DEBLIST01A 22' Prototype is 'DebList'
.NameInList '!!!Фактические задолженности по периодам (свернутый)'
.var
Ind:LongInt
ZNUM:Comp
STROKA:String
.endvar
.Create VIEW moemoe AS SELECT * FROM KATORG WHERE
TRIM(STRING(KATORG.UNN))=TRIM(STRING(KATORG_UNN)) AND TRIM(STRING(KATORG.NAME))=TRIM(STRING(KATORG_NAME));
.Create VIEW MOE2 AS SELECT * FROM KATBANK WHERE ((znum==KATBANK.CORG));
.fields
CommonFormHeader
DateToStr(ДатаОтчета,'DD/MM/YYYY')
ВВалютеОтчета
DateToStr(НачДатаОтчета,'DD/MM/YYYY')
DateToStr(КонДатаОтчета,'DD/MM/YYYY')
TblGfiString(TblPeriods,IterNext(Ind),fName1)
TblGfiString(TblPeriods,IterNext(Ind),fName2)
KatOrg_Name
k3z
TblGfiDouble(TblPeriods,IterNext(Ind),fkp3z)
TblGfiDouble(TblPeriods,IterNext(Ind),fkp3zs)
k3z
TblGfiDouble(TblPeriods,IterNext(Ind),fap3z)
TblGfiDouble(TblPeriods,IterNext(Ind),fap3zk)
If(AllKontr=0,'выбранным контрагентам','контрагентам')
TblGfiDouble(TblPeriods,IterNext(Ind),fap3zs)
a3z
.endfields
^

ОТЧЕТ ПО ИСПОЛНЯЕМЫМ ДОКУМЕНТАМ-ОСНОВАНИЯМ ПО КОНТРАГЕНТАМ
С РАЗБИВКОЙ ПО ВРЕМЕНИ ФАКТИЧЕСКОЙ ЗАДОЛЖЕННОСТИ

.begin
Ind:=IterInitNew(KolPers);
end.
Сформирован на ^ в ^.
Взяты документы-основания ( ДО ) с ^ по ^.

Положительные задолженности соответствуют долгу контрагента, отрицательные - нашему долгу.

───────────────────────────────────────────────────────────────────────────────┬.{.?J000;──────────────┬.}──────────────────
Наименование контрагента │.{.?J001;@~@@@@@@@@@@@@│.} Итого фактическая
│.{.?J002;@~@@@@@@@@@@@@│.} задолженность
.{.?J003;;false;.}
───────────────────────────────────────────────────────────────────────────────┼.{.?J009;──────────────┼.}──────────────────
.{CheckEnter FKATORG
.{.?J300;;false;.}
.{.?J301;;false;.}
.{.?J302;;false;.}
.{.?J303;;false;.}
.{.?J309;;false;.}
.{CheckEnter FBASEDOC
.{CheckEnter FSTEPDOC
.{.?J500;;false;.}
.{.?J501;;false;.}
.{.?J502;;false;.}
.{.?J503;;false;.}
.{.?J509;;false;.}
.{.?J510;;false;.}
.{.?J519;;false;.}
.{.?J511;;false;.}
.{.?J599;;false;.}
.}
.}
.{.?J700;;false;.}
.{.?J701;;false;.}
.{.?J702;;false;.}
.{.?J703;;false;.}
.{.?J709;;false;.}
.{table 'MOEMOE' by KATBANK.NAME;
.begin
ZNUM:=MOEMOE.NREC;
end.
.}
.{table 'MOE2'
.begin
STROKA:=MOE2.NAME+' БИК '+MOE2.MFO1+' а/б '+MOE2.SCHET1+' Є/б '+MOE2.SCHET2;
end.
.}
.{?internal;k3z<>0
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │.{.?J710;&&&&&&&&&&&.&&│.}
Сальдировано: │.{.?J711;&&&&&&&&&&&.&&│.}&'&&&&&&&&&&&&&.&&
─────────────────────────────────────────────────────────────────────────────┼.{.?J719;──────────────┼.}──────────────────
.}
.{.?J720;;false;.}
.{.?J721;;false;.}
.{.?J799;;false;.}
.}
─────────────────────────────────────────────────────────────────────────────┼.{.?J900;──────────────┼.}──────────────────
.{.?J901;;false;.}
.{.?J902;;false;.}
.{.?J903;;false;.}
.{.?J909;;false;.}
По ДО: │.{.?J910;&&&&&&&&&&&.&&.}
.{.?J911;;false;.}
.{.?J919;;false;.}
Итого по всем По контрагентам: │.{.?J920;&&&&&&&&&&&.&&│.}
@@@@@@@@@@@@@@@@@@@@@@@ Сальдировано: │.{.?J921;&&&&&&&&&&&.&&│.}&'&&&&&&&&&&&&&.&&
.{.?J922;;false;.}
─────────────────────────────────────────────────────────────────────────────┴.{.?J999;──────────────┴.}──────────────────

.begin
IterDone(Ind);
end.

*
.endform
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

.{?internal;Double(k3z)<>0
Жду выхода Вселенная 2.12!
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

Сообщение Rishat »

неа, тоже самое
первую организацию с ненулевым балансом выводит(собственнную организацию), а последующие нет. хотя без internal выводятся
напр.

орг 1. = 38450
орг 2. = 0
орг 3. = 2400
...
орг n. = ..
итого ....
выводит только орг 1.
и вдобавок итого перестаёт выводить. для интереса попробуйте отредактируйте на такой же манер данный отчет. посмотрите что выйдет.
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

Сообщение Rishat »

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

Сообщение edward_K »

можно констатировать тока одно - незя в internal включать циклы формы - надо тока внутри их.
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

Сообщение Rishat »

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

Сообщение edward_K »

а никак
переделывате на Excel
вывод данных в fields переделывайте на функцию в которой определяйте нужно или нет выгонять в Excel.
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

Сообщение Rishat »

а что за функции не подскажешь? на маленьком примерчике, если можно.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

от 584 журнал ордер, временная табла тут нужна для сортировки - в 584 было как попало

table struct tmp_jour
( pa:word ,
nmgr : string [20],
col :integer ,
sud : double ,
suk :double
)
with index
( tmp_jour01 = pa+nmgr+col
) ;


.LinkForm 'JORNKRED_01_ED' Prototype is 'jornanal'
.Group 'ЖУРНАЛЫ ПО КРЕДИТУ'
.NameInList '1.Ed Журнал-ордер по кредиту счета в дебет счетов...'
.var
wpa :word
errcount :longint ;
.endvar
.create view vvv as select tmP_jour.* from tmP_jour(tmP_jour01) where (( wpa == tmP_jour.pa )) ;
.procedure myxlSetCellNumberValue(w:double;rowu:word;coll:word;rowd:word;colr:word);
begin
xlSetCellNumberValue(w,rowu,coll,rowd,colr)
end.
.procedure myxlSetFontStyle(w:word;rowu:word;coll:word;rowd:word;colr:word) ;
begin
xlSetFontStyle(w,rowu,coll,rowd,colr)

end.
.PROCEDURE MYxlSetCellStringValue(w:string;rowu:word;coll:word;rowd:word;colr:word) ;
BEGIN
xlSetCellStringValue(w,rowu,colL,rowd,colR)
END.
.var
! Для Excel
wexcel :word ;
wpicture :boolean ;
wPictBook: string ;
fbasname ,fmacroname :string ;
wstartpath:string ;
wrowu,wrowd,wcolr,wcoll :longint ;
wxlbold : integer ;
.endvar
.procedure ErrWrite(w : string) ;
begin
errcount:=errcount+1 ;
logstrtofile('!journal.txt',w)
end.
.function InsShap(w:string) :string ;
begin
wcolr:=wcolr+ 1;
xlSetCellStringValue(w,wrowu,wcolr,wrowu,wcolr)
InsShap :=w ;
ErrWrite('Шапка '+string(wcolr)+' '+c0p13) ;
end.
.function instmpjour(wnmgr:string; w:double) :double ;
begin
instmpjour:=w ;
wcolr:=wcolr+1
if vvv.getfirst tmp_jour where (( wpa == tmp_jour.pa and wnmgr == tmp_jour.nmgr and wcolr== tmp_jour.col ))<>0
{ vvv.tmp_jour.pa:=wpa ;
vvv.tmp_jour.nmgr:=wnmgr ;
vvv.tmp_jour.col:=wcolr ;
vvv.tmp_jour.sud:= w ;
vvv.insert current tmp_jour ;
}
else
{ vvv.tmp_jour.sud:=vvv.tmp_jour.sud+ w ;
vvv.update current tmp_jour ;
}
ErrWrite('строка '+wnmgr+string(wcolr)+' '+c0p13) ;

end.
.fields
CommonFormHeader
c1f1
c2f1
c2f2
c0p9
c0p2
c0p3
c0p1
c0p1n
c0p11
c0p11n
InsShap(c0p13)
InsShap('Итого')
c8p1
instmpjour(c8p1,double(c8_p2))
instmpjour(c8p1,double(c8_p10))
instmpjour('Итого',double(c1_p2))
instmpjour('Итого',double(c1_p10))
.endfields


 Ш^
.if OKFILJO
 БПрименен фильтр... Б
.{
^
.{
^ ^
.}
.}
.else
.end
.if JORNANALALLKOR
 Б^ с ^ по ^ Б
 Бпо кредиту счета ^ << ^ >> в дебет счетов Б
 БКорреспондирующие счета : Б
.{
^ : ^
.}

.begin
fbasname:=TranslatePath('%StartPath%GLZ_JOUR.xls')
if fileexist(fmacroname) deletefile(fmacroname)
if fileexist('!journal.txt') deletefile('!journal.txt')
if fileexist(fbasname)
{
wPicture:=xlCreateExcelWithTemplate(fbasname,True) ;
if wPicture
{ XLGETACTIVEWORKBOOKNAME(wPictBook) ;
xlSetActiveWorkBookByName(wPictbook) ;
xlSetCellStringValue(CommonFormHeader,1,1,1,1)
xlSetCellStringValue(c0p9+' с '+c0p2+' по '+c0p3,2,2,2,2)
xlSetCellStringValue('по кредиту счета'+c0p1+'<<'+c0p1n+' >> в дебет счетов',3,2,3,2)
xlSetCellStringValue('Дата',4,1,4,1)

wcolr:=1 ; wcoll:=1 ;
wrowu:=4 ; wrowd:=4 ;
} else
{ Errwrite('Ошибка открытия файла с образчиком '+fbasname) ;
message('Ошибка открытия файла с образчиком '+fbasname) ;
wexcel:=0 ;
}
}
wpa:=0 ;
vvv.delete tmp_jour where (( wpa == tmp_jour.pa )) ;
end.
──────────.{.?JORNANALH01;┬────────────────.}┬───────────────
Дата .{.?JORNANALH02;│@~@@@@@@@@@@@@@@.}│@~@@@@@@@@@@@@@
──────────.{.?JORNANALH03;┼────────────────.}┼───────────────
.{.?JORNANALH04;;false;.}
.{.?JORNANALH05;;false;.}
.else
.end
.{
.if OKJORNANALVALUTA
.{.?JORNANALNVAL01;;false; .}
.else
.end
.{
.if JORNANALSCHOSKOR
.{
.}
.{.?JORNANALH11;;false;.}
.{.?JORNANALH12;;false;.}
.{.?JORNANALH13;;false;.}
.{.?JORNANALH14;;false;.}
.{.?JORNANALH15;;false;.}
.else
.end
.{.?JORNANALN01;;false; .}
.{
.if OKJORNANALMONTHS
.{.?JORNANALN02;;false; .}
.else
.end
.{
.if OKJORNANALSUBOSSCH
.{.?JORNANALN03;;false; .}
.else
.end
.{
.if OKJORNANALPODR
.{.?JORNANALN04;;false; .}
.else
.end
.{
.if OKJORNANALKAU1
.{.?JORNANALN05;;false; .}
.else
.end
.{
.if OKJORNANALKAU2
.{.?JORNANALN06;;false; .}
.else
.end
.{
.if OKJORNANALKAU3
.{.?JORNANALN07;;false; .}
.else
.end
.{
.if OKJORNANALKAU4
.{.?JORNANALN09;;false; .}
.else
.end
.{
.if OKJORNANALKAU5
.{.?JORNANALN10;;false; .}
.else
.end
.{
.if OKJORNANALKAU6
.{.?JORNANALN11;;false; .}
.else
.end
.{
.if OKJORNANALDAY
.{.?JORNANALN08;;false; .}
.else
.end
.{
.if JORNANALOBOROT
.{.?JORNANALI01;;false; .}
.else
.if JORNANALSALDO
.{.?JORNANALI02;;false; .}
.else
.end
.end
.}
.if JORNANALSUMDAY
.begin wcolr:=0 ; end.
.{.?JORNANALS01;;false; .}
@@@@@@@@@@.{.?JORNANALS02;│&#'&&&&&&&&&&&& .}│ &#'&&&&&&&&&&&
!.begin instmpjour(c8p1,double(c8_p10)) end.
.{.?JORNANALS03;;false; .}
.else
.end
.}
.if JORNANALSUMKAU6
.{.?JORNANALS30;;false;.}
.{.?JORNANALS31;;false;.}
.else
.end
.}
.if JORNANALSUMKAU5
.{.?JORNANALS32;;false;.}
.{.?JORNANALS33;;false;.}
.else
.end
.}
.if JORNANALSUMKAU4
.{.?JORNANALS34;;false;.}
.{.?JORNANALS35;;false;.}
.else
.end
.}
.if JORNANALSUMKAU3
.{.?JORNANALS04;;false;.}
.{.?JORNANALS05;;false;.}
.else
.end
.}
.if JORNANALSUMKAU2
.{.?JORNANALS06;;false; .}
.{.?JORNANALS07;;false; .}
.else
.end
.}
.if JORNANALSUMKAU1
.{.?JORNANALS08;;false; .}
.{.?JORNANALS09;;false; .}
.else
.end
.}
.if JORNANALSUMPODR
.{.?JORNANALS10;;false;.}
.{.?JORNANALS11;;false;.}
.else
.end
.}
.if JORNANALSUMSUBOSSCH
.{.?JORNANALS12;;false;.}
.{.?JORNANALS13;;false;.}
.else
.end
.}
.if JORNANALSUMMONTHS
.{.?JORNANALS14;;false; .}
.{.?JORNANALS15;;false; .}
.else
.end
.}
.if JORNANALSUMSCHETO
.begin wcolr:=0 ; end.
──────────.{.?JORNANALS16;┼────────────────.}┼───────────────
ИТОГО .{.?JORNANALS17;│&#'&&&&&&&&&&&& .}│ &#'&&&&&&&&&&&
──────────.{.?JORNANALS18;┴────────────────.}┴───────────────
!.begin instmpjour('Итого',double(c1_p10)) end.
.else
.end
.}
.if JORNANALSUMVALUTA
.{.?JORNANALSVAL01;;false; .}
.{.?JORNANALSVAL02;;false; .}
.{.?JORNANALSVAL03;;false; .}
.else
.end
.}
.{.?JORNANALS19;;false;.}
.{.?JORNANALS20;;false;.}
.{.?JORNANALS21;;false;.}

 ББухгалтер Б
 БОтветственный за выпуск Щ
.begin
if vvv.getfirst tmp_jour=0
{ wrowu:=4 ;
fbasname:='????'
do {
if fbasname<>vvv.tmp_jour.nmgr
{ wrowu:=wrowu+1 ; wcolr :=1
xlSetCellStringValue(' '+vvv.tmp_jour.nmgr+' ',wrowu,wcolr,wrowu,wcolr)
fbasname:=vvv.tmp_jour.nmgr ;
}
wcolr :=wcolr+1 ;
MyxlSetCellNumberValue(vvv.tmp_jour.sud,wrowu,wcolr,wrowu,wcolr)

} while vvv.getnext tmp_jour=0
//xlSetColumnWidth(wrowd,1,wrowd,wcolr) ;
// xlSetFontSize(10,wrowu-1,2,wrowu-1,wcolr) ;
xlFrameCells(1 or 2 or 4 or 8 or 16 or 32 , 2, 0, 0,
4 ,1,wrowu,wcolr)

// xlAlignCellsEx(-4108,-4108,wrowu-1,2,wrowu-1,wcolr)
// xlWrapText(wrowu-1,2,wrowu-1,wcolr) ;
xlSetNumberFormat('0.00',5,2,wrowu,wcolr) ;
xlSetFontSize(8,4,1,wrowu,wcolr) ;
xlKillexcel ;
message('Переключитесь в Excel и смотрите отчет') ;

}
if errcount>0 then message('Выявлены ошибки, смотрите !osa.txt'+chr(13)+
'(в каталоге запуска галактики - где galnet.cfg) ')

end.
.endform
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

Сообщение Rishat »

а как подключать временную таблу к отчету?
потому как если напрямую писать в начале формы, даёт ошибку.
попытался скомпилить table struct tmp_jour { ... } и подцепил res
а потом #include 1.vih, ругается на то что в файле ожидалось оператор form, set name, linkform.
Чет вроде я не то делаю?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

8)
это не раз обсуждалось на этом форуме, без лицензии на vip с 711 это не возможно.
к тому же к вам это отношение не имеет, да и форма от 584, сходу в принципе не скомпилится - можете заменить на что угодно, массив, таблу user схемы и так далее - вы ж просили просто принцип, а не готовое решение?
Rishat
Постоянный обитатель
Сообщения: 191
Зарегистрирован: 12 сен 2005, 17:10
Откуда: Наб. Челны

Сообщение Rishat »

ну лицензия на все модули есть и на 5.85 и на 7.11 и на 8.0, и для Гал-ки
и для Support :))
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

гы
1.речь о лиц.на сапорт - buildmenu
2.если есть то компилить надо проектом - как ищите здеся.
Ответить