API

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

Moderator: mikey

Lilpri
Posty: 127
Rejestracja: 13 maja 2019, 11:04
Rola: Administrator CDN XL

API

Post autor: Lilpri »

Hej,

Muszę zmodyfikować kiedyś napisaną apkę do obsługi API i niestety podczas wywoływania funkcji:

Kod: Zaznacz cały

cdn_api.cdn_api.XLDodajPozycjeZam(_DokumentID, _xlDokumentZamElem);
Wywala mi

Fatal error. 0xC0000005
at cdn_api.cdn_api.XLDodajPozycjeZam(Int32, cdn_api.XLDokumentZamElemInfo_20211)
at ConsoleApp5.Program.Main(System.String[])

Po wejściu na dodawanie pozycji wywala się aplikacja z błędem Runtime error i powyższym opisem w logach...


Nie jest to jakaś bardzo skomplikowana aplikacja. Czyżby przez zmiany z debugiem od wersji 2021 zaczął występować ten problem?
Poniżej cały kod:

Kod: Zaznacz cały

 if (cdn_api.cdn_api.XLLogin(_xlLoginInfo, ref _xlSejsaID) == 0)
            {
                Console.Write("Zalogowano");
                
                
                SqlConnection connection1;
                using (connection1 =
                           new SqlConnection(
                               ""))
                {
                    connection1.Open();
                    SqlDataReader reader = new SqlCommand(
                        "select top 5 zan_gidnumer, ZaN_KntNumer from ERPXL_TEST.CDN.ZamNag where zan_stan in (3,4) and ZaN_ZamSeria in ('sk', 'ex', 'wd')",
                        connection1).ExecuteReader();
                    Console.WriteLine("Start dodawania pozycji");
                    while (reader.Read())
                    {
                        Console.WriteLine("Nr zamówienia: "+ reader.GetInt32("zan_gidnumer"));
                        int _DokumentID = 0;
                        int _DokumentID2 = 0;
                        XLDokumentZamNagInfo_20211 _DokumentZamNag = new XLDokumentZamNagInfo_20211();
                        _DokumentZamNag.Wersja = 20202;
                        _DokumentZamNag.Typ = 5;
                        _DokumentZamNag.KntTyp = 32;
                        _DokumentZamNag.ZamSeria = "P";
                        _DokumentZamNag.KntNumer = reader.GetInt32("ZaN_KntNumer");
                        Console.WriteLine("Nr kontrahenta: "+ reader.GetInt32("zan_kntnumer"));
                       _DokumentZamNag.Opis = ""; //Trzeba do query dodać pobieranie opisu ze źródłowego ZS
                        _DokumentZamNag.RealWCalosci = 1;
                        Console.WriteLine(_DokumentZamNag);
                        Console.WriteLine("Sesja: " + _xlSejsaID);
                        Console.WriteLine("DokumentID: " + _DokumentID);
                        Console.WriteLine("Zamnag: "+ _DokumentZamNag);
                        int num = cdn_api.cdn_api.XLNowyDokumentZam(_xlSejsaID, ref _DokumentID, _DokumentZamNag);
                        Console.WriteLine(_DokumentID);
                        //Poniżej dodać wywołanie z API MMW
                    
                        SqlConnection connection2;
                        using (connection2 =
                                   new SqlConnection(
                                       ""))
                        {
                            connection2.Open();
                            SqlDataReader reader2 =
                                new SqlCommand(
                                    "select top 300 zae_twrkod, sum(zae_ilosc) ilosc, isnull(sum(TWz_IlSpr),0) stan from ERPXL_TEST.CDN.zamnag join ERPXL_TEST.cdn.zamelem on ZaE_GIDNumer=zan_gidnumer left join ERPXL_TEST.CDN.TwrZasoby on ZaE_TwrNumer=TWz_TwrNumer and twz_magnumer = 9 where zan_stan in (3,4) and ZaN_ZamSeria in ('sk', 'ex', 'wd') and zae_gidnumer = '" +
                                                               reader.GetInt32("zan_gidnumer") + "' group by zae_twrkod ", connection2).ExecuteReader();
                            while (reader2.Read())
                            {
                                Console.WriteLine(reader2.GetString("zae_twrkod"));
                                Console.WriteLine(reader2.GetDecimal("ilosc"));
                                Console.WriteLine(reader2.GetDecimal("stan"));
                                XLDokumentZamElemInfo_20211 _xlDokumentZamElem = new XLDokumentZamElemInfo_20211();
                                _xlDokumentZamElem.Wersja = 20202;
                                _xlDokumentZamElem.Ilosc = reader2.GetDecimal("ilosc").ToString("0.0000"); //trzeba będzie liczyć ile na ZZ wpadnie sztuk
                                _xlDokumentZamElem.Towar = reader2.GetString("zae_twrkod");
                              
                                cdn_api.cdn_api.XLDodajPozycjeZam(_DokumentID, _xlDokumentZamElem);

                           
                            }
                            Console.WriteLine("KONIEC DOKUMENTU!");
                            
                            reader2.Close();
                            connection2.Close();
                            Console.WriteLine("Jestem po zamknieciu połączeń");
                        }
                        Console.WriteLine("Jestem przed zamknieciem");

                        XLZamkniecieDokumentuZamInfo_20211 _xlZamknijDokumentZam =
                            new XLZamkniecieDokumentuZamInfo_20211();
                        _xlZamknijDokumentZam.Wersja = 20202;
                        _xlZamknijDokumentZam.TrybZamkniecia = 0;
                        if (_xlZamknijDokumentZam != null)
                            num = cdn_api.cdn_api.XLZamknijDokumentZam(_DokumentID, _xlZamknijDokumentZam);
                  
                        if (num == 0)
                        {
                            Console.WriteLine("Zamknięto");
                            //dodawanie atrybutów filtrujących zamówienia
                        }
                      
                       Console.WriteLine("Jestem już po");
                    }
                    reader.Close();
                    connection1.Close();
                }
            }

            cdn_api.cdn_api.XLLogout(_xlSejsaID);

Lilpri
Posty: 127
Rejestracja: 13 maja 2019, 11:04
Rola: Administrator CDN XL

Re: API

Post autor: Lilpri »

Rozwiązanie było dosyć proste...
DMS Desktop wymagał dopisania ścieżki do cdnapi w path do folderu z DMS'em. I niestety apka brała sobie pliczek nie z tego miejsca co powinna...

ODPOWIEDZ