Jestem w trakcie pisania czegoś w deseń jak automatyczny wydruk dokumentu na wskazaną drukarkę poprzez modelowanie procesów. wygląda to następująco. Tworzę FS w XL i poprzez procesy trafia ona do XL Work tam oczekuje na wykonanie zadania. Proces ma zdefiniowaną akcję - uruchomienie programu zewnętrznego i w parametrach przekazuję poniższy kod :
Program zewnętrzny ma za zadanie zalogować się do XLa, wydrukować dokument na wskazaną drukarkę i zamknąć formatkę. Wszystko pięknie i ładnie ale nie wiem jak przekazać parametr @OBINumer do programu a w szczególności do parametru FiltrSQL ?
Poniżej kod programu i bardzo proszę o pomoc. Z góry dziękuje:
Witam Serdecznie i dziękuje za zaangażowanie ale powiem szczerze że nie wiem jak to zastosować w moim kodzie aby otrzymać konkretny GidNumer dla dokumentu FS. To co powyżej napisałem oparłem na wiedzy użytkowników forum i częściowej dokumentacji. We wszystkich przykładach jest podany na sztywno TrN_GIDNumer a w dokumentacji API parametr : FiltrSQL jest wymagany - nie potrafię tego swoim rozumem ogarnąć. Czy byłaby możliwość poprawienia (modyfikacji) mojego kodu ? Bardzo proszę o pomoc. Z góry dziękuje.
Witam Państwa Serdecznie - chciałbym odgrzebać swój temat ponieważ zagadnienie automatycznego wydruku z API i modelowaniem procesów wraca do mnie jak bumerang - sytuacja ma się następująco (może ktoś się spotkał z takim problemem).
Problem - zamykanie sesji
Opis parametrów dla ilości kopi wynosi = 1 w konfiguracji wydruku w ERP XL a pomimo tego drukują się dwie kopie i jest to chyba związane z problemem zamykania sesji w API . Poniżej kod aplikacji i komentarz logów przykładowy
SqlConnection conn01 = new SqlConnection("Data Source=172.16.64.2;Initial Catalog=CDNXL;User ID=sa;Password=xxxxxx;MultipleActiveResultSets=true");
string sql01 = "SELECT top 1 [GidWZ] FROM [CDNXL].[dbo].[WWZ] join cdn.tranag on GidWZ=trn_gidnumer where gidtypwz in (2033)
and TrN_NettoR = 0 and [WydrukWZ]='wydrukowane' and TrN_Url='wydruk_wz_wm' and trn_stan = '6' order by gidwz asc";
SqlCommand cmd01 = new SqlCommand(sql01, conn01);
conn01.Open();
SqlDataReader reader01 = cmd01.ExecuteReader();
if (reader01.Read())
{
@obinumer01 = reader01.GetValue(0).ToString();
XLLoginInfo_20220 LoginA = new XLLoginInfo_20220();
LoginA.Wersja = 20220;
LoginA.ProgramID = "Anulowany";
LoginA.Baza = "BAZAXL";
LoginA.OpeIdent = "XL03";
LoginA.PlikLog = @"g:\cdnxl.log";
LoginA.TrybWsadowy = 0;
LoginA.OpeHaslo = "xl03";
Int32 SesjaID = 0;
int LoginResult = cdn_api.cdn_api.XLLogin(LoginA, ref SesjaID);
cdn_api.XLPolaczenieInfo_20220 xlPołączenieInfo = new cdn_api.XLPolaczenieInfo_20220();
xlPołączenieInfo.Wersja = 20220;
cdn_api.cdn_api.XLPolaczenie(xlPołączenieInfo);
String connStr = xlPołączenieInfo.ConnectString;
cdn_api.XLWydrukInfo_20220 XLWydrukA = new cdn_api.XLWydrukInfo_20220();
XLWydrukA.Wersja = 20220;
XLWydrukA.Zrodlo = 0;
XLWydrukA.Wydruk = 81; //numer wydruku ustawić i poszukać
XLWydrukA.Format = 1;
XLWydrukA.FiltrSQL = "(TrN_GIDTyp = 2033 AND TrN_GIDNumer = " + @obinumer01 + ")";
XLWydrukA.Urzadzenie = 3;
XLWydruk.NazwaDrukarki = "RECEPCJA";
int lReturn = cdn_api.cdn_api.XLWykonajPodanyWydruk(XLWydrukA);
cdn_api.cdn_api.XLLogout(SesjaID);
//aktualizacja anulowanego i wydrukowanego dokumentu o wpis - 'anulowany'
SqlConnection connectionup016 = new SqlConnection("Data Source=172.16.64.2;Initial Catalog=CDNXL_AXPOL;User ID=sa;Password=z1x2cvb");
string update016 = "Update [CDNXL].[dbo].[WWZ] SET [WydrukWZ]='anulowany' where [GidWZ]=" + @obinumer01 + "";
SqlCommand commandup016 = new SqlCommand(update016, connectionup016);
connectionup016.Open();
commandup016.ExecuteNonQuery();
connectionup016.Close();
}
conn01.Close();
co jakiś czas w logach pojawia mi się wpis jak poniżej
1 I 27.06.2023 14:02:52 Wykryto aktywne sesje modułu X:Anulowany uruchomione na tym komputerze.|Czy chcesz usunąć informacje zapisane przez te sesje?
2 I 27.06.2023 14:02:52 Program wykrył, że poprzednia sesja programu X:Anulowany na którym pracował operator DRUKXL nie została poprawnie zakończona.|Informacja o tym fakcie została zapisana dla wiadomości Administratora.
W jaki sposób powinna zostać zamknięta sesja - według dokumentacji chyba mam ok w kodzie - bardzo proszę o pomoc w rozwiązaniu problemu z góry dziękuje.