Z tego co wywnioskowałem usuwanie można zrobić przy pomocy XLZamknijDokument i żeby użyć tej procedury nie mogą być żadne pozycje w dokumencie.
Pozycje dokumentu można usunąć przy pomocy XLUsunPozycje i tu pojawia się problem. Funkcja zwraca mi błąd -1 czyli API nie zostało aktywowane bądź błąd wersji i nie wiem w czym jest błąd.
Id pozycji biorę z TreLp. Dokument otwiera sie normalnie, zmienne z bazy dobrze się zaczytują.
Poniżej mój kod:
Kod: Zaznacz cały
public static int Zaloguj()
{
int sesjaId = -1;
XLLoginInfo_20220 login = new XLLoginInfo_20220
{
Wersja = 20220,
ProgramID = "UsuwanieDokumentu",
Baza = Connection.ConnectionDatabase,
TrybWsadowy = 1
};
cdn_api.cdn_api.XLLogin(login, ref sesjaId);
return sesjaId;
}
public static void Wyloguj(int SesjaID)
{
if (SesjaID != -1)
{
if (cdn_api.cdn_api.XLLogout(SesjaID) != 0)
{
MessageBox.Show("Błąd przy wylogowaniu", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
public static int OtworzDokument(int sesjaId, int gidTyp, int gidNumer, ref int idDok)
{
XLOtwarcieNagInfo_20220 naglowek = new XLOtwarcieNagInfo_20220()
{
GIDTyp = gidTyp,
GIDNumer = gidNumer,
Tryb = 2,
Wersja = 20220,
};
return cdn_api.cdn_api.XLOtworzDokument(sesjaId, ref idDok, naglowek);
}
public static int UsunElement(int documentId, int pozId)
{
XLUsunElemInfo_20220 elem = new XLUsunElemInfo_20220()
{
Wersja = 20220,
Pozycja = pozId
};
return cdn_api.cdn_api.XLUsunPozycje(documentId, elem);
}
public static int UsunDokument(int idDok)
{
XLZamkniecieDokumentuInfo_20220 closeInfo = new XLZamkniecieDokumentuInfo_20220()
{
Wersja = 20220,
Tryb = -1
};
return cdn_api.cdn_api.XLZamknijDokument(id, closeInfo);
}
--użycie funkcji
int sesja = ERPXL.Zaloguj();
OtworzDokument(sesja, dokument.Trn_GIDTyp, dokument.Trn_GIDNumer, ref idDok);
foreach (int pozycja in dokument.WZPozycje)
{
UsunElement(idDok, pozycja);
}
UsunDokument(idDok);
Wyloguj(sesja);