Przeglądając ten kod zauważyłem (mogę to stwierdzić z całą pewnością) jednoznaczny błąd w rozumowaniu.
Twoje funkcje mogą dawać taki ciąg operacji:
Kod:
int zmienna
zmienna = 0
zmienna = -6000
zmienna = 0
Na końcu tego ciągu operacji -
zmienna ma wartość
0.
Gdyby ciąg operacji wyglądał tak:
Kod:
int zmienna
zmienna = 0
zmienna = 0
zmienna = -6000
Na końcu -
zmienna ma wartość
-6000.
Ja nie widzę tu nic niewłaściwego - każdy język programowania (z tych które znam) tak działa ;P
Rozwiązań tego zagadnienia jest wiele - jedno udało się Panu uzyskać - kod może wyglądać tak:
Kod:
int Sub OnBeforeInsertFVS(long lId) // faktura sprzedaży VAT
OnBeforeInsertFVS = 0
if f1(lId)==-6000 || f2(lId)==-6000 || f3(lId)==-6000 || f4(lId)==-6000 then OnBeforeInsertFVS=-6000
EndSub
Jak dla mnie bezsensem jest uruchamianie funkcji
f1, f2, f3, f4 wielokrotnie - w wielu sytuacjach taka operacja może dać przy każdym uruchomieniu inny wynik (np jeżeli funkcja dokonuje jakiś modyfikacji w bazie to raz coś zmieni a następnym razem nie - i mamy klops
).