Autor Wątek: SDK dwa pytania.  (Przeczytany 22023 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #15 dnia: 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.



Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #16 dnia: 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.


Offline Dr_Q

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: GT, NEXO PRO
Odp: SDK dwa pytania.
« Odpowiedź #17 dnia: 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.

Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #18 dnia: 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.

Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #19 dnia: 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();


Offline fosuk

  • Nowy użytkownik
  • *
  • Wiadomości: 33
  • Reputacja +7/-0
  • Wersja programu: nexo
Odp: SDK dwa pytania.
« Odpowiedź #20 dnia: 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.

Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #21 dnia: 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?

Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #22 dnia: 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 :(.

Offline fosuk

  • Nowy użytkownik
  • *
  • Wiadomości: 33
  • Reputacja +7/-0
  • Wersja programu: nexo
Odp: SDK dwa pytania.
« Odpowiedź #23 dnia: 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.

Offline Dr_Q

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: GT, NEXO PRO
Odp: SDK dwa pytania.
« Odpowiedź #24 dnia: 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ć :-)
« Ostatnia zmiana: Styczeń 05, 2015, 17:13:52 wysłana przez Dr_Q »

Offline keczerad

  • Nowy użytkownik
  • *
  • Wiadomości: 17
  • Reputacja +0/-0
Odp: SDK dwa pytania.
« Odpowiedź #25 dnia: 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 :).

Offline adamb

  • Nowy użytkownik
  • *
  • Wiadomości: 4
  • Reputacja +0/-0
  • Wersja programu: NEXO PRO 14,1
Odp: SDK dwa pytania.
« Odpowiedź #26 dnia: 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?


Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17059
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: SDK dwa pytania.
« Odpowiedź #27 dnia: Kwiecień 12, 2017, 10:19:11 »
O błąd programu.
Daniel, Białystok.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17059
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: SDK dwa pytania.
« Odpowiedź #28 dnia: 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.
Daniel, Białystok.

Forum Użytkownikow Subiekt GT

Odp: SDK dwa pytania.
« Odpowiedź #28 dnia: Maj 12, 2017, 20:00:39 »