CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Moderator: mikey
CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Witam wszystkich,
Mam problem. Od kilku dni staram sie dojsc do ladu z dodawaniem dokumentow do cdnXl przez API.
Wydawało by się, że wszystko zaczęło funkcjonować ale jak zwykle coś nie działa tak jak należy.
Mam taki problem:
Z przycisku w aplikacji napisanej w sybase powerbuilder przenosze dane do XL-a
Sekwencja jest taka:
API 22
========
1. XLLogin
2. XLNowyDokument (zakładam fakturę zakupu)
3. XLDodajPozycje (dodaję towar a-vista)
4. XLZamknijDokument
5. XLLogout
=========
Ponieważ dokument dodawany jest w trybie interakcyjnym (tryb 1), otwiera się okno XL-a,
mogę dokument ręcznie zadekretować i zaksięgować. Do tej pory jest w porządku.
===================================================
Problem zaczyna się, gdy chcę dodać kolejny dokument.
W jednym przypadku mam taki błąd:
"Nie udało się wymusić numeru dokumentu/niepoprawny numer. (NowyDokument-33)"
Nie wiem o co chodzi bo nie nadaję numerów dokumentów?
==
Jedyną receptą jaką udało mi się znaleźć w tym przypadku jest zamknięcie mojej aplikacji i uruchomienie jej na nowo.
Czyli albo wisi coś w SQL-u i zamnknięcie aplikacji definitywnie zabija proces(y) albo XLLogout nie sprząta po sobie wszystkiego?
==
W innym przypadku otrzymywałem błąd 122 (nie jest opisany ??)
==
Gdy spróbowałem poruszać się w obrębie jednej sesji (nie zrobiłem XLLogout) udało mi się dodać drugi dokument (przynajmniej taki status zwróciło)
ale nie wywołało okna XL-a do edycji.
Nie mogę również otworzyć dokumentu w trybie interakcyjnym przy użyciu funkcji XLOtwórzDokument.
Funkcja zwraca status, że dokument został otwarty ale okno XL-a nie otwiera się.
Czy to jest kwestia jakichś odpowiednich wersji net.framework, wina api-22 czy może czegoś innego?
Próbowałem na dwóch systemach: WIN XP PRO SP3 i WINDOWS SERVER 2008R2
Może ktoś ma jakiś pomysł?
Mam problem. Od kilku dni staram sie dojsc do ladu z dodawaniem dokumentow do cdnXl przez API.
Wydawało by się, że wszystko zaczęło funkcjonować ale jak zwykle coś nie działa tak jak należy.
Mam taki problem:
Z przycisku w aplikacji napisanej w sybase powerbuilder przenosze dane do XL-a
Sekwencja jest taka:
API 22
========
1. XLLogin
2. XLNowyDokument (zakładam fakturę zakupu)
3. XLDodajPozycje (dodaję towar a-vista)
4. XLZamknijDokument
5. XLLogout
=========
Ponieważ dokument dodawany jest w trybie interakcyjnym (tryb 1), otwiera się okno XL-a,
mogę dokument ręcznie zadekretować i zaksięgować. Do tej pory jest w porządku.
===================================================
Problem zaczyna się, gdy chcę dodać kolejny dokument.
W jednym przypadku mam taki błąd:
"Nie udało się wymusić numeru dokumentu/niepoprawny numer. (NowyDokument-33)"
Nie wiem o co chodzi bo nie nadaję numerów dokumentów?
==
Jedyną receptą jaką udało mi się znaleźć w tym przypadku jest zamknięcie mojej aplikacji i uruchomienie jej na nowo.
Czyli albo wisi coś w SQL-u i zamnknięcie aplikacji definitywnie zabija proces(y) albo XLLogout nie sprząta po sobie wszystkiego?
==
W innym przypadku otrzymywałem błąd 122 (nie jest opisany ??)
==
Gdy spróbowałem poruszać się w obrębie jednej sesji (nie zrobiłem XLLogout) udało mi się dodać drugi dokument (przynajmniej taki status zwróciło)
ale nie wywołało okna XL-a do edycji.
Nie mogę również otworzyć dokumentu w trybie interakcyjnym przy użyciu funkcji XLOtwórzDokument.
Funkcja zwraca status, że dokument został otwarty ale okno XL-a nie otwiera się.
Czy to jest kwestia jakichś odpowiednich wersji net.framework, wina api-22 czy może czegoś innego?
Próbowałem na dwóch systemach: WIN XP PRO SP3 i WINDOWS SERVER 2008R2
Może ktoś ma jakiś pomysł?
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Dodając nowy dokument należy ustawić 'numer' równy 0 tak aby program we własnym zakresie pobrał kolejny w ramach numeratora. Należy również pamiętać, że po wywołaniu funkcji do tych samych zmiennych są zwracane wyniki. Co to oznacza? Jeżeli nie przekazujemy wartości dla zmiennej to przy kolejnych wywołaniach ma cały czas tą samą wartość. Przykładowo jeżeli pominiemy numer to do tej zmiennej po pierwszym wywołaniu zostanie zwrócony numer ostatnio dodawanego dokumentu i w kolejnych wywołaniach funkcji program będzie się starał cały czas przekazać tą samą warytość co będzie powodowało błąd. To samo dotyczy wszystkich funkcji.
Reasumując jeżeli czegoś nie wpiszemy w kodzie to to nie oznacza, że nie ma tam wartości więc najbezpieczniej jest ustawiać dla wszystkich pozostałych obiektów 0 lub pusty ciąg.
Co do numerów błędów to niektóre są wspólne do kilku funkcji. Wtedy lepiej korzystać z załączników w helpie niż opisu błędów do konkretnej funkcji.
Reasumując jeżeli czegoś nie wpiszemy w kodzie to to nie oznacza, że nie ma tam wartości więc najbezpieczniej jest ustawiać dla wszystkich pozostałych obiektów 0 lub pusty ciąg.
Co do numerów błędów to niektóre są wspólne do kilku funkcji. Wtedy lepiej korzystać z załączników w helpie niż opisu błędów do konkretnej funkcji.
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Tak jak napisał greg. Najprościej to widać jak pod guzik w XL przyczepisz sobie MessageBoxa wyświetlającego np. zmienną Zmienna = Zmienna + "AAA". Poklikaj sobie pare razy i policz A
Dlatego najlepiej jest "zerować" zmienne przed właściwym wywołaniem funkcji.
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Najprostsza z rzeczy która nie przyszła mi do głowy.
Oczywiście sprawdzę ale mam obawy, że nie to będzie problemem, gdyż za każdym razem przed założeniem dokumentu deklaruję i inicjuję strukturę.
Póki co dziękuję za rady.
Oczywiście sprawdzę ale mam obawy, że nie to będzie problemem, gdyż za każdym razem przed założeniem dokumentu deklaruję i inicjuję strukturę.
Póki co dziękuję za rady.
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Oto wynik ustawienia Numer = 0
Robie tak:
stdxl_h_dokumentnowy_22 buf_stdxl_22 //lokalna struktura
xl_dokumentnowy = buf_stdxl_22 //xl_dokumentnowy to struktura globalna, tutaj czyszczenie
IDDokumentu = 0
.
tutaj logowanie
.
Wszystie dane które wstawiam:
xl_dokumentnowy.wersja = 22
xl_dokumentnowy.typ = 1
xl_dokumentnowy.Avista = 1
xl_dokumentnowy.gidtyp = 1521
xl_dokumentnowy.DokumentObcy = '123\VAT\2011'
xl_dokumentnowy.akronim = "ABC"
xl_dokumentnowy.tryb = 1
xl_dokumentnowy.rejestr = "ZAKUP"
xl_dokumentnowy.forma = lrodzplatn //rodzaj platnosci
xl_dokumentnowy.termin = lterminplatn //termin platnosci - clarion
xl_dokumentnowy.data = lDataWyst //data wystawienia dok - clarion
xl_dokumentnowy.dataspr = lDataSprzed //data sprzedazy/zakupu - clarion
xl_dokumentnowy.datamag = lDataWyd //data przyjęcia/wydania - clarion
xl_dokumentnowy.numer = 0
.
Dostaję IDDokumentu = 6451
.
dodaje pozycje
.
Zamykam (IDDokumentu,XLZamknijDokument)
.
tutaj otwiera sie okno, uzupelniam i zapisuje.
wylogowanie
.
LOGI:
=================
INFO! ZALOGOWANNO OK! sesja nr: 5062 data: 15:42:06
OK! POBRANO LICENCJE!!
OK! DOKUMENT ZALOZONY!! GIDnr: 373320370 DOK: 6451
OK! POZYJA 1 DODANA!!
OK! ZAMYKAM DOKUMENT!! GIDnr 373320370 DOK: 6451
OK! DOKUMENT ZAMKNIETY!! nr 6451
INFO! WYLOGOWANO OK! 15:42:29
=================
i za drugim kiedy powtarzam sekwencje otrzymuje cos takiego:
=================
INFO! ZALOGOWANNO OK! sesja nr: 5063 data: 15:44:07
OK! POBRANO LICENCJE!!
OK! DOKUMENT ZALOZONY!! GIDnr: 373320371 DOK: 6451
OK! POZYJA 1 DODANA!!
OK! ZAMYKAM DOKUMENT!! GIDnr 373320371 DOK: 6451
BLAD! 0 / BŁĘDY:|Wystąpił niezidentyfikowany błąd.|Błąd najprawdopodobniej jest spowodowany złym działaniem otoczenia programu. () (NowyDokument-122)
INFO! WYLOGOWANO OK! 15:44:08
=================
DODAM, ŻE W XL-u FAKTURA SIĘ ZAŁOŻŁA
Widzę, że zwraca mi ten sam numer dokumentu z tabeli ObiektyObce (DOK: 6451)
Czy tak powinno być?
HELP!
P.S
Znalazłem opis błędu 122 przy funkcji otwieającej dokument.
:122 - Dokument jest edytowany na innym stanowisku
O co tu chodzi?
Pozdawiam,
Tomasz Białek
Robie tak:
stdxl_h_dokumentnowy_22 buf_stdxl_22 //lokalna struktura
xl_dokumentnowy = buf_stdxl_22 //xl_dokumentnowy to struktura globalna, tutaj czyszczenie
IDDokumentu = 0
.
tutaj logowanie
.
Wszystie dane które wstawiam:
xl_dokumentnowy.wersja = 22
xl_dokumentnowy.typ = 1
xl_dokumentnowy.Avista = 1
xl_dokumentnowy.gidtyp = 1521
xl_dokumentnowy.DokumentObcy = '123\VAT\2011'
xl_dokumentnowy.akronim = "ABC"
xl_dokumentnowy.tryb = 1
xl_dokumentnowy.rejestr = "ZAKUP"
xl_dokumentnowy.forma = lrodzplatn //rodzaj platnosci
xl_dokumentnowy.termin = lterminplatn //termin platnosci - clarion
xl_dokumentnowy.data = lDataWyst //data wystawienia dok - clarion
xl_dokumentnowy.dataspr = lDataSprzed //data sprzedazy/zakupu - clarion
xl_dokumentnowy.datamag = lDataWyd //data przyjęcia/wydania - clarion
xl_dokumentnowy.numer = 0
.
Dostaję IDDokumentu = 6451
.
dodaje pozycje
.
Zamykam (IDDokumentu,XLZamknijDokument)
.
tutaj otwiera sie okno, uzupelniam i zapisuje.
wylogowanie
.
LOGI:
=================
INFO! ZALOGOWANNO OK! sesja nr: 5062 data: 15:42:06
OK! POBRANO LICENCJE!!
OK! DOKUMENT ZALOZONY!! GIDnr: 373320370 DOK: 6451
OK! POZYJA 1 DODANA!!
OK! ZAMYKAM DOKUMENT!! GIDnr 373320370 DOK: 6451
OK! DOKUMENT ZAMKNIETY!! nr 6451
INFO! WYLOGOWANO OK! 15:42:29
=================
i za drugim kiedy powtarzam sekwencje otrzymuje cos takiego:
=================
INFO! ZALOGOWANNO OK! sesja nr: 5063 data: 15:44:07
OK! POBRANO LICENCJE!!
OK! DOKUMENT ZALOZONY!! GIDnr: 373320371 DOK: 6451
OK! POZYJA 1 DODANA!!
OK! ZAMYKAM DOKUMENT!! GIDnr 373320371 DOK: 6451
BLAD! 0 / BŁĘDY:|Wystąpił niezidentyfikowany błąd.|Błąd najprawdopodobniej jest spowodowany złym działaniem otoczenia programu. () (NowyDokument-122)
INFO! WYLOGOWANO OK! 15:44:08
=================
DODAM, ŻE W XL-u FAKTURA SIĘ ZAŁOŻŁA
Widzę, że zwraca mi ten sam numer dokumentu z tabeli ObiektyObce (DOK: 6451)
Czy tak powinno być?
HELP!
P.S
Znalazłem opis błędu 122 przy funkcji otwieającej dokument.
:122 - Dokument jest edytowany na innym stanowisku
O co tu chodzi?
Pozdawiam,
Tomasz Białek
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Zwróć uwagę na funkcję zamykającą dokument. Generalnie zamykać (potwierdzać) dokumenty można na dwa sposoby - funkcję zamykającą dokument można wywołać indywidualnie podająć gid zamykanego dokumentu lub jako wywołaniu po otworzeniu lub założeniu nowego dokumentu i wtedy gid powinien być równy 0 gdyż informacja co to za dokument jest przykazywana w zmiennej iddokumentu.
Zapewne masz błąd z tego samego powodu co wcześniej - nie zerujesz gidu dokumentu w strukturze funkcji zamykającej dokument i przy drugim dokumencie funkcja jest wołana dla pierwszego gidu.
Zapewne masz błąd z tego samego powodu co wcześniej - nie zerujesz gidu dokumentu w strukturze funkcji zamykającej dokument i przy drugim dokumencie funkcja jest wołana dla pierwszego gidu.
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Tak - rzeczywiscie. Wpadłem na to dziasiaj rano, że nie czyszczę TEJ strutury przy zamykaniu dokumentu (ctrl+c i ctrl+v ...)
Niestety nie jestem w stanie teraz tego sprawdzić fizycznie.
W kadym razie dziękuję bardzo za podpowiedź - odezwę się jak sprawdzę działanie.
Marrtwi mnie natomiast, że nie mogę otworzyć dokumentu do reedycji.
Czy masz jakiś pomysł dlaczego nie otwiera się okno XL-a?
Robię to mniej więcej tak:
.
login
.
xl_dokumentotworz.wersja = lXlApiVer (czyli: 22)
xl_dokumentotworz.gidnumer = lGidNumer
xl_dokumentotworz.GIDTyp = 1521
xl_dokumentotworz.TrNTyp = 1
xl_dokumentotworz.tryb = 1
XLOtworzDokument_22(lXlSesjaId,lXlDokumentId,xl_dokumentotworz)
.
logout
.
Funkcja zwraca, że dokument otwarto i tyle.
Czy działanie tej funkcji powinno być takie jak funkcji zamykającej - tzn, w momencie wywołania powinna
otworzyć się formatka XL-a, po zamknięciu której powinno przejść do następnej linii kodu w mojej aplikacji (czyli: logout) ??
Pozdrawiam
Tomasz Białek
Niestety nie jestem w stanie teraz tego sprawdzić fizycznie.
W kadym razie dziękuję bardzo za podpowiedź - odezwę się jak sprawdzę działanie.
Marrtwi mnie natomiast, że nie mogę otworzyć dokumentu do reedycji.
Czy masz jakiś pomysł dlaczego nie otwiera się okno XL-a?
Robię to mniej więcej tak:
.
login
.
xl_dokumentotworz.wersja = lXlApiVer (czyli: 22)
xl_dokumentotworz.gidnumer = lGidNumer
xl_dokumentotworz.GIDTyp = 1521
xl_dokumentotworz.TrNTyp = 1
xl_dokumentotworz.tryb = 1
XLOtworzDokument_22(lXlSesjaId,lXlDokumentId,xl_dokumentotworz)
.
logout
.
Funkcja zwraca, że dokument otwarto i tyle.
Czy działanie tej funkcji powinno być takie jak funkcji zamykającej - tzn, w momencie wywołania powinna
otworzyć się formatka XL-a, po zamknięciu której powinno przejść do następnej linii kodu w mojej aplikacji (czyli: logout) ??
Pozdrawiam
Tomasz Białek
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Dzieje się tak gdyż funkcja Otwórzdokument działa tak jak NowyDokument. Podniesienie na ekran następuje dopiero przy wołaniu ZamknijDokument. Trzeba pamiętać, że otwierając dokument musimy go zamknąć bo inaczej pozostanie w edycji na czerwono. Aha no i należy pamiętać o ograniczeniach trybu interakcyjnego API - jak operator zacznie coś kombinować np spróbuje podnieść historię towaru to wszystko się zawiesi.
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
No i nareszcie wszystko jest jasne - dziękuję!
Dam znać w poniedziałek jak mi poszło.
Pozdrawiam,
T.
Dam znać w poniedziałek jak mi poszło.
Pozdrawiam,
T.
Re: CDN API DODAWANIE DOKUMENTOW INTERAKCYJNIE
Witam ponownie.
Greg - dzięki za trafne podpowiedzi.
Jeśli chodzi o dodawanie dokumentów - działa OK!
Przyczyna leżała w zamykaniu (p. post wyżej)
Niestety nadal mam problem z otwarciem dokumentu - funkcja zamykająca (bo otwarcie się teoretycznie powiodło) zwraca mi błąd 4
(Znalazłem dwa opisy: "Dokument nie jest w buforze" - z help-a i "dokument jest w edycji" - z funkcji opis błedu).
INFO! ZALOGOWANNO OK! sesja nr: 5070 data: 13:56:30
OK! POBRANO LICENCJE!!
OK! OTWIERAM DOKUMENT!! GIDnr 373320373
OK! DOKUMENT OTWARTY!! nr 6452
OK! ZAMYKAM DOKUMENT!! DOK: 6452
BLAD! 0 / BŁĘDY:|Dokument nie jest w buforze. (ZamknijDokument-4)
INFO! WYLOGOWANO OK! 13:56:30
W helpie znalazłem informację, że dokumenty typu A-vista nie są zamykane do bufora.
Czyli mam z tego rozumiem, że nie jestem ich w stanie otworzyć poprzez api? Czy też znowu jest inna tego przyczyna?
Być może nie będzie mi to otwieranie w praktyce w ogóle potrzebne, ale na chwilę obecną tego nie wiem,
a nie chcę mieć potem niespodzianki...
Pozdrawiam,
Tomasz Białek
Greg - dzięki za trafne podpowiedzi.
Jeśli chodzi o dodawanie dokumentów - działa OK!
Przyczyna leżała w zamykaniu (p. post wyżej)
Niestety nadal mam problem z otwarciem dokumentu - funkcja zamykająca (bo otwarcie się teoretycznie powiodło) zwraca mi błąd 4
(Znalazłem dwa opisy: "Dokument nie jest w buforze" - z help-a i "dokument jest w edycji" - z funkcji opis błedu).
INFO! ZALOGOWANNO OK! sesja nr: 5070 data: 13:56:30
OK! POBRANO LICENCJE!!
OK! OTWIERAM DOKUMENT!! GIDnr 373320373
OK! DOKUMENT OTWARTY!! nr 6452
OK! ZAMYKAM DOKUMENT!! DOK: 6452
BLAD! 0 / BŁĘDY:|Dokument nie jest w buforze. (ZamknijDokument-4)
INFO! WYLOGOWANO OK! 13:56:30
W helpie znalazłem informację, że dokumenty typu A-vista nie są zamykane do bufora.
Czyli mam z tego rozumiem, że nie jestem ich w stanie otworzyć poprzez api? Czy też znowu jest inna tego przyczyna?
Być może nie będzie mi to otwieranie w praktyce w ogóle potrzebne, ale na chwilę obecną tego nie wiem,
a nie chcę mieć potem niespodzianki...
Pozdrawiam,
Tomasz Białek