Autor |
Wiadomość |
Mix-soft.pl
|
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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
|
2010-11-02, 14:19 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
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ć.
_________________ zz
|
2010-11-02, 14:24 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Sprawdź ten kod, który podałem wyżej i napisz czy zadziałało.
|
2010-11-02, 14:26 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Niestety mam błąd wykonania:
Nie przypisano bazy to rekordu typu BaseAll...
(PS. mam FORTE 2010 - jak w podpisie)
_________________ zz
|
2010-11-02, 14:36 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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
|
2010-11-02, 15:02 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Dzięki, bardzo mi to ułatwi 'życie'
_________________ zz
|
2010-11-02, 15:18 |
|
|
tomas
Rejestracja: 2007-11-15, 15:22 Posty: 55
|
A nie dało się samymi obiektami?
Po co ten kawałek z zapytaniem.
|
2010-11-02, 17:06 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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)
|
2010-11-02, 22:55 |
|
|
jabis
Rejestracja: 2009-09-22, 09:56 Posty: 112
|
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 :)
|
2010-11-03, 14:28 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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 :)
|
2010-11-03, 15:11 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Dziękuję za rady.
_________________ zz
|
2010-11-05, 11:36 |
|
|
jabis
Rejestracja: 2009-09-22, 09:56 Posty: 112
|
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
|
2010-11-14, 16:20 |
|
|
jabis
Rejestracja: 2009-09-22, 09:56 Posty: 112
|
ZZ mile widziane kliknięcie na przycisk 'pomógł' ;)
|
2010-11-22, 01:37 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
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 [ 18.62 KiB | Przeglądany 6103 razy ]
pomogl_chrome.JPG [ 15.79 KiB | Przeglądany 6103 razy ]
_________________ zz
|
2010-11-22, 08:59 |
|
|