API Wydruk

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

spacear
Posty: 48
Rejestracja: 15 paź 2011, 16:29
Rola: Administrator CDN XL
Wersja: 2014

API Wydruk

Post autor: spacear »

Witam,
siedzę i męczę funkcję wydruków, gdyż w dokumentacji jest bardzo lakonicznie to opisane... ;/

Parametry obowiązkowe to:

Wersja
Zrodlo
Wydruk
Format
FiltrSQL
Urządzenie

i wygląda to mniej więcej tak:

string filtr = String.Format("(ZaN_GIDTyp=960 AND ZaN_GIDNumer=2275)");
cdn_api.XLWydrukInfo_22 wdr = new XLWydrukInfo_22();
wdr.Wersja = 22;
wdr.Zrodlo = 0;
wdr.Wydruk = 1;
wdr.Format = 1;
wdr.Urzadzenie = 2;
wdr.FiltrSQL = filtr;
int res = cdn_api.cdn_api.XLWykonajPodanyWydruk(wdr);
if (res != 0)
MessageBox.Show("Błąd res: " + res.ToString());

Ale niestety wyrzuca mi stale błąd 249 - nie udało się wykonanie wydruku

Ma ktoś z Was pomysł co jest nie tak?

i tak na marginesie... Format, Wydruk i Zrodlo co oznaczają dokładnie... ?

Z góry dziękuję za odpowiedzi :)
Pozdrawiam
Łukasz

Awatar użytkownika
glaz
Posty: 380
Rejestracja: 23 lip 2008, 23:46
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Kraków

Re: API Wydruk

Post autor: glaz »

spacear pisze:Witam,
string filtr = String.Format("(ZaN_GIDTyp=960 AND ZaN_GIDNumer=2275)");
[ciach]

i tak na marginesie... Format, Wydruk i Zrodlo co oznaczają dokładnie... ?
Stosowanie filtra dla wydruku, którego się nie zna jest mało koszerne.
Na rysunku masz wskazanie ID (trójka ID) dla wyduku. Rzecz jasna dla każdego wydruku inne, indywidualne ID.
Załączniki
idzrodla.png
idzrodla.png (10.29 KiB) Przejrzano 4640 razy
! (CDN XL and ERP XL) = ?

spacear
Posty: 48
Rejestracja: 15 paź 2011, 16:29
Rola: Administrator CDN XL
Wersja: 2014

Re: API Wydruk

Post autor: spacear »

Wielkie dzięki :)
Zadziałało mi to :)...
Jedynie co to ID źródła musiałem zmienić i już śmigło ;)

Powiem szczerze, że patrzyłem na to i na tabele w SQL oraz opis, ale na prawdę nigdzie tego dokładnie nie opisali... no cóż...

Jeszcze raz dziękuję za zainteresowanie.

Pozdrawiam
Łukasz

Mac
Posty: 14
Rejestracja: 01 wrz 2014, 12:45
Rola: Użytkownik CDN XL

Re: API Wydruk

Post autor: Mac »

Witam
Odświeżam temat o wydrukach przez API.

Mam zdefiniowany w XL raport Crystalowy z parametrem. Jak przekazać wartość tego parametru przez API funkcją XLWykonajPodanyWydruk ?
Próbowałem kombinować polem Zmienne, ale nic to nie daje, z resztą w dokumentacji API pole to jest opisane jako nieużywane...

Kod: Zaznacz cały

Wersja                                  - numer wersji API
Procedura                               - numer procedury dla której ma zostać wykonany wydruk
                                                         - 2900 – dokumenty handlowe
                                                         - 2950 – dokumenty eksportowe
Kontekst                                - kontekst wydruku (numer zakładki)
Zrodlo                                  - ID źródła
Wydruk                                  - ID wydruku (folderu z drzewa wydruków)
Format                                  - ID formatu
Urzadzenie                              - typ urządzenia wyjściowego (1- ekran; 2 – domyślna drukarka, 3 – inna drukarka, 4 - serwer wydruków)
DrukujDoPliku                          - ustawienie flagi powoduje zapisanie wydruku do pliku w ścieżce określonej w parametrze PlikDocelowy
ObiTyp                                  - Identyfikator drukowanego obiektu, potrzebny do zapisywania kopii elektronicznej jako załącznika do wskazanego obiektu.
ObiNumer                              -
ObiLp                                     -
Zmienne                                 - niewykorzystywane
FiltrTPS                                  - filtr TPS przekazywany z aplikacji do wydruku
FiltrSQL                                 - filtr SQL przekazywany z aplikacji do wydruku
Sortowanie                             - pole niewykorzystywane
PlikDocelowy                         - ściezka do pliku, gdzie ma zostać zapisany dokument
Z drugiej strony nie widzę w tym opisie powyżej nic innego co mogłoby pomóc.

Czy udało się komuś przebrnąć przez takie zagadnienie ?

john_doe
Posty: 650
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

Re: API Wydruk

Post autor: john_doe »

spacer, możesz zapodać cały Twój działający kod?
Na jakiej wersji XL pracujesz?

nie udaje mi się ta szuka od dawna, również 249, moja metoda

Kod: Zaznacz cały

        private void drukuj()
        {
            Int32 APIVersion = 20;
            Int32 SessionID = -1;
            Int32 loginResult;

            try
            {
                cdn_api.XLLoginInfo_20 Login = new cdn_api.XLLoginInfo_20();

                Login.Wersja = APIVersion;
                Login.Winieta = 0;
                Login.ProgramID = "API Printout to pdf";
                Login.UtworzWlasnaSesje = 0;
                
                loginResult = cdn_api.cdn_api.XLLogin(Login, ref SessionID);


                cdn_api.XLWydrukInfo_20 printDoc = new cdn_api.XLWydrukInfo_20();
                string filtr = String.Format("(TrN_GIDTyp=2033 AND TrN_GIDNumer=461935885)");

                printDoc.Wersja = APIVersion;
                printDoc.DrukujDoPliku = 1;
                printDoc.Zrodlo = 1;
                printDoc.Wydruk = 2;
                printDoc.Format = 2;
                printDoc.FiltrSQL = filtr;
                printDoc.Urzadzenie = 3;
                printDoc.PlikDocelowy = @"C:\Users\testUser\Desktop\xl.pdf";
                  
                       
                //XP path just for debug/testing
                //printDoc.PlikDocelowy = @"C:\Documents and Settings\testUser\Pulpit\xl_API_printout.pdf";

                Int32 printResult;
                printResult = cdn_api.cdn_api.XLWykonajPodanyWydruk(printDoc);

                

                Console.WriteLine("Session ID: " + SessionID + " ----> " + printResult);
                
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
            finally
            {
                if(cdn_api.cdn_api.XLLogout(SessionID) != 0 )
                {
                    Console.WriteLine("Error during Logout");
                }
                else 
                { 
                    Console.WriteLine("Logout successful!"); 
                }
                
                Console.ReadKey();
            }
        }

ODPOWIEDZ