Radomił Ząbik 308 Napisano 10 Kwietnia 2022 Udostępnij Napisano 10 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie W związku z rozbudową SDK w wersji 40, postanowiłem trochę poeksperymentować z aplikacjami WPF. Zastanawia mnie, czy istniej możliwość w tego rodzaju aplikacji, wstępnego uzupełnienia obiektu, np. faktury zakupu, otwarcia go w oknie i dopiero w tym oknie zapisania go? Kombinowałem na chłopski rozum, ale do niczego nie dotarłem, a dokumentacja i forum odnośnie WPF, jest bardzo mało wpisów: IDokumentyZakupu dokumentyZakupu = ViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentyZakupu>(); Konfiguracja konfFZ = ViewModel.UchwytDoSfery.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.FakturaZakupuVAT; using (IDokumentZakupu fz = dokumentyZakupu.Utworz(konfFZ)) { var okno = ViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentZakupuOkno>(); DokumentDZ fakturaZakupu = okno.Popraw(fz.Dane); } Link to postu
Wojciech Szopiński 227 Napisano 11 Kwietnia 2022 Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Ale z czym dokładnie ma Pan problem? W metodzie Popraw okna trzeba podać obiekt biznesowy dokumentu (w Pana przypadku "fz"), metoda nic nie zwraca tylko blokuje wykonanie Pana aplikacji do momentu zamknięcia okna. Po zamknięciu okna można dalej operować na obiekcie biznesowym. Link to postu
Radomił Ząbik 308 Napisano 11 Kwietnia 2022 Autor Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Chciałbym utworzyć dokument FZ, wstępnie go uzupełnić, a potem otworzyć okno - z nie zapisanym jeszcze - dokumentem FZ, celem sprawdzenia przez użytkownika i zapisania. Więc podstawowe pytanie jest, czy tak się w ogóle da? Jeśli tak, to jak utworzyć taki dokument, bo podszedłem do tego jak w zwykłej Sferze, a nie okienkowej, a przykłady, które są w dokumentacji, pokazują działania na już utworzonych wcześniej obiektach. Drobne nakierowanie i pewnie Sobie poradzę Link to postu
Wojciech Szopiński 227 Napisano 11 Kwietnia 2022 Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie No czyli tak jak Pan robił tylko w metodzie Popraw podaje Pan "fz" (obiekt biznesowy dokumentu), metoda nic nie zwraca więc nie przypisuje Pan jej wyniku do niczego, a po zamknięciu okna program przechodzi do kolejnej linii i albo ma Pan w tym momencie zapisany dokumentu, albo jeśli użytkownik anulował zapis to dokument dalej jest niezapisany. Link to postu
Radomił Ząbik 308 Napisano 11 Kwietnia 2022 Autor Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie No właśnie, jak pierw podstawiałem fz, też miałem błąd, więc chwila, zaraz Sobie zorganizuje środowisko, bo akurat jestem na innym komputerze i zapodam ten błąd Link to postu
Radomił Ząbik 308 Napisano 11 Kwietnia 2022 Autor Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie I tutaj jest taki efekt, dlatego kombinowałem z fz.Dane. Link to postu
Wojciech Szopiński 227 Napisano 11 Kwietnia 2022 Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie 24 minuty temu, Wojciech Szopiński napisał: metoda nic nie zwraca więc nie przypisuje Pan jej wyniku do niczego Jeśli nagłówek metody jest w postaci: void MojaMetoda(object parametr); To nie można z niej skorzystać tak: var wynik = MojaMetoda(new object()); Ponieważ ona nic nie zwraca. Link to postu
Radomił Ząbik 308 Napisano 11 Kwietnia 2022 Autor Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Ok, za mocno się zasugerowałem, że musi być wskazany. Czyli tutaj jest po prostu, tak: IDokumentyZakupu dokumentyZakupu = ViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentyZakupu>(); Konfiguracja konfFZ = ViewModel.UchwytDoSfery.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.FakturaZakupuVAT; using (IDokumentZakupu fz = dokumentyZakupu.Utworz(konfFZ)) { var okno = ViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentZakupuOkno>(); okno.Popraw(fz); } Metoda nic nie zwraca, a gdybym chciał się dowiedzieć, jaki dokument FZ dodałem, np. aby pokazać użytkownikowi jego numer, to jest jakaś opcja na to? Link to postu
Wojciech Szopiński 227 Napisano 11 Kwietnia 2022 Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie 54 minuty temu, Wojciech Szopiński napisał: po zamknięciu okna program przechodzi do kolejnej linii i albo ma Pan w tym momencie zapisany dokumentu, albo jeśli użytkownik anulował zapis to dokument dalej jest niezapisany Po zamknięciu okna program przejdzie do następnej linii po: okno.Popraw(fz); I w tym miejscu w obiekcie "fz" ma Pan zmiany wprowadzone zmiany na formatce. Link to postu
Radomił Ząbik 308 Napisano 11 Kwietnia 2022 Autor Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Ok, racja, wcześniej mnie zmylił wyjątek bo powieliłem fz.Zapisz(). No dobra, skoro okno.Popraw() nic nie zwraca, niezależnie, czy kliknąłem Zapisz czy Anuluj, to czy poza sprawdzeniem np. istnienia numeru, jest jakaś metoda na wykrycie, czy użytkownik zapisał, czy anulował jednak dodawanie? Link to postu
Wojciech Szopiński 227 Napisano 11 Kwietnia 2022 Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Można sprawdzić identyfikator encji: if (fz.Dane.Id > 0) { // dokument zapisany } Albo tak jak Pan napisał - numer pełny. Link to postu
Radomił Ząbik 308 Napisano 11 Kwietnia 2022 Autor Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Ok, bo nie chciałem wstawić "brzydkiego" rozwiązania, dla potomnych Więc dla potomnych, poniższy kod można podstawić pod szablon aplikacji WPF, dostępny od wersji 40 i odpowiednio dostosować do Swoich potrzeb, czy dokumentów if (ViewModel.UchwytDoSfery != null) { IPodmioty podmioty = ViewModel.UchwytDoSfery.PodajObiektTypu<IPodmioty>(); IAsortymenty asortyment = ViewModel.UchwytDoSfery.PodajObiektTypu<IAsortymenty>(); IDokumentyZakupu dokumentyZakupu = ViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentyZakupu>(); Konfiguracja konfFZ = ViewModel.UchwytDoSfery.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.FakturaZakupuVAT; using (IDokumentZakupu fz = dokumentyZakupu.Utworz(konfFZ)) { Magazyn mag = ViewModel.UchwytDoSfery.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Id == 100000).FirstOrDefault(); fz.Dane.Magazyn = mag; var klient = podmioty.Dane.Wszystkie().Where(p => p.Id == 100027).FirstOrDefault(); fz.Dane.Podmiot = klient; Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == 100000).First(); var poz = fz.Pozycje.Dodaj(a, 100, a.JednostkaSprzedazy); poz.Cena.NettoPoRabacie = 9.99m; fz.Przelicz(); var okno = ViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentZakupuOkno>(); okno.Popraw(fz); if(fz.Dane.NumerWewnetrzny.PelnaSygnatura!="") MessageBox.Show("Dodano fakturę zakupu: "+"\n"+fz.Dane.NumerWewnetrzny.PelnaSygnatura); } } 2 Link to postu
Wojciech Szopiński 227 Napisano 11 Kwietnia 2022 Udostępnij Napisano 11 Kwietnia 2022 w [Sfera] WPF/Wstępne uzupełnienie tworzonego obiektu, z zapisaniem w oknie Tutaj zamiast: if(fz.Dane.NumerWewnetrzny.PelnaSygnatura!="") Napisałbym: if(!string.IsNullOrEmpty(fz.Dane.NumerWewnetrzny.PelnaSygnatura)) Bo Pana warunek dla null'a założy, że dokument został zapisany. Dodatkowo można jeszcze skorzystać z własności Zmodyfikowany: if (fz.Zmodyfikowany) { // nie zapisano obiektu } else { // zapisano obiekt } Chciałbym jeszcze sprostować to co napisałem na początku: 2 godziny temu, Wojciech Szopiński napisał: Po zamknięciu okna można dalej operować na obiekcie biznesowym. Jednak NIE da się po zamknięciu okna operować na uprzednio wyświetlanym obiekcie biznesowym - należy go załadować ponownie. 2 Link to postu
Polecane posty