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

OnTwChanged a kod dokumentu
https://forum.mix-soft.pl/viewtopic.php?f=15&t=2436
Strona 1 z 1

Autor:  zz [ 2010-11-02, 13:50 ]
Tytuł:  OnTwChanged a kod dokumentu

Witam.
W jaki sposób znaleźć kod dokumentu ZMO, jeśli procedurę chcę wywołać z poziomu OnTwChanged?

Autor:  rafal [ 2010-11-02, 14:19 ]
Tytuł: 

Przy wywołaniu funkcji OnTwChanged zwracane jest Id pozycji dokumentu.
Aby pobrać numer dokumentu pobierz powiązany rekord dokumentu.
Jeżeli to Symfonia to :
Kod:
int Sub OnTwChanged(long lId)

basebp bp
bp.GetRecById( lId )

basebp bd
bd.GetRecById( bp.GetField("super") )   

message bd.GetField("kod")

   OnKhChanged = 0
EndSub

W FORTE można podobnie lub za pomocą obiektów

Autor:  zz [ 2010-11-02, 14:24 ]
Tytuł: 

No właśnie moje pytanie dotyczy tego
Cytuj:
W FORTE można podobnie lub za pomocą obiektów

bo nie wiem, jak dane tego obiektu stąd sprawdzić.

Autor:  rafal [ 2010-11-02, 14:26 ]
Tytuł: 

Sprawdź ten kod, który podałem wyżej i napisz czy zadziałało.

Autor:  zz [ 2010-11-02, 14:36 ]
Tytuł: 

Niestety mam błąd wykonania:
Nie przypisano bazy to rekordu typu BaseAll...
(PS. mam FORTE 2010 - jak w podpisie)

Autor:  rafal [ 2010-11-02, 15:02 ]
Tytuł: 

Kod:
int Sub OnTwChanged(long lId)
   
dispatch xDk = xFactory.NewObject("BDokumentZo")

dispatch con = GetAdoConnection()
dispatch rs = "ADODB.Recordset"

string sSQL = using "SELECT * FROM ZP WHERE id = %l", lId

if rs.State == 1 then rs.Close()
rs.Open ( sSQL ,con,3)

if rs.RecordCount > 0 then

   xDk.Load(using "id=%l", rs.Fields("super").Value)
message xDk.kod
endif

Autor:  zz [ 2010-11-02, 15:18 ]
Tytuł: 

Dzięki, bardzo mi to ułatwi 'życie'

Autor:  tomas [ 2010-11-02, 17:06 ]
Tytuł: 

A nie dało się samymi obiektami?
Po co ten kawałek z zapytaniem.

Autor:  rafal [ 2010-11-02, 22:55 ]
Tytuł: 

Może i można. Jak ktoś wie jak zrobić to samymi obiektami to proszę o info.

Aż prosiłoby się o użycie obiektu BPozycjaZo i załadowanie go danymi pozycji o ID zwracanym przez OnTwChanged. Jednak z tego co mi wiadomo obiekt BPozycjaZo nie może istnieć "sam". Czyli nie możemy zrobić czegoś takiego :
Kod:
dispatch xPo = xFactory.NewObject("BPozycjaZo")

tym badziej, że nie ma
Kod:
xPo.Load(using "id=%l", lId)

Autor:  jabis [ 2010-11-03, 14:28 ]
Tytuł: 

A może rozszerzyć tok myślenia o dokument a nie tylko ograniczać się do pozycji ?!
Kod:
dispatch xDk, xPo
int Sub OnAddNewDokument(long lId)
   OnAddNewDokument = 0
   xDk = xFactory.NewObject("BDokumentZk")
   xDk.Load(using "id=%l", lId)
EndSub

int Sub OnTwChanged(long lId)
   OnTwChanged = 0
   xPo = xDk.pozycje
   Message using "DK: %l PO: %l ID: %l", xDk.id, xPo.item(xPo.Count).id, lId
EndSub


Na jednej stacji roboczej równocześnie wystawiane dwa dokumenty podawały mi właściwą ilość pozycji podczas dodawania kolejnej... to może być rozwiązanie :)
A jak wiemy... zawsze na końcu jest nowa pozycja :)

Autor:  rafal [ 2010-11-03, 15:11 ]
Tytuł: 

podoba mi się to rozwiązanie i wygląda, że działa
Kod:
dispatch xDk, xPo

int Sub OnAddNewDokument(long lId)
   
    xDk = xFactory.NewObject("BDokumentZo")
    xDk.Load(using "id=%l", lId)

   OnAddNewDokument = 0
EndSub

int Sub OnBeforeEdit(long lId)
   
    xDk = xFactory.NewObject("BDokumentZo")
    xDk.Load(using "id=%l", lId)

   OnBeforeEdit = 0
EndSub

int Sub OnBeforeBuforEdit(long lId)

    xDk = xFactory.NewObject("BDokumentZo")
    xDk.Load(using "id=%l", lId)

   OnBeforeBuforEdit = 0
EndSub

int Sub OnTwChanged(long lId)
   
   message xDk.kod   

   OnTwChanged = 0
EndSub


no i jest za pomocą obiektów :)

Autor:  zz [ 2010-11-05, 11:36 ]
Tytuł: 

Dziękuję za rady.

Autor:  jabis [ 2010-11-14, 16:20 ]
Tytuł: 

Dodatkowa pora...

Ze względu na różne zmiany podczas edycji dokumentu, warto jest w każdym zdarzeniu ponowne wczytanie obiektu.
Przykładowo... stworzyliśmy powiązanie z dokumentem innym za pomocą procedur i do puki nie wczytamy ponownie obiektu, powiązanie nie będzie widoczne w obiekcie.
Więc OnTwChange powinno wyglądać prawidłowo tak:
Kod:
int Sub OnTwChanged(long lId)
    xDk = xFactory.NewObject("BDokumentZo")
    message xDk.kod   
    OnTwChanged = 0
EndSub

Autor:  jabis [ 2010-11-22, 01:37 ]
Tytuł: 

ZZ mile widziane kliknięcie na przycisk 'pomógł' ;)

Autor:  zz [ 2010-11-22, 08:59 ]
Tytuł: 

Oczywiście...Przepraszam...
Ale w Chrome nie widać przycisku POMÓGŁ (może mam coś z ustawieniami, bo w IE jest)

Załączniki:
pomogl_IE.JPG
pomogl_IE.JPG [ 18.62 KiB | Przeglądany 6046 razy ]
pomogl_chrome.JPG
pomogl_chrome.JPG [ 15.79 KiB | Przeglądany 6046 razy ]

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