
Проблема такая: нужно из формы удалить в зарплатной таблице Nachisl
записи у всех сотрудников с определенным пользовательским кодом (у меня 797). Сделал форму, где оставил удаление записи для одного сотрудника. Для наглядности. Запись удаляется, но не с кодом 797, а первая в предыдущем select'e, с кодом 701.
Вот текст формы:
.Form 'Upd_Nachisl3'
.ARD
.Group 'Зарплата'
.NameInList ' * Корректировка результатов расчета заработной платы (797 премия по сд.опл.) '
.F 'Upd_Nachisl3.OUT'
.Var
lngLsChetTabN:LongInt
szPersonsFIO:String
cmpNRecNachisl:Comp
cmpNRecLsChet:Comp
szNRecLsChet:String
intNumbOplat:Integer
dblNachislSumm:Double
dblNachislSummALL:Double
dblNachislKoeffSumm:Double
dblNachislPremiruemSumm:Double
dblNachislPremiruemSummALL:Double
dblNachislSummaPremiaALL:Double
lngNachislVidOpl:LongInt
lngNachislProc:LongInt
lngProcPremia:LongInt
szNachisKAU1:String
szNachisKAU2:String
cmpNRecNachisl797:Comp
szNRecNachisl797:String
.EndVar
.Create View vtNachisl_ALL As
SELECT
String(LsChet.nRec,17,0) (FieldName=LsChetNRec)
,LsChet.nRec
,LsChet.TabN
,Persons.FIO
,Nachisl.nRec
,String(Nachisl.nRec,17,0) (FieldName=NachislNRec)
,Nachisl.Summa
,Nachisl.VIDOPL
,Nachisl.Proc
,Nachisl.cKAUD[1]
,KAU_D1.Name
,Nachisl.cKAUD[2]
,KAU_D2.Name
FROM
Nachisl
,synonym SPKAU KAU_D1
,synonym KatPodr KAU_D2
WHERE
((
Nachisl.cLsCh == LsChet.nRec
and Nachisl.tPerson == Persons.nrec
and Nachisl.cKAUD[1] == KAU_D1.nrec
and Nachisl.cKAUD[2] == KAU_D2.nrec
and LsChet.Cex == KatPodr.Name
))
and Nachisl.YearN = 2006
and Nachisl.MesN = 9
and LsChet.TabN = 9311
ORDER External BY LsChet.TabN,Nachisl.VIDOPL
;
.Create View vtNachisl As
SELECT
*
FROM
Nachisl
WHERE
Nachisl.nRec = cmpNRecNachisl797
;
.fields
CommonFormHeader
lngLsChetTabN
szPersonsFIO
lngNachislVidOpl
lngNachislProc
DoubleToStr(dblNachislSumm,'66666666666667.88')
DoubleToStr(dblNachislPremiruemSumm,'66666666666667.88')
szNachisKAU1
szNachisKAU2
cmpNRecNachisl
.endfields
^
Корректировка результатов расчета заработной платы
Таб.ном. ФИО Код Процент сумма Премируем. КАУ1 КАУ2 nRec
вида оплаты сумма Nachisl
оплаты
.{Table vtNachisl_ALL
.Begin
cmpNRecLsChet:=vtNachisl_ALL.LsChet.NRec ;
szNRecLsChet:=vtNachisl_ALL.LsChetNRec ;
lngLsChetTabN:=vtNachisl_ALL.LsChet.TabN ;
szPersonsFIO:=vtNachisl_ALL.Persons.FIO ;
cmpNRecNachisl:=vtNachisl_ALL.Nachisl.nRec ;
dblNachislSumm:=vtNachisl_ALL.Nachisl.Summa ;
lngNachislVidOpl:=vtNachisl_ALL.Nachisl.VIDOPL ;
szNachisKAU1:=vtNachisl_ALL.KAU_D1.Name ;
szNachisKAU2:=vtNachisl_ALL.KAU_D2.Name ;
lngNachislProc:=vtNachisl_ALL.Nachisl.Proc ;
if lngNachislProc = 0
lngNachislProc := 100;
IF lngNachislVidOpl =701 Then begin dblNachislPremiruemSumm := dblNachislSumm end ;
IF lngNachislVidOpl >701 AND lngNachislVidOpl <730 Then begin dblNachislPremiruemSumm := 0 end ;
IF lngNachislVidOpl =730 Then begin dblNachislPremiruemSumm := dblNachislSumm*0.5 end ;
IF lngNachislVidOpl =731 Then begin dblNachislPremiruemSumm := dblNachislSumm*0.5 end ;
IF lngNachislVidOpl >731 AND lngNachislVidOpl <733 Then begin dblNachislPremiruemSumm := 0 end ;
IF lngNachislVidOpl =733 Then begin dblNachislPremiruemSumm := dblNachislSumm end ;
IF lngNachislVidOpl =734 Then begin dblNachislPremiruemSumm := dblNachislSumm end ;
IF lngNachislVidOpl =735 Then begin dblNachislPremiruemSumm := dblNachislSumm end ;
IF lngNachislVidOpl =736 Then begin dblNachislPremiruemSumm := (dblNachislSumm/3)*2 end ;
IF lngNachislVidOpl >736 AND lngNachislVidOpl <745 Then begin dblNachislPremiruemSumm := 0 end ;
IF lngNachislVidOpl =745 Then begin dblNachislPremiruemSumm := dblNachislSumm end ;
IF lngNachislVidOpl >745 AND lngNachislVidOpl <752 Then begin dblNachislPremiruemSumm := 0 end ;
IF lngNachislVidOpl =752 Then begin dblNachislPremiruemSumm := dblNachislSumm end ;
IF lngNachislVidOpl >752 Then begin dblNachislPremiruemSumm := 0 end ;
IF lngNachislVidOpl =797 Then begin cmpNRecNachisl797:= vtNachisl_ALL.Nachisl.nRec end ;
End.
|&&&&& |@@@@@@@@@@@@@| &&&& | &&&&&|&&&&&&&.&&|&&&&&&.&&|@@@@@@@@@@@@@@@@|@@@@@@@@@@|@@@@@@@@@@@@@@@@@@
.} // End vtNachisl_ALL...
----------------------------------
|вид опл.| nRec удаляемой записи |
----------------------------------
.fields
vtNachisl.Nachisl.VidOpl
cmpNRecNachisl797
.endfields
|&&&&&& |@@@@@@@@@@@@@@@@@@@@@@@|
.{Table vtNachisl
.Begin
IF cmpNRecNachisl797 > comp(0h) then
{ delete current Nachisl ;};
ELSE {} ;
End.
.}
.EndForm