Forum Użytkownikow Subiekt GT

NEXO => Subiekt NEXO => Wątek zaczęty przez: keczerad w Październik 06, 2014, 23:19:44

Tytuł: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Październik 06, 2014, 23:19:44
Wiem ktoś może dlaczego wywołanie takiego kodu:


foreach (PozycjaCennika poz in jestTowar.Dane.PozycjeCennika)
                            {
                               
                               
                                 switch (poz.Cennik.PoziomCen.Nazwa)
                                {
                                 case "Detaliczny":
                                    poz.CenaNetto = Convert.ToDecimal(dr["Cena netto"].ToString());
                                     break;
                                 case "Hurtowy":
                                     poz.CenaNetto = Convert.ToDecimal(dr["Cena hurt"].ToString());
                                      break;
                                }

                               
                            }


 kończy się błędem "Modyfikacja pola CenaNetto encji PozycjaCennika nie powiodła się, ponieważ albo encja nie została przyłączona do obiektu kontrolującego modyfikację danych (biznesowego), albo ten, do którego jest przyłączona nie pozwala na zmianę tego konkretnego pola."


Drugie pytanko to jak dodać KodKreskowy do towaru bo nie mam pojecia jak to zrobić. W pomocy do programu zdecydowanie brakuje przykładów jak cos zrobić, a sam plik pomocy przypomna raczej wygenerowany automatem chm na podstawie obiektów w kodzie plus tzy przyklady na krzyż. Nie mówiąc o tym ze same interfejsy mnie kończą w domyślaniu co i jak jest zrobione.

Dlatego że w necie nie ma wogołe przykładu kodów pozwolę sobie dodać swoje wypociny.

Jak dodać producenta i dostawce do produktu:

jestTowar = menedzerAsortymentow.Znajdz(dr["Symbol"].ToString());

                        if (jestTowar != null)
                        {                         

                            if (dr["Producent"].ToString() != String.Empty)
                            {                             
                               
                                podmioty = polaczenie.PodajObiektTypu<IPodmioty>();
                                string producentS =  dr["Producent"].ToString();
                                var klient = podmioty.Dane.Wszystkie().Where(p => p.NazwaSkrocona == producentS).FirstOrDefault();

                                if (klient == null)
                                {
                                    InsERT.Moria.Klienci.Podmioty podProducent = polaczenie.PodajObiektTypu<Podmioty>();
                                    IPodmiot ipod = podProducent.UtworzFirme();
                                    ipod.NadajNumer();
                                    ipod.Dane.NazwaSkrocona = dr["Producent"].ToString();
                                    ipod.Zapisz();
                                    var klientN = podmioty.Dane.Wszystkie().Where(p => p.NazwaSkrocona == producentS).FirstOrDefault();

                                    if (klientN != null)
                                        klient = klientN;
                                }                               

                                if(jestTowar.Dane.Dostawcy().Where( d => d.Id == klient.Id).Count() == 0)
                                    jestTowar.Dostawcy.Dodaj(klient);
                                jestTowar.Producent.Ustaw(klient);
                               
                            }
                            if (dr["Dostawca"].ToString() != String.Empty)
                            {
                                podmioty = polaczenie.PodajObiektTypu<IPodmioty>();
                                string dostawcaS = dr["Dostawca"].ToString();
                                var dostawca = podmioty.Dane.Wszystkie().Where(p => p.NazwaSkrocona == dostawcaS).FirstOrDefault();

                                if (dostawca == null)
                                {
                                    InsERT.Moria.Klienci.Podmioty podProducent = polaczenie.PodajObiektTypu<Podmioty>();
                                    IPodmiot ipod = podProducent.UtworzFirme();
                                    ipod.NadajNumer();
                                    ipod.Dane.NazwaSkrocona = dr["Dostawca"].ToString();
                                    ipod.Zapisz();
                                    var dostawcaN = podmioty.Dane.Wszystkie().Where(p => p.NazwaSkrocona == dostawcaS).FirstOrDefault();

                                    if (dostawcaN != null)
                                        dostawca = dostawcaN;
                                }
                                var ileD = jestTowar.Dane.Dostawcy().Where(d => d.Podmiot.NazwaSkrocona == dostawcaS).Count();

                                if (jestTowar.Dane.Dostawcy().Where(d => d.Podmiot.NazwaSkrocona == dostawcaS).Count() == 0)
                                    jestTowar.Dostawcy.Dodaj(dostawca);

                                foreach (DaneAsortymentuDlaPodmiotu x in jestTowar.Dane.Dostawcy())
                                {
                                    if (x.Podmiot.NazwaSkrocona == dostawcaS && dr["Symbol_dostawca"].ToString() != String.Empty)
                                    {
                                        x.Symbol = dr["Symbol_dostawca"].ToString();
                                        x.SredniCzasDostawy = 30;
                                    }
                                }
                            }
}


Jak dodać cechę:

string nazwa = "Tutaj nazwa cechy";
InsERT.Moria.Asortymenty.ICechaAsortymentu cechaA;
InsERT.Moria.Asortymenty.ICechyAsortymentu cechyA = polaczenie.PodajObiektTypu<InsERT.Moria.Asortymenty.ICechyAsortymentu>();

cechaA  = cechyA.Znajdz(nazwa);

if(cechaA == null)
{
cechaA = cechyA.Utworz();
cechaA.Dane.Nazwa = nazwa_cala;               
                           
   if (!cechaA.Zapisz())
  {
       ///obsluga błędu
  }
}


Jak dodać cechę do produktu:

//obiekt jestTowar jak z kodu powyzej
string cecha = "Nazwa cechy";
InsERT.Moria.Asortymenty.ICechyAsortymentu cechy = polaczenie.PodajObiektTypu<InsERT.Moria.Asortymenty.ICechyAsortymentu>();
InsERT.Moria.ModelDanych.CechaAsortymentu cecha = cechy.Dane.Wszystkie().Where(a => a.Nazwa == cecha).First();

if(jestTowar.Dane.Cechy.Where(b=>b.Id == cecha.Id).Count() ==0)
             jestTowar.Dane.Cechy.Add(cecha);


Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Październik 07, 2014, 10:00:16
"Modyfikacja pola CenaNetto encji PozycjaCennika nie powiodła się, ponieważ albo encja nie została przyłączona do obiektu kontrolującego modyfikację danych (biznesowego), albo ten, do którego jest przyłączona nie pozwala na zmianę tego konkretnego pola."
Bez kontroli obiektu biznesowego nie można modyfikować danych, a ceny towaru (czyli pozycje cenników) mają swoje obiekty biznesowe. Żeby poprawić ceny, trzeba sobie obiekty biznesowe pozycji cenników osobno wczytać i osobno zapisać - osobno od towaru. Dodatkowo trzeba pamiętać, że w tej sytuacji ceny widoczne od strony towaru nie zmienią się po zapisaniu pozycji, bo jest to inny obiekt biznesowy. Jeśli chcemy zobaczyć tę zmianę w towarze, to konieczne jest ponowne wczytanie danych towaru. Natomiast od strony obiektu biznesowego pozycji cennika dostępna jest oczywiście zmodyfikowana wersja pozycji cennika.  :)
IPozycjeCennika pozycjeCennika = polaczenie.PodajObiektTypu<IPozycjeCennika>();
foreach (PozycjaCennika poz in jestTowar.Dane.PozycjeCennika)
{
    IPozycjaCennika jestPozycja = pozycjeCennika.Znajdz(poz);
    switch (jestPozycja.Dane.Cennik.PoziomCen.Nazwa)
    {
        case "Detaliczny":
            jestPozycja.Dane.CenaNetto = Convert.ToDecimal(dr["Cena netto"].ToString());
            break;
        case "Hurtowy":
            jestPozycja.Dane.CenaNetto = Convert.ToDecimal(dr["Cena hurt"].ToString());
            break;
    }
    if (!jestPozycja.Zapisz())
    { /* obsługa błędów */ }
}

Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Październik 07, 2014, 10:42:25
Drugie pytanko to jak dodać KodKreskowy do towaru
Kod kreskowy jest przypisany do jednostki miary towaru. W towarze jest jednostka podstawowa i są dodatkowe. Tak samo z kodami - każda jednostka miary danego towaru ma kolekcję kodów, z których jeden jest podstawowy. Możliwości jest więc trochę...  ;)
Kod dla podstawowych przypadków:
var kod = new KodKreskowy() { Kod = "5901812785312" };
//dodanie kodu kreskowego do podstawowej jednostki miary towaru
jestTowar.Dane.PodstawowaJednostkaMiaryAsortymentu.KodyKreskowe.Add(kod);
//ustawienie dodanego kodu jako podstawowego dla tej jednostki
jestTowar.Dane.PodstawowaJednostkaMiaryAsortymentu.PodstawowyKodKreskowy = kod;

kod = new KodKreskowy() { Kod = "5901812785305" };
//dodanie dodatkowego kodu kreskowego do podstawowej jednostki miary towaru
jestTowar.Dane.PodstawowaJednostkaMiaryAsortymentu.KodyKreskowe.Add(kod);

var jmBOX = jestTowar.Dane.JednostkiMiar.Where(j => j.JednostkaMiary.Symbol == "BOX").FirstOrDefault();
if (jmBOX != null)
{
    //dodanie kodu kreskowego do dodatkowej jednostki miary towaru
    var kodBOX = new KodKreskowy() { Kod = "5901812785336" };
    jmBOX.KodyKreskowe.Add(kodBOX);
    //ustawienie tego kodu jako podstawowego dla tej jednostki
    jmBOX.PodstawowyKodKreskowy = kodBOX;
}
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Październik 08, 2014, 13:27:16
Dziekuję ślicznie. Wiesz może jak dobrać się znaczy pobrać nazwy pol wlasnych artykułów i do ich widoczności przez API ?

(https://dl.dropboxusercontent.com/u/62437019/pola_wlasne_nexo.jpg)
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Październik 09, 2014, 14:51:34
Wiesz może jak dobrać się znaczy pobrać nazwy pol wlasnych artykułów i do ich widoczności przez API ?
Czy o to chodzi?
IPolaWlasnePodstawowe mgrPolaWlasne = polaczenie.PodajObiektTypu<IPolaWlasnePodstawowe>();
IEnumerable<IProstePoleWlasne> polaWlasne = mgrPolaWlasne.PobierzProstePolaWlasne<Podmiot>();
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Październik 10, 2014, 14:43:50
A jak ustawić dostawcę podstawowego ? Nie mogę znaleźć takiej zależności do producenta jest a do dostawcy nie widze takiej prostej zależności.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Październik 10, 2014, 14:53:07
Wiesz może jak dobrać się znaczy pobrać nazwy pol wlasnych artykułów i do ich widoczności przez API ?
Czy o to chodzi?
IPolaWlasnePodstawowe mgrPolaWlasne = polaczenie.PodajObiektTypu<IPolaWlasnePodstawowe>();
IEnumerable<IProstePoleWlasne> polaWlasne = mgrPolaWlasne.PobierzProstePolaWlasne<Podmiot>();

Bardziej chodziło o to, ale dziękuje.

IPolaWlasnePodstawowe mgrPolaWlasne = polaczenie.PodajObiektTypu<IPolaWlasnePodstawowe>();
IEnumerable<IProstePoleWlasne> polaWlasne = mgrPolaWlasne.PobierzProstePolaWlasne<Asortyment>();
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Październik 10, 2014, 15:01:26
Wiesz może jak dobrać się znaczy pobrać nazwy pol wlasnych artykułów i do ich widoczności przez API ?
Czy o to chodzi?
IPolaWlasnePodstawowe mgrPolaWlasne = polaczenie.PodajObiektTypu<IPolaWlasnePodstawowe>();
IEnumerable<IProstePoleWlasne> polaWlasne = mgrPolaWlasne.PobierzProstePolaWlasne<Podmiot>();

Bardziej chodziło o to, ale dziękuje.

IPolaWlasnePodstawowe mgrPolaWlasne = polaczenie.PodajObiektTypu<IPolaWlasnePodstawowe>();
IEnumerable<IProstePoleWlasne> polaWlasne = mgrPolaWlasne.PobierzProstePolaWlasne<Asortyment>();
:D Sorry, chyba się nie wczytałem. Sięgnąłem po prostu po kod, który miałem pod ręką. :)
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Październik 10, 2014, 15:04:45
A jak ustawić dostawcę podstawowego ? Nie mogę znaleźć takiej zależności do producenta jest a do dostawcy nie widze takiej prostej zależności.

Najprościej przez property Dostawcy, które zwraca dodaną asocjację. Od razu można ją wykorzystać do ustawienia pozostałych parametrów powiązania albo też ustawienia dodanego dostawcy jako podstawowego. Pierwszy dodawany będzie podstawowy z automatu, ale dla kolejnego, jeśli ma się stać podstawowy, trzeba to ustawić.
IPodmioty podmioty = polaczenie.PodajObiektTypu<IPodmioty>();
var podmiot = podmioty.Dane.Wszystkie().Where(p => p.Sygnatura.PelnaSygnatura == "ABC").FirstOrDefault();
if (podmiot != null)
{
    var dostawca = jestTowar.Dostawcy.Dodaj(podmiot);
    jestTowar.Dostawcy.Podstawowy = dostawca;
}
Edit:
Oczywiście jestTowar = menedzerAsortymentow.Znajdz(dr["Symbol"].ToString()); :)
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Październik 21, 2014, 11:10:16
Wiesz może jak sobie poradzić z takim fantem, że po dodaniu jakiegokolwiek pola dodatkowego z poziomu interfejsu Nexo, przestaje działać nawet logowanie przez API ponieważ Subiekt buduje nowe biblioteki i jest lipa do kwadratu. Probówałem nawet te nowe bibliteki dołączać do projektu ale to też nie działa.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Październik 21, 2014, 12:31:57
Po dodaniu pól własnych nexo PRO buduje od nowa bibliotekę InsERT.Moria.ModelDanych.dll i tę nową bibliotekę trzeba używać również przy łączeniu Sferą. Jeśli rozwiązanie własne jest wdrożone przez Program serwisowy to się tego nie zauważa. Natomiast jeśli rozwiązanie testujemy, bądź mamy wdrożone dla jednej wersji, z wykorzystaniem plików z SDK to trzeba to jakoś rozwiązać. To już zależy od stosowanej konfiguracji. Ważne żeby użyć tę odpowiednią DLL-kę. Pytanie - skąd ją uzyskać. W katalogu
%LOCALAPPDATA%\InsERT\Deployments\nexo
Znajdują się katalogi robocze dla baz danych nexo.
W bazie danych nexo, w tabeli InsLauncher.InstalledProducts znajdują się informacje o zainstalowanym produkcie, m.in. DeploymentName – to jest nazwa lokalnego katalogu w podanej wcześniej lokalizacji.
W tym katalogu znajduje się z kolei folder Binaries zawierający pliki (hardlinki) odpowiedniej wersji nexo.
Przykład:
C:\Users\fosuk\AppData\Local\InsERT\Deployments\Nexo\Test_wer3062b1b55c9866409591053b\Binaries
W tym folderze jest też InsERT.Moria.ModelDanych.dll i powinien mieć świeżą datę modyfikacji.
Do tego pliku trzeba się zareferencjonować albo skopiować go sobie - no to już właśnie zależy od konfiguracji.
Ja, gdy testuję rozwiązania, w folderze z SDK kopiuję sobie folder Bin na drugi i do tego drugiego wrzucam ten ModelDanych z Binaries dla danej bazy i VisualStudio ustawiam ReferencePath na ten folder. Nie wiem w jakiej konfiguracji uruchamiasz swoje rozwiązanie, więc ciężko mi coś więcej poradzić.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Listopad 03, 2014, 21:28:39
Wiesz może jak dodać Osobę i tą osobę przypisać podmiotowi ?
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Listopad 03, 2014, 22:59:50
Nie rozumiem o co dokładnie chodzi. Czy chodzi o dodanie Podmiotu typu Osoba?
Jeśli tak, to:using (IPodmiot osoba = managerPodmiotow.UtworzOsobe())
{
    osoba.Dane.Osoba.Imie = "Karin";
    osoba.Dane.Osoba.Nazwisko = "Michałowska";
    osoba.Zapisz();
}
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fiber w Grudzień 04, 2014, 09:51:25
http://www.forumsubiekta.pl/subiekt/exel2sgt/msg737/#msg737
https://www.youtube.com/user/keczerad

Wynika z tego, że takie pytania zadaje właściciel e-mo.pl, który pewnie robi teraz apkę/i pod nexo. Tylko, że jak na kogoś, kto bierze kasę za swoje programy, to poziom programistyczny marny, bo problemy podstawowe.
A tutaj jeszcze dostaje darmową pomoc...
Czasem kupię jakiś dodatek, bo nie mam czasu (albo chęci) pisać samemu, a są gotowe i dobre rozwiązania. Z programów firmy e-mo.pl akurat nie korzystałem, ale to chyba dobrze, bo obraz już mam.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Grudzień 04, 2014, 10:18:54
Co to znaczy "poziom programistyczny"? Pytania dotyczą API nexo, a tego można nie wiedzieć - nie uczą na studiach. Co do darmowej pomocy, to korzystają na tym przecież wszyscy czytający forum. Dodatkowo, rozpoczął ten wątek pytaniem, ale jednocześnie podając własne rozwiązania-przykłady.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 02, 2015, 13:38:20
http://www.forumsubiekta.pl/subiekt/exel2sgt/msg737/#msg737
https://www.youtube.com/user/keczerad

Wynika z tego, że takie pytania zadaje właściciel e-mo.pl, który pewnie robi teraz apkę/i pod nexo. Tylko, że jak na kogoś, kto bierze kasę za swoje programy, to poziom programistyczny marny, bo problemy podstawowe.
A tutaj jeszcze dostaje darmową pomoc...
Czasem kupię jakiś dodatek, bo nie mam czasu (albo chęci) pisać samemu, a są gotowe i dobre rozwiązania. Z programów firmy e-mo.pl akurat nie korzystałem, ale to chyba dobrze, bo obraz już mam.

Zatrudniam ludzi, płace podatki za internet też uiszczam opłatę więc pozwolisz że będa mógł pytać na forum, jeżeli nie stanowi to problemy dla twojej osoby i nie uszczupli twojego "profesjonalizmu"  to proszę prześlij mi swoją zgodę na maila którego znasz. Z góry dziękuje ;)

PS. Kto pyta nie błądzi.


Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 03, 2015, 14:53:29
Nie rozumiem o co dokładnie chodzi. Czy chodzi o dodanie Podmiotu typu Osoba?
Jeśli tak, to:using (IPodmiot osoba = managerPodmiotow.UtworzOsobe())
{
    osoba.Dane.Osoba.Imie = "Karin";
    osoba.Dane.Osoba.Nazwisko = "Michałowska";
    osoba.Zapisz();
}

Faktycznie chyba przydało by mi się jakieś szkolenie z Nexo od strony interfejsu użytkownika bo to trochę pomoga o to chodziło a dokładniej o to:
//kontrahent
                                        podmioty = polaczenie.PodajObiektTypu<Podmioty>();
                                        IPodmiot firma;
                                        if(zDok.F_NIP != string.Empty)
                                        {

                                            firma = podmioty.UtworzFirme();
                                            firma.NadajNumer();   
                                            IPodmiot iOsoba = podmioty.UtworzOsobe();
                                            iOsoba.NadajNumer();
                                            iOsoba.Dane.Telefon = zDok.F_Telefon;
                                            iOsoba.Dane.Osoba.Imie = zDok.Uzytkownik.Imie;
                                            iOsoba.Dane.Osoba.Nazwisko = zDok.Uzytkownik.Nazwisko;
                                            iOsoba.Zapisz();
                                            Podmiot osoba = podmioty.Dane.Wszystkie().Where(p => p.Sygnatura.PelnaSygnatura == iOsoba.Dane.Sygnatura.PelnaSygnatura).FirstOrDefault();
                                            firma.Przedstawiciele.Dodaj(osoba);
                                            firma.Dane.NazwaSkrocona = zDok.F_Nazwa;
                                            firma.Dane.NIP = zDok.F_NIP;
                                            firma.Dane.Telefon = zDok.F_Telefon;
                                           
                                        }
                                        else
                                        {
                                           
                                             firma = podmioty.UtworzOsobe();
                                             firma.Dane.Telefon = zDok.F_Telefon;
                                             firma.Dane.Osoba.Imie = zDok.Uzytkownik.Imie;
                                             firma.Dane.Osoba.Nazwisko = zDok.Uzytkownik.Nazwisko;
                                                                                         
                                        }
                                       
                                        firma.Zapisz();


Adresy dodajemy tak
adres główny:

PodmiotZbazy = podmioty.Dane.Wszystkie().Where(p => p.Sygnatura.PelnaSygnatura == firma.Dane.Sygnatura.PelnaSygnatura).FirstOrDefault();

emoToolKit.ERP.adres zAdr1 = (emoToolKit.ERP.adres)zDok.Adresy[1];                                           
                                            AdresPodmiotu adrGlowny = firma.DodajAdres();
                                            adrGlowny.Nazwa = zAdr1.Nazwa;
                                            adrGlowny.Podmiot = PodmiotZbazy;
                                            if (zAdr1.Lokal == String.Empty && zAdr1.Numer != String.Empty)
                                                adrGlowny.Linia1 = String.Format("{0} {1}", zAdr1.Ulica, zAdr1.Numer);
                                            else if (zAdr1.Lokal != String.Empty && zAdr1.Numer != String.Empty)
                                                adrGlowny.Linia1 = String.Format("{0} {1}/{2}", zAdr1.Ulica, zAdr1.Numer, zAdr1.Lokal);
                                            else
                                                adrGlowny.Linia1 = zAdr1.Ulica;
                                            adrGlowny.Linia2 = string.Format("{0} {1}", zAdr1.Kod, zAdr1.Miasto);
                                            adrGlowny.PodmiotAdresuPodstawowego = PodmiotZbazy;
                                            firma.Dane.AdresPodstawowy = adrGlowny;
                                            firma.Zapisz();

Adres dostawy:

ITypyAdresu iTAdr = polaczenie.PodajObiektTypu<ITypyAdresu>();
                                            AdresPodmiotu adrDostawy = firma.DodajAdres();
                                            emoToolKit.ERP.adres zAdr2 = (emoToolKit.ERP.adres)zDok.Adresy[2];
                                            adrDostawy.Nazwa = zAdr2.Nazwa;
                                            adrDostawy.Podmiot = PodmiotZbazy;
                                            if (zAdr2.Lokal == String.Empty && zAdr2.Numer != String.Empty)
                                                adrDostawy.Linia1 = String.Format("{0} {1}", zAdr2.Ulica, zAdr2.Numer);
                                            else if (zAdr2.Lokal != String.Empty && zAdr2.Numer != String.Empty)
                                                adrDostawy.Linia1 = String.Format("{0} {1}/{2}", zAdr2.Ulica, zAdr2.Numer, zAdr2.Lokal);
                                            else
                                                adrDostawy.Linia1 = zAdr2.Ulica;
                                            adrDostawy.Linia2 = string.Format("{0} {1}", zAdr2.Kod, zAdr2.Miasto);
                                            adrDostawy.TypAdresu = iTAdr.DaneDomyslne.DoWysylki;
                                            firma.Dane.DomyslnyAdresDostaw = adrDostawy;
                                            firma.Zapisz();

Natomiast nie wiem dalczego nie chce mi działać Kontakt czyli dodawanie e-maila czy telefonu.

IRodzajeKontaktu irKontaktu = polaczenie.PodajObiektTypu<IRodzajeKontaktu>();
                                           
                                            Kontakt _kon = new Kontakt();
                                            _kon.Wartosc = zDok.F_Mail;
                                            _kon.Podstawowy = true;
                                            _kon.Podmiot = NowyPodmiot;
                                            _kon.Rodzaj = irKontaktu.DaneDomyslne.Email;
                                           
                                            firma.Dane.Kontakty.Add(_kon);  // tutaj wystakuje wyjatek ? Czemu nie wiem.

Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: Dr_Q w Styczeń 03, 2015, 23:02:46
Jaki błąd dostajesz?

U mnie działa dodawanie kontaktów w ten sposób:
Kontakt kontakt = new Kontakt();
      podmiotBO.Dane.Kontakty.Add(kontakt);
      kontakt.Rodzaj = rodzajeKontaktuDD.Telefon;
      kontakt.Wartosc = dr["mobile"].ToString();
      kontakt.Podstawowy = true;

Pamiętać trzeba, że tylko jeden telefon i jeden email mogą być podstawowe.

Ja za to szukam poprawnego rozwiązania dodawania Osób i Firm na podstawie Szablonów.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 05, 2015, 08:39:03
Jaki błąd dostajesz?

U mnie działa dodawanie kontaktów w ten sposób:
Kontakt kontakt = new Kontakt();
      podmiotBO.Dane.Kontakty.Add(kontakt);
      kontakt.Rodzaj = rodzajeKontaktuDD.Telefon;
      kontakt.Wartosc = dr["mobile"].ToString();
      kontakt.Podstawowy = true;

Pamiętać trzeba, że tylko jeden telefon i jeden email mogą być podstawowe.

Ja za to szukam poprawnego rozwiązania dodawania Osób i Firm na podstawie Szablonów.

Błąd jest taki: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.

Odnośnie tego twojego rozwiązania to co prawda błą nie występuje ale telefon ani mail nie chce się dodać, to akurat chyba jest oki bo przekazuje pusty obiekt.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 05, 2015, 09:04:15
Nie mam pojęcia dlaczego ale tak mi działa:

  _kon = new Kontakt();
                                            firma.Dane.Kontakty.Add(_kon);
                                            _kon.Wartosc = zDok.F_Telefon;
                                            _kon.Podmiot = PodmiotZbazy;
                                            _kon.Rodzaj = irKontaktu.DaneDomyslne.Telefon;
                                            firma.Dane.Kontakty.Add(_kon);
                                            firma.Zapisz();

Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Styczeń 05, 2015, 12:06:30
Generalna zasada, którą warto stosować to najpierw dodać nową encję (czyli obiekt klasy pochodzącej z modelu danych - namespace InsERT.Moria.ModelDanych) do obiektu biznesowego, czyli np. kontakt do kolekcji, a potem dopiero zmieniać jej właściwości. Wtedy na pewno wszystko odbywa się w kontekście obiektu biznesowego i za jego wiedzą. W tym przypadku widać doskonale jakie to jest ważne.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 05, 2015, 12:16:37
Nie mam pojęcia dlaczego ale tak mi działa:

  _kon = new Kontakt();
                                            firma.Dane.Kontakty.Add(_kon);
                                            _kon.Wartosc = zDok.F_Telefon;
                                            _kon.Podmiot = PodmiotZbazy;
                                            _kon.Rodzaj = irKontaktu.DaneDomyslne.Telefon;
                                            firma.Dane.Kontakty.Add(_kon);
                                            firma.Zapisz();

A jednak mi to nie działa, znaczy kod działa nie wywala wyjatku, jednak wpisów w bazie brak :). Może ktoś ma pomysł dlaczego?
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 05, 2015, 12:27:32
Generalna zasada, którą warto stosować to najpierw dodać nową encję (czyli obiekt klasy pochodzącej z modelu danych - namespace InsERT.Moria.ModelDanych) do obiektu biznesowego, czyli np. kontakt do kolekcji, a potem dopiero zmieniać jej właściwości. Wtedy na pewno wszystko odbywa się w kontekście obiektu biznesowego i za jego wiedzą. W tym przypadku widać doskonale jakie to jest ważne.

Znalezłem jeszczecz coś takiego:
IKontaktRepository iKontakty = polaczenie.PodajObiektTypu<IKontaktRepository>();

ale nie mam pojęcia jak to zainncjalizować a tam są właśnie metodu Insert i Updat, które mnie interesują. Taka inicjalizacja jak powyżej generuje błąd:

The current type, InsERT.Mox.Runtime.IInjectionScope, is an interface and cannot be constructed. Are you missing a type mapping?

W pomocy przyliście tych obiektów do inicjalizacji nie ma co prawda tego, ale nie ma też wyjaśnione jak to zrobić. Generalnie pomoc to zbiór obieków bez jakichkolwiek objaśnień, wygląda to tak jakby ktoś skorzystał na obiektach z jakiegoś programu do robienia dokumentacji i nic wiecej :(.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: fosuk w Styczeń 05, 2015, 13:30:48
W rozwiązaniach sferycznych można korzystać tylko z tego co jest opisane w SDK. Reszta to interfejsy, klasy itp. wewnętrzne. Te wspomniane metody pozwalają jedynie dodawać lub zmieniać status encji, ale jako to zapisać do bazy danych?
Poza tym to jest poziom modelu danych, wszelkie modyfikacje nie byłyby kontrolowane przez warstwę biznesową, jak przy dostępie bezpośrednio do bazy danych.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: Dr_Q w Styczeń 05, 2015, 16:57:45
Cytat: keczerad

A jednak mi to nie działa, znaczy kod działa nie wywala wyjatku, jednak wpisów w bazie brak :). Może ktoś ma pomysł dlaczego?

Masz zdublowane
    firma.Dane.Kontakty.Add(_kon);
Poza tym wydaje mi się, że bezpieczniej jest dodawać elementy w kontekście obiektu nadrzędnego, zamiast przypisywać
_kon.Podmiot = PodmiotZbazy;

using ( podmiotBO )
                    {
 Kontakt kontakt = new Kontakt();
                            podmiotBO.Dane.Kontakty.Add(kontakt);
                            kontakt.Rodzaj = rodzajeKontaktuDD.Telefon;
                            kontakt.Wartosc = dr["phone"].ToString();
                            kontakt.Podstawowy = true;
                            jestTelPodst = true;
                        }

                        if (dr["mobile"].ToString() != String.Empty)
                        {
                            Kontakt kontakt = new Kontakt();
                            podmiotBO.Dane.Kontakty.Add(kontakt); // TypKontaktu może być telefon faks email
                            kontakt.Rodzaj = rodzajeKontaktuDD.Telefon;
                            kontakt.Wartosc = dr["mobile"].ToString();
                            if (jestTelPodst == false)
                                kontakt.Podstawowy = true;
                        }

                        if (dr["fax"].ToString() != String.Empty)
                        {
                            Kontakt kontakt = new Kontakt();
                            podmiotBO.Dane.Kontakty.Add(kontakt);
                            kontakt.Rodzaj = rodzajeKontaktuDD.Fax;
                            kontakt.Wartosc = dr["fax"].ToString();
                        }
}


ale mogę się mylić :-)
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: keczerad w Styczeń 05, 2015, 20:47:30
W rozwiązaniach sferycznych można korzystać tylko z tego co jest opisane w SDK. Reszta to interfejsy, klasy itp. wewnętrzne.

Tak myślełem, bo to jedyna zaleta stosowania tego typu rozwiązania po stronie developera i producenta programu do  "opieki nad kodem".


Te wspomniane metody pozwalają jedynie dodawać lub zmieniać status encji, ale jako to zapisać do bazy danych?

Problem polegał na tym że nie wyświetliłem błędu, po wyświetleniu błędu można było dojść do tego że nie można dodać telefonu "nie podstawowego" jak nie ma żadnego w bazie, po zmianie właściwości podstawowy na "True" poszło.
Cytuj
Poza tym to jest poziom modelu danych, wszelkie modyfikacje nie byłyby kontrolowane przez warstwę biznesową, jak przy dostępie bezpośrednio do bazy danych.

To już kwestia sporna, logowanie do logiki biznesowej trwa 30 sekund na i7, 8GB ramu trochę duży narzut, bo trzeba kurcze właczać backgroudworkera dla usera zeby to wytrzymał psychicznie :).
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: adamb w Kwiecień 11, 2017, 14:26:44
witam, to jedyny temat w którym znalazłem wyrażenie "encja" - losowo pojawia mi się takie coś:
Tym razem przy dodawaniu faktury, pomogło anulowanie i wprowadzenie jej na nowo.
O co chodzi?

(http://e-adams.pl/wp-content/uploads/2017/04/encja_nexo.png)
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: dkozlowski w Kwiecień 12, 2017, 10:19:11
O błąd programu.
Tytuł: Odp: SDK dwa pytania.
Wiadomość wysłana przez: dkozlowski w Maj 12, 2017, 20:00:39
witam, to jedyny temat w którym znalazłem wyrażenie "encja" - losowo pojawia mi się takie coś:
Tym razem przy dodawaniu faktury, pomogło anulowanie i wprowadzenie jej na nowo.
O co chodzi?

O błąd programu.

Jeśli nawet nie rozumiesz kiedy ktoś próbuje Ci pomóc i uznajesz to za szkodzenie to następnym razem napisz, że nie rozumiesz co się do Cebie pisze, bo w taki sposób tylko się ośmieszasz.

Decydując się na nexo powinieneś dobrze wiedzieć, że jest to nowy produkt w fazie intensywnego rozwoju i z tego powodu zawiera wiele drobnych "błędów", jedne są powtarzalne, inne (jak opisany przez Cebie) nie są powtarzalne, wszystkie kiedyś zostaną poprawione przez producenta. Powtórzę więc raz jeszcze - to po prostu błąd programu.