API XL Dokumenty ZK

Tematy związane z rozwojem CDN XL, opinie, pochwały, narzekania i inne elementy nie związane z konkretnymi modułami systemu

Moderator: mikey

LeszekU
Posty: 18
Rejestracja: 09 mar 2013, 05:19
Rola: Inny
Wersja: 10

API XL Dokumenty ZK

Post autor: LeszekU »

Witam

Popełniłem program, który poprzez API XL m.in. zakłada dokumenty ZK.
Jednak od jakiegoś czasu zaczął się dziwnie zachowywać.
Dokument jest niby zakładany, pojawia się w programie.
Jednak wywołanie XlZamknijDokumentZlc zwraca GIDNumer=0.
Dokument istnieje w programie aż do ponownego zalogowania się do XL.
Przy ponownym logowaniu znika.
Bardzo proszę o jakąś podpowiedź.

rafal
Posty: 48
Rejestracja: 02 paź 2009, 16:31
Rola: Inny

Re: API XL Dokumenty ZK

Post autor: rafal »

Cześć,
Przydał kod, który "popełniłeś", bez tego trudno coś wywnioskować.
Czy funkcja zwraca jakiś kod błędu?

LeszekU
Posty: 18
Rejestracja: 09 mar 2013, 05:19
Rola: Inny
Wersja: 10

Re: API XL Dokumenty ZK

Post autor: LeszekU »

Właśnie w tym problem, że nie zwraca, nawet ostrzeżenia.
Kod spreparuję i zaraz podeślę.
Ale kod działał.

LeszekU
Posty: 18
Rejestracja: 09 mar 2013, 05:19
Rola: Inny
Wersja: 10

Re: API XL Dokumenty ZK

Post autor: LeszekU »

To kluczowy fragment kodu:
logger.Debug("Dodawanie ZK dla zlecenia ");
try
{

// Dodanie ZK - nagłowek
XLDokumentZlcNagInfo_22 nag = new XLDokumentZlcNagInfo_22();
nag.Wersja = this.connect.Wersja;
nag.Typ = 4192;
nag.Tryb = 2;

nag.MaZTyp = 208;
nag.MaZFirma = 215553;
nag.MaZNumer = 2;
nag.MaZLp = 0;

nag.MaDTyp = 208;
nag.MaDFirma = 215553;
nag.MaDNumer = 1;
nag.MaDLp = 0;

nag.DataRealizacji = (new DateTime(2013, 7,31)).ToCDNDate();

int zlcId = 0;
logger.Trace("Tworzenie dokumentu ZK");
int res = cdn_api.cdn_api.XlNowyDokumentZlc(this.sesja, ref zlcId, nag);
if(res != 0)
{
string err = this.getBlad(FunctionsEnum.NowyDokumentZlc, 0, res);
if(!err.IsNullOrEmpty())
{
logger.Error("Błąd dodania ZK : " + err);
}
else
{
logger.Error("Błąd dodania ZK , result : " + res.ToString());
}
return;
}
if(nag.Flagi != 0)
{
string err = this.getBlad(FunctionsEnum.NowyDokumentZlc, nag.Flagi, 0);
if(!err.IsNullOrEmpty())
{
logger.Debug("Ostrzerzenie przy dodaniu ZK : " + err);
}
else
logger.Debug("Ostrzerzenie przy dodaniu ZK , flagi : " + nag.Flagi.ToString());
}

// Zamknięcie ZK
XLZamkniecieDokumentuZlcInfo_22 zam = new XLZamkniecieDokumentuZlcInfo_22();
zam.Wersja = this.connect.Wersja;
zam.TrybZamkniecia = 0;

logger.Trace("Zamknięcie ZK");
res = cdn_api.cdn_api.XlZamknijDokumentZlc(zlcId, zam);
if(res != 0)
{
string err = this.getBlad(FunctionsEnum.ZamknijDokumentZlc, 0, res);
if(!err.IsNullOrEmpty())
{
logger.Debug("Błąd zamknięcia ZK : " + err);
}
else
{
logger.Debug("Błąd zamknięcia ZK, result : " + res.ToString());
}
return;
}
if(zam.Flagi != 0)
{
string err = this.getBlad(FunctionsEnum.ZamknijDokumentZlc, zam.Flagi, 0);
if(!err.IsNullOrEmpty())
{
logger.Debug("Ostrzeżenie przy zamknięcia ZK : " + err);
}
else
logger.Debug("Ostrzeżenie przy zamknięcia ZK , flagi : " + zam.Flagi.ToString());
}

// Pobranie id'u
logger.Debug("ID " + zlcId.ToString() + " GIDNr " + zam.GIDNumer.ToString() + " nag GID" + nag.GIDNumer); // Własnie tu sprawdzam, że zam.GIDNumer=0 a nag.GIDNumer jest wypełniony poprawnie
zlcId = zam.GIDNumer;


if(zlcId > 0)
{
logger.Debug("Dodano ZK dla zlecenia " + zam.GIDNumer);
}
else
{
logger.Error("Błąd dodania ZK dla zlecenia - brak ID'u ");
}

}
catch(Exception ex)
{
logger.Debug("Błąd importu zlecenia kompletacji " );
logger.ErrorException("Błąd importu zlecenia kompletacji " , ex);
}
}

LeszekU
Posty: 18
Rejestracja: 09 mar 2013, 05:19
Rola: Inny
Wersja: 10

Re: API XL Dokumenty ZK

Post autor: LeszekU »

Dodam jeszcze, że odkryłem, ze problem jest w polu ZcN_Aktywny, które ma ustawiona wartość i oznacza, ze dokument jest cały czas otwarty.
Jeżeli 'ręcznie' ustawię 0 w tym polu to jest ok.
Czyli problem jest w procedurze zamykającej dokument, która go nie zamyka.

ODPOWIEDZ