mojaSymfonia FORUM
https://forum.mix-soft.pl/

Procedura OnKhChanged
https://forum.mix-soft.pl/viewtopic.php?f=15&t=2525
Strona 1 z 1

Autor:  wojtek [ 2010-12-02, 09:48 ]
Tytuł:  Procedura OnKhChanged

Kod:
int Sub OnKhChanged(long lId)
   OnKhChanged = 0
// message using "%i",bBufor bBufor = 1 to bufor
Limit 10000
long lKhId
string sKhNazwa,sNotka

   int bnt = Open KatalogFirmy() + "51nt.dat" for base "nt" //baza notatek
   BaseError(KatalogFirmy() + "51nt.dat", 4)
   int bbd = Open KatalogFirmy() + "51bd.dat" for base "bd"
   BaseError(KatalogFirmy() + "51bd.dat", 4)
   // int bKh = Open KatalogFirmy() + "51kh.dat" for base "kh"
   //BaseError(KatalogFirmy() + "51kh.dat", 4)

   SetKey(bbd, "id")
   SetKeySeg(bbd, "id", lId)
   GetRec(bbd, EQ)
   lKhId = GetField(bbd, "khid")
   message GetField(bbd, "khkod")
   message using "%l",lKhId

   SetKey(bnt,"super")
   SetKeySeg(bnt,"super",lKhId)
   if !GetRec(bnt, EQ) then
   message using "%i",GetRec(bnt, EQ)
   sNotka = mid(GetField(bnt, "opis"),1,10)
   message sNotka
   endif

//sNotka = ""
close bbd
close bnt
limit 2000

EndSub



Witam,
Co może być nie tak w moim kodzie powyżej. Procedura ma działać w ten sposób, że w czasie zmainy/doawania kontrahenta na dokument ma się wyświetlić w message informacjAa że istnieje notatka dla tego kontrahenta.
Fragment kodu opowiedzialny za identyfikację kontrahenta działa OK. Problem pojawia się przy bnt. Wartość GetRec(bnt, EQ) = 4 pomimo tego że na kontrahencie jest notatka i pod pervasivem widać ten rekord z wartością pola "super" = id kontrahenta z wystawianego okumentu?[/code]

Autor:  sqza [ 2010-12-02, 11:14 ]
Tytuł: 

Oto zmodyfikowany działający kod :)
Kod:
int Sub OnKhChanged(long lId)
    OnKhChanged = 0
// message using "%i",bBufor bBufor = 1 to bufor
Limit 10000
long lKhId
string sKhNazwa,sNotka

    int bnt = Open KatalogFirmy() + "51nt.dat" for base "nt" //baza notatek
    BaseError(KatalogFirmy() + "51nt.dat", 4)
    int bbd = Open KatalogFirmy() + "51bd.dat" for base "bd"
    BaseError(KatalogFirmy() + "51bd.dat", 4)
   // int bKh = Open KatalogFirmy() + "51kh.dat" for base "kh"
    //BaseError(KatalogFirmy() + "51kh.dat", 4)

    SetKey(bbd, "id")
    SetKeySeg(bbd, "id", lId)
    GetRec(bbd, EQ)
    lKhId = GetField(bbd, "khid")
    message GetField(bbd, "khkod")
    message using "%l",lKhId

    SetKey(bnt,"super")
    SetKeySeg(bnt,"super",lKhId)
    SetKeySeg(bnt,"baza",20)
    if !GetRec(bnt, EQ) then
    message using "%i",GetRec(bnt, EQ)
    sNotka = mid(GetField(bnt, "opis"),1,10)
    message sNotka
    endif

//sNotka = ""
close bbd
close bnt
limit 2000

EndSub


Brakowało określenia bazy z której pochodzi powiązanie z notatką - w przypadku kontrahenta 20

Kod:
SetKeySeg(bnt,"baza",20)

Autor:  wojtek [ 2010-12-02, 11:17 ]
Tytuł: 

Dzięki

Autor:  wojtek [ 2010-12-02, 12:46 ]
Tytuł: 

A czy istniej możliwość dopisania nowej procedury OnKhchanged dla dokumentów płatności?
Chodzi o to że trzeba dla wszystkich nowo wystawianych dokumentów sprawdzać w locie podczas wybierania kontrahenta czy znajduje się przy nim jakas notatka. Dla dok sprzedaży,zakupu i magazynowych nie ma problemu bo procedura jest. Problem jest z dok płatności. Chyba że istnieje jakiś inny sposob sprawdzenia czy jest notatka dla kontrahenta.

Autor:  rafal [ 2010-12-02, 21:53 ]
Tytuł: 

A jak sprawdzisz czy jest notatka to co dalej chcesz z tym zrobić?

Autor:  wojtek [ 2010-12-03, 11:43 ]
Tytuł: 

Nic. Księgowa wtedy sobie ją przeczyta i będzie swoje wiedziała. Ja mam za zadanie sprawić aby podczas wystawiania dokumentu wyświetliła się inforamcja ze przy kontrahencie jest notatka

Autor:  rafal [ 2010-12-03, 13:19 ]
Tytuł: 

No to może wystarczyłoby OnAfterInsert?

Autor:  wojtek [ 2010-12-03, 15:06 ]
Tytuł: 

Generalnie to After to jest już po fakcie , ale w ostateczności księgowa ptrzyjeła. Najbardziej zależanło jej dok sprzedaży. Pozrawiam

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/