Strona 1 z 1

Optima - dodawanie konta do planu kont

: 13 wrz 2018, 11:17
autor: argas
Cześć,

Kolejna zagwozdka. Klient zażyczył sobie automatu do dodawania kont imiennych do planu kont w Optima.
Kombinuję, a termin jest na wczoraj.
To mój testowy kod, próbuję coś takiego:

Kod: Zaznacz cały

public void DodajKontoDoPlanuKont()
        {
            var knf = (CDNKONFIGLib.IKonfiguracja)Sesja.Login.CreateObject("CDNKonfig.Konfiguracja");
            string val = knf.get_Value("BiezOkresObr");
            int OObID = (val.Length == 0) ? 0 : Convert.ToInt32(val);


            var Kontrahenci = (CDNBase.ICollection)(Sesja.CreateObject("CDN.Kontrahenci", null));
            var kontrahent = (CDNHeal.IKontrahent)Kontrahenci["Knt_Kod='ASTEST'"];

            var konta = (ICollection)Sesja.CreateObject("CDN.Konta", null);

            var testKonto = (CDNKH.IKonto)konta["Acc_Numer = '202-300-AUS0008' AND Acc_OObID=" + OObID];

            //var rodzicKonto = (CDNKH.IKonto)konta["Acc_Numer = '202-300' AND Acc_OObID=" + OObID];
            var rodzicKonto = (CDNKH.IKonto)konta["Acc_Numer = '202-300'"];
            var czlon1konto = rodzicKonto.NumerIdx.Split('.')[0];
            var czlon2konto = rodzicKonto.NumerIdx.Split('.')[1];
            

            var konto = (CDNKH.IKonto)konta.AddNew(null);
	    konto.Poziom = 3;
            konto.Analityka = 1;
            konto.SlownikId = kontrahent.GIDNumer;
            konto.ParId = rodzicKonto.ID;
            konto.OkresId = rodzicKonto.OkresId;
            konto.Numer = string.Format("{0}-{1}", rodzicKonto.Numer, kontrahent.Akronim);
            konto.NumerIdx = string.Format("{0}.{1}.{2}", czlon1konto, czlon2konto, kontrahent.Akronim);
            konto.Nazwa = string.Format("{0}-{1}", rodzicKonto.Numer, kontrahent.Akronim);
            konto.Nazwa2 = kontrahent.Nazwa1;

            Sesja.Save();            
        }
Cały czas wywala mi błąd o zduplikowanym numerze konta: {"Nie można wstawić wiersza zduplikowanego klucza w obiekcie CDN.Konta o unikatowym indeksie AccNumer. Wartość zduplikowanego klucza to (1, 202.300)."} Jakieś wskazówki?

Re: Optima - dodawanie konta do planu kont

: 14 wrz 2018, 11:59
autor: commits
Spróbuj tak:

Kod: Zaznacz cały

	var konto = (CDNKH.IKonto)konta.AddNew(null);
            konto.SlownikId = kontrahent.GIDNumer;
            konto.ParId = rodzicKonto.ID;
            konto.OkresId = rodzicKonto.OkresId;
            konto.Numer = kontrahent.Akronim;
            konto.NumerIdx = kontrahent.Akronim;
            konto.Nazwa = string.Format("{0}-{1}", rodzicKonto.Numer, kontrahent.Akronim);
            konto.Nazwa2 = kontrahent.Nazwa1;

Re: Optima - dodawanie konta do planu kont

: 19 wrz 2018, 09:54
autor: argas
Brakowało jednego parametru:

Kod: Zaznacz cały

konto.SlownikTyp = 1;
Teraz działa.