Netsis Dokümantasyonu

Hatalar ve sorun giderme

NetOpenX hataları .NET'e System.Runtime.InteropServices.COMException olarak gelir. Netsis'in kendi mesajı ex.Message içindedir; ex.ErrorCode HRESULT değeridir.

Netsis hata kodu

Son Netsis hatasının sayısal kodu kernel.SonNetsisHata nesnesindedir. Mesaj metnini ayrıştırmak yerine bu kodu kullanın:

try
{
    fatura.OkuUst("GECERSIZNO", "GECERSIZCARI");
}
catch (COMException)
{
    var hata = kernel.SonNetsisHata;
    if (hata != null && hata.Kod == 401)
        Console.WriteLine("Fatura bulunamadı.");
    else
        throw;
}
Kod Anlamı (gözlenen)
401 Okunmak istenen kayıt bulunamadı (OkuUst ile olmayan belge). REST'te de giriş hatasında Hata Kodu : 401 döner.

Kod listesi Logo tarafından yayımlanmamıştır; Delphi örneği yalnızca 401'i gösterir. REST istemcisinde aynı bilgi JKernel.SonNetsisHata.Kod olarak geçer.

Teşhis edilebilir hata mesajı

Hatanın hangi belgede, hangi satırda çıktığını bilmeden çözmek zordur. NetsisQuick her işlemde bağlamı da mesaja ekler:

public static string HataOlustur(string islem, IDictionary<string, string> detay, Exception ex)
{
    var sb = new StringBuilder();
    sb.AppendLine($"{islem} işleminde hata oluştu");
    foreach (var d in detay.Where(d => !string.IsNullOrEmpty(d.Value)))
        sb.AppendLine($"{d.Key}: {d.Value}");
    sb.AppendLine($"Hata: {ex.Message}");
    if (ex is COMException com)
    {
        sb.AppendLine($"COM Hata Kodu: {com.ErrorCode}");
        sb.AppendLine($"COM Hata Kaynağı: {com.Source}");
    }
    return sb.ToString();
}

// kullanım
catch (Exception ex)
{
    throw new Exception(HataOlustur("SiparisOlustur", new Dictionary<string, string> {
        ["Veritabanı"] = db, ["Cari Kodu"] = cari, ["Excel satırı"] = index.ToString(),
        ["Stok Kodu"] = stokKodu }, ex));
}

Sık karşılaşılan durumlar

Belirti Olası neden Çözüm
Class not registered / REGDB_E_CLASSNOTREG (0x80040154) DLL register edilmemiş ya da süreç 64 bit RegControl.exe / regsvr32; projeyi x86 derleyin
Visual Studio COM listesinde NetOpenX yok veya yanlış sürüm Yanlış DLL register edilmiş Doğru sürümün DLL'ini yeniden register edin
Bağlantıda lisans hatası NetOpenX lisansı yok / indirilmemiş / tüm lisanslar kullanımda SSO'dan lisansı indirin; bırakılmayan oturumları kapatın (LogOff, FreeNetsisLibrary)
Bağlantıda kullanıcı/şifre hatası Netsis kullanıcısı ya da DB kullanıcısı yanlış yeniSirket parametre sırasını kontrol edin (Bağlantı)
Kayıtta "stok kodu bulunamadı" benzeri hata kalemYeni'ye geçersiz stok kodu ya da barkod verildi Önce barkodu stok koduna çevirin
Kayıtta risk hatası RiskKontrol = true ve cari risk limiti aşıldı Risk limitini kontrol edin ya da bayrağı kapatın
Kaydedilen numara beklenenden farklı Aynı numara başka kullanıcı tarafından alındı kayitYeni() sonrası Ust().FATIRS_NO'yu okuyun
NullReferenceException stok kartında TemelBilgi() / EkBilgi() çağrılmadı Cari ve stok
Uzun çalışan serviste bellek artışı, rastgele hatalar COM nesneleri bırakılmıyor finally içinde Marshal.ReleaseComObject ve FreeNetsisLibrary
Sürüm güncellemesi sonrası alan hataları DLL ile veritabanı sürümü farklı DLL'i aynı setten yeniden register edin, projeyi yeniden derleyin

Hata ayıklama ipuçları

  • İşlemi önce test şirketinde (canlının kopyası) çalıştırın.
  • Netsis ekranında aynı belgeyi elle girmeyi deneyin. Ekran hata veriyorsa sorun NetOpenX'te değil, veride ya da parametrededir.
  • Yazma sonrası sonucu SQL ile doğrulayın: TBLFATUIRS, TBLSTHAR, TBLCAHAR.
  • Toplu işlerde her belgeyi ayrı try/catch içine alın ve hangi satırın hata verdiğini kaydedin; bir belgedeki hata diğerlerini durdurmasın.