Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: subiekcior w Maj 29, 2018, 12:00:20
-
Cześć,
mam taki problem, że najpierw chcę pobrać ID lub numer faktury FS do ostatniej wepchanej do Subiekta.
Pcham XML z danymi, przetwarzam go i z niego generuje fakturę. Pcham ją do Subiekta i teraz chciałbym od razu tę fakturę wczytać i drukować do pliku(pdf). Korzystam z metod: Istnieje, Wczytaj, DrukujDoPliku, wszystkie obracające z SuDokumenty. Jednak wyrzuca mi wciąż dziwne błędy i nie mam pojęcia jak im zaradzić. Wie ktoś może jak to zrobić? Jak pobrać numer Faktury FS lub jej ID, żeby ją wczytać, a potem zapisać do pliku PDF?
-
1. tworzysz dokument
2. zapisujesz dokument
3. odczytujesz identyfikator
4. zamykasz dokument
-
Niby odczytałem identyfikator dokumentu, sprawdzam, czy on istnieje i tu jest dobrze, niby jest on w bazie. Metoda Istnieje zwraca nam true, czyli faktura istnieje w bazie.
Większe czary dzieją się przy metodzie Wczytaj. Wczytuje dokument za pomocą jego identyfikatora(tego samego co użyłem w przypadku Istnieje) i chcę od razu wyświetlić ten dokument. I tutaj dzieją się czary, bo wyskakuje błąd "Dispatch not hooked to windows memory"..
-
Dla zobrazowania sytuacji:
dok_Id = importer.invoke("Dane","dok_Id");
Variant comResult = dokumenty.invoke("Istnieje", dok_Id);
if(!comResult.getBoolean()){
log.error("file with ID: " + dok_Id + " NOT loaded");
return false;
}
else {
log.info("file with ID: " + dok_Id + " IS loaded");
ActiveXComponent wczytajFakture = dokumenty.invokeGetComponent("Wczytaj", new Variant("FS 114/JK/MAG/2018"));
wczytajFakture.invoke("Wyswietl");
}
Tutaj wszystko jest dobrze! Natomiast, jak już pobierzemy to ID, to zacznie nam wywalać błędy przy linijce z metodą Wyświetl..
dok_Id = importer.invoke("Dane","dok_Id");
Variant comResult = dokumenty.invoke("Istnieje", dok_Id);
if(!comResult.getBoolean()){
log.error("file with ID: " + dok_Id + " NOT loaded");
return false;
}
else {
log.info("file with ID: " + dok_Id + " IS loaded");
ActiveXComponent wczytajFakture = dokumenty.invokeGetComponent("Wczytaj", dok_Id);
wczytajFakture.invoke("Wyswietl");
}
-
Nie widzę czym jest obiekt "dokumenty", dla pewności korzystaj z nowych managerów (z frazą "manager w nazwie" jak SuDokumentyManager)... Samego problemu szukaj w środowisku, którym próbujesz się posługiwać, ogólny kod wygląda dobrze.
-
ActiveXComponent subiekt = gt.invokeGetComponent( "Uruchom",
new Variant(UruchomDopasujEnum_gtaUruchomDopasuj),
new Variant(UruchomEnum_gtaUruchom));
private ActiveXComponent dokumenty= subiekt.invokeGetComponent("Dokumenty");
I tak wyżej, ogólnie jest to uruchomienie Subiekta i pobranie z niego obiektów, tak jak jest to opisane w Pomocy Sfery.
Próbowałem też wyciągnąć numer faktury(podobnie jak Id), ale nie mogę dostać jej prawdziwej fizycznej postaci, czyli np. "FS 23/.../2018"..
-
Nie mam nic więcej do dodania, w środowisku programistycznym, z którego ja korzystam (VS 2012 i C#) wszystko działa jak należy.