API - XlWykonajPodanyWydruk

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

Moderator: mikey

LucidMan
Posty: 26
Rejestracja: 14 kwie 2010, 20:58
Rola: Konsultant CDN XL
Wersja: 9.6

API - XlWykonajPodanyWydruk

Post autor: LucidMan »

Witam,

Wykonanie funkcji XLWykonajPodanyWydruk z trybem podglądu na ekran (urzadzenie=1) powoduje zawieszenie się tej funkcji i tym samym całej aplikacji. Trzeba ją ubić z menedżera zadań.
Kod:

public static void WykonajWydruk(int zrodlo, int wydruk, int format, string filtrSql, int urzadzenie)
{
var wydrukInfo = new XLWydrukInfo_24();

wydrukInfo.Wersja = ApiVer;
wydrukInfo.Zrodlo = zrodlo;
wydrukInfo.Wydruk = wydruk;
wydrukInfo.Format = format;
wydrukInfo.FiltrSQL = filtrSql;
wydrukInfo.Urzadzenie = urzadzenie;

var ret = cdn_api.cdn_api.XLWykonajPodanyWydruk(wydrukInfo); // to się wiesza

Validate(ret, "XL_WykonajWydruk", 87);
}

Przykład:
ApiXL.WykonajWydruk(0, 303, 6, "(TrN_GIDTyp=2033 AND TrN_GIDNumer=45483)", 1); // faktura sprzedaży

Będę wdzięczny za wskazówki.

Awatar użytkownika
viesiek1
Posty: 425
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: API - XlWykonajPodanyWydruk

Post autor: viesiek1 »

A może tak Ci się uda:

Kod: Zaznacz cały

Runtime.ConfigurationDictionary.WykonajWydruk(...)
Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

LucidMan
Posty: 26
Rejestracja: 14 kwie 2010, 20:58
Rola: Konsultant CDN XL
Wersja: 9.6

Re: API - XlWykonajPodanyWydruk

Post autor: LucidMan »

ConfigurationDictionary jest równe null. Wydaje mi się, że nie ma możliwość skorzystania z metod tej klasy inaczej niż przez callbacki (hydra).

Awatar użytkownika
viesiek1
Posty: 425
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: API - XlWykonajPodanyWydruk

Post autor: viesiek1 »

Tak, przez Hydrę, ale bez użycia funkcji API. Robisz normalny Callback w dużej Hydrze i i używasz tej funkcji. Ja sam nie miałem potrzeby wywoływać wydruku, ale widziałem taką opcję, więc Ci podpowiadam. Niestety nie mam pewności czy i jak ona działa.
Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

Awatar użytkownika
viesiek1
Posty: 425
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: API - XlWykonajPodanyWydruk

Post autor: viesiek1 »

Udało mi się zrobić wydruk przez API. Podany niżej kod działa:

Kod: Zaznacz cały

        private void Test()
        {
            Int32 APIVersion = 23;
            Int32 SessionID = -1;

            try
            {
                cdn_api.XLLoginInfo_23 XLLogin = new cdn_api.XLLoginInfo_23();
                XLLogin.Wersja = APIVersion;
                XLLogin.Winieta = -1;
                cdn_api.cdn_api.XLLogin(XLLogin, ref SessionID);

                cdn_api.XLWydrukInfo_23 XLWydruk = new cdn_api.XLWydrukInfo_23();

                XLWydruk.Wersja = APIVersion;
                XLWydruk.Zrodlo = 1;
                XLWydruk.Wydruk = 2;
                XLWydruk.Format = 1;
                XLWydruk.FiltrSQL = "(TrN_GIDTyp=2033 AND TrN_GIDNumer=199381)";
                XLWydruk.Urzadzenie = 3;  // Inna drukarka
                XLWydruk.DrukujDoPliku = 1;
                XLWydruk.PlikDocelowy = "C:\\plik.pdf";

                int lReturn = cdn_api.cdn_api.XLWykonajPodanyWydruk(XLWydruk);
                
                MessageBox.Show("Wynik: " + lReturn.ToString(), "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Błąd wydruku: " + ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (cdn_api.cdn_api.XLLogout(SessionID) != 0)
                {
                    MessageBox.Show("Błąd przy wylogowaniu", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    MessageBox.Show("Wykonano");
                }
            }
        }

Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

ODPOWIEDZ