Łukasz Kubacki 37 Napisano 4 Sierpnia 2020 Udostępnij Napisano 4 Sierpnia 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 (edytowane) Istnieją dwa sposoby na odczytanie wartości pól własnych v2 na wydrukach: po przez użycie interfejsu IPolaWlasneAdv2Accessor; szczegóły znajdują się w osobnym poście: po przez użycie identyfikatorów pól własnych; co zostało opisane w tym poście Historycznie rzecz ujmując najpierw powstał sposób związany z użyciem interfejsu IPolaWlasneAdv2Accessor jednak okazało się, że zwraca on zawsze pola z pierwszej pozycji na wydruku, w związku z tym problemem powstał sposób oparty o identyfikatory. W wersji 43.0.0 nexo poprawiliśmy jednak problem ze zwracaniem pierwszej pozycji na wydruku przy użyciu IPolaWlasneAdv2Accessor, dlatego oba powyższe sposoby stały się tak samo akceptowalne. Identyfikator pola własnego to nazwa kolumny w bazie danych, pod którą dostępne jest to pole. Aby sprawdzić jaki identyfikator odpowiada jakiemu polu należy wejść do modułu konfiguracji pól własnych obiektu i wyświetlić tam kolumnę Id (dostępną od nexo 32.0.0). Domyślnie kolumna Id jest ukryta: Więcej o identyfikatorach pól własnych można poczytać w poście dotyczącym struktury pól własnych v2 w bazie danych: Po tym wstępie możemy przejść do konkretów: Aby móc odwoływać się do pól własnych na wzorcu po przez ich identyfikatory, należy w drzewie obiektów znaleźć obiekt, który posiada pola własne v2 np. chcąc na wzorcu "FS standard" mieć dostęp do pól własnych v2 nabywcy, trzeba znaleźć: "Business Objects->Nabywca->Podmiot->PodmiotDlaKtoregoHistoria". Po znalezieniu kliknąć prawym przyciskiem myszy i wybrać "New Business Object", zaznaczyć "Child of Business Object", wybrać "PolaWlasneAdv2", kliknąć "OK" i ponownie "OK": Po wykonaniu tego w drzewie obiektów pojawią się identyfikatory pól własnych v2: Aby widzieć jakie identyfikatory odpowiadają jakim polom, identyfikatorom można ustawić aliasy. Robi się to po przez kliknięcie 2x na dany identyfikator i wypełnienie "Alias": Po przydzieleniu aliasów, pojawią się one obok identyfikatorów: Od tej pory można używać pól własnych v2 po przez ich identyfikatory np.: Edytowane 22 Grudnia 2022 przez Łukasz Kubacki dodatkowy opis na początku postu odnośnie sposobów odczytu pól własnych v2 na wydrukach 1 Link to postu
Łukasz Kubacki 37 Napisano 4 Sierpnia 2020 Autor Udostępnij Napisano 4 Sierpnia 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 (edytowane) Pola słownikowe Jeszcze chciałbym zwrócić uwagę na pola słownikowe. W moim przykładzie mam dwa pola słownikowe: Pole typu "Słownik własny" o nazwie "pz slownik", które ma identyfikator: Nabywca.Podmiot.PodmiotDlaKtoregoHistoria.PolaWlasneAdv2.I1 Pole typu "Słownik systemowy" walut o nazwie "pz waluta", które ma identyfikator: Nabywca.Podmiot.PodmiotDlaKtoregoHistoria.PolaWlasneAdv2.G0 Identyfikatory pól słownikowych mają w sobie klucz pozycji słownika, a nie wartość pozycji słownika. Dlatego do pobrania wartości pozycji słownika, na podstawie klucza trzeba posłużyć się pomocniczymi metodami, które trzeba dodać w zakładce "Code": Najpierw trzeba dodać na początku wzorca użycie przestrzeni nazw (ang. using): using InsERT.Moria.PolaWlasne2; using InsERT.Moria.Narzedzia.PolaWlasne2; //trzeba też sprawdzić, czy we wzorcu są poniższe dwa usingi i gdy jakiegoś brakuje, to należy go także wstawić: using InsERT.Moria.Wydruki; using System.Linq; Następnie można wstawić poniższe metody: public string PobierzWartoscSlownikaWlasnego(string nazwaSlownika, int? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaWlasnego(nazwaSlownika); if (slownik == null) throw new InvalidOperationException("Nie znaleziono słownika własnego: " + nazwaSlownika); var pozycja = slownik.UtworzZapytanieLinq().FirstOrDefault(p => p.Klucz == klucz); return pozycja != null ? pozycja.Wartosc : null; } public string PobierzWartoscSlownikaWlasnegoSqlByInt(string nazwaSlownika, int? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaWlasnegoSql(nazwaSlownika); if (slownik == null) throw new InvalidOperationException("Nie znaleziono słownika własnego SQL: " + nazwaSlownika); var pozycja = ((ISlownikoweZrodloDanych<int>)slownik).UtworzZapytanieLinq().FirstOrDefault(p => p.Klucz == klucz); return pozycja != null ? pozycja.Wartosc : null; } public string PobierzWartoscSlownikaWlasnegoSqlByGuid(string nazwaSlownika, Guid? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaWlasnegoSql(nazwaSlownika); if (slownik == null) throw new InvalidOperationException("Nie znaleziono słownika własnego SQL: " + nazwaSlownika); var pozycja = ((ISlownikoweZrodloDanych<Guid>)slownik).UtworzZapytanieLinq().FirstOrDefault(p => p.Klucz == klucz); return pozycja != null ? pozycja.Wartosc : null; } public InsERT.Moria.ModelDanych.Waluta PobierzWartoscSlownikaSystemowegoWalut(Guid? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaWalut(); return slownik.UtworzZapytanieLinqTypowane().FirstOrDefault(p => p.Id == klucz); } public InsERT.Moria.ModelDanych.Magazyn PobierzWartoscSlownikaSystemowegoMagazynow(int? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaMagazynow(); return slownik.UtworzZapytanieLinqTypowane().FirstOrDefault(p => p.Id == klucz); } public InsERT.Moria.ModelDanych.RachunekBankowy PobierzWartoscSlownikaSystemowegoRachunkow(int? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaRachunkowBankowych(); return slownik.UtworzZapytanieLinqTypowane().FirstOrDefault(p => p.Id == klucz); } Metody te służą odpowiednio: PobierzWartoscSlownikaWlasnego(nazwaSlownika, klucz) - zwraca wartość słownika własnego dla danego klucza PobierzWartoscSlownikaWlasnegoSqlByInt(nazwaSlownika, klucz) - zwraca wartość słownika własnego SQL o kluczu Int PobierzWartoscSlownikaWlasnegoSqlByGuid(nazwaSlownika, klucz) - zwraca wartość słownika własnego SQL o kluczu Guid PobierzWartoscSlownikaSystemowegoWalut(klucz) - zwraca walutę dla danego klucza PobierzWartoscSlownikaSystemowegoMagazynow(klucz) - zwraca magazyn dla danego klucza PobierzWartoscSlownikaSystemowegoRachunkow(klucz) - zwraca rachunek bankowy dla danego klucza Poniżej przykład użycia: Edytowane 10 Lutego 2021 przez Łukasz Kubacki usuniecie powtorzonego obrazka Link to postu
Łukasz W. 2 Napisano 22 Października 2020 Udostępnij Napisano 22 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 (edytowane) Po dodaniu stringu PobierzWartoscSlownikaWlasnego wyskakuje błąd (do mojego poprzedniego wzorca): The error of compilation The error of compilation is found in the 'ZkStandard' report: Nie można odnaleźć nazwy typu lub przestrzeni nazw „IPolaWlasne2HelperWydruku” (czy nie brakuje dyrektywy „using” lub odwołania do zestawu?). USINGI: using System; using System.Drawing; using System.Windows.Forms; using System.Data; using Stimulsoft.Controls; using Stimulsoft.Base.Drawing; using Stimulsoft.Report; using Stimulsoft.Report.Dialogs; using Stimulsoft.Report.Components; using InsERT.Moria.Wydruki.Enums; using InsERT.Moria.Wydruki.Helpers; using InsERT.Moria.Dokumenty.Logistyka; using InsERT.Moria.PolaWlasne2; using InsERT.Moria.Narzedzia.PolaWlasne2; A jak sklonowałem wzorzec i zedytowałem kod w ZK standard (domyślny - bez wprowadzania żadnych zmian) - początek wstawiam poniżej - to w domyślnym wzorcu podgląd generuje się bez błędów, a w moim wzorcu (po skopiowaniu całego kodu z domyślnego wzorca) wyskakuje: The error of compilation The error of compilation is found in the 'ZkStandard' report: Nazwa typu lub przestrzeni nazw „DataAccess” nie istnieje w przestrzeni nazw „InsERT.Mox” (czy nie brakuje odwołania do zestawu?). using System; using System.Drawing; using System.Windows.Forms; using System.Data; using Stimulsoft.Controls; using Stimulsoft.Base.Drawing; using Stimulsoft.Report; using Stimulsoft.Report.Dialogs; using Stimulsoft.Report.Components; using InsERT.Moria.Wydruki.Enums; using InsERT.Moria.Wydruki.Helpers; using InsERT.Moria.Dokumenty.Logistyka; using System.Linq; using System.Collections.Generic; using InsERT.Moria.Wydruki; using InsERT.Moria.PolaWlasne2; using InsERT.Moria.Narzedzia.PolaWlasne2; namespace Reports { public class ZkStandard : Stimulsoft.Report.StiReport { public string PobierzWartoscSlownikaWlasnego(string nazwaSlownika, int? klucz) { if (klucz == null) return null; var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku; var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaWlasnego(nazwaSlownika); if (slownik == null) throw new InvalidOperationException("Nie znaleziono słownika własnego: " + nazwaSlownika); var pozycja = slownik.UtworzZapytanieLinq().FirstOrDefault(p => p.Klucz == klucz); return pozycja != null ? pozycja.Wartosc : null; } private IFunkcjaPobieraniaDanychDlaWydruku PobierzFunkcje(string nazwa) { return MenedzerFunkcjiPobieraniaDanychDlaWydruku.PobierzFunkcje(nazwa); } private IFunkcjaPobieraniaDanychDlaWydruku PobierzFunkcje(Guid id) { return MenedzerFunkcjiPobieraniaDanychDlaWydruku.PobierzFunkcje(id); } public ZkStandard() { this.InitializeComponent(); } Swoją drogą, w którym miejscu najlepiej wstawić nowe metody? Edytowane 22 Października 2020 przez Łukasz W. dodanie 2 przypadku Link to postu
Łukasz W. 2 Napisano 23 Października 2020 Udostępnij Napisano 23 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Edytując wzorzec domyślny (dodanie USING-ów i metod) wszystko kompiluje się poprawnie, ale na podglądzie i wydruku jest puste pole, a w okienku edycji tekstu wysakuje taki czerwony błąd: Link to postu
Łukasz Kubacki 37 Napisano 26 Października 2020 Autor Udostępnij Napisano 26 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Cytat Po dodaniu stringu PobierzWartoscSlownikaWlasnego wyskakuje błąd (do mojego poprzedniego wzorca): The error of compilation The error of compilation is found in the 'ZkStandard' report: Nie można odnaleźć nazwy typu lub przestrzeni nazw „IPolaWlasne2HelperWydruku” (czy nie brakuje dyrektywy „using” lub odwołania do zestawu?). We wzorcu brakuje usinga: using InsERT.Moria.Wydruki; Cytat Swoją drogą, w którym miejscu najlepiej wstawić nowe metody? Nie ma to znaczenia - ja wstawiam na końcu klasy. Link to postu
Łukasz Kubacki 37 Napisano 26 Października 2020 Autor Udostępnij Napisano 26 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Co do tego: Dnia 23.10.2020 o 13:39, Łukasz W. napisał: Edytując wzorzec domyślny (dodanie USING-ów i metod) wszystko kompiluje się poprawnie, ale na podglądzie i wydruku jest puste pole, a w okienku edycji tekstu wysakuje taki czerwony błąd: Ten "Error!" nie ma znaczenia - wysepuje on zawsze, gdy używa się metody z kodu w edytorze. Na moim przykładzie użycia metody PobierzWartoscSlownikaWlasnego też pojawia się taki sam "Error!" W podglądzie nigdy nie będzie wartości pól - bo nie są ładowane żadne prawdziwe dane. Pole jest puste na wydruku, dlatgo, że identyfikatorowi "I0" nie odpowiada żadne pole zaawansowane lub odpowiada pole inne niż słownikowe o słowniku "Wykonawca" Link to postu
Łukasz W. 2 Napisano 26 Października 2020 Udostępnij Napisano 26 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 (edytowane) Cytat Pole jest puste na wydruku, dlatgo, że identyfikatorowi "I0" nie odpowiada żadne pole zaawansowane lub odpowiada pole inne niż słownikowe o słowniku "Wykonawca" To mam już ogarnięte, ale w podobnym wzorcu mam teraz problem: Po skopiowaniu całego kodu z działającego wzorca do innego (praktycznie identycznego) pojawiają mi się takie błędy, które ciężko z czymś mi skojarzyć: (dodając tylko 3 USING-i i PobierzWartoscSlownikaWlasnego() do starego wzorca błędy są takie same) Edytowane 26 Października 2020 przez Łukasz W. Link to postu
Łukasz Kubacki 37 Napisano 27 Października 2020 Autor Udostępnij Napisano 27 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 19 godzin temu, Łukasz W. napisał: Po skopiowaniu całego kodu z działającego wzorca do innego (praktycznie identycznego) pojawiają mi się takie błędy, które ciężko z czymś mi skojarzyć: (dodając tylko 3 USING-i i PobierzWartoscSlownikaWlasnego() do starego wzorca błędy są takie same) Te błędy wynikają z braku we wzorcu referencji do odpowiednich plików dll. Przy każdym błędzie z tekstem "Musisz dodać odwołanie..." napisane jest jakiego zestawu (pliku dll) brakuje np. Musisz dodać odwołanie do zestawu "InsERT.Mox.EntityFrameworkSupport, ..." oznacza, że brakuje referencji do pliku "InsERT.Mox.EntityFrameworkSupport.dll". Aby dodać brakujące referencje, trzeba we właściwościach raportu znaleźć "Referenced Assemblies" i dodać tam odpowiednie nazwy plików: U mnie we wzorcu "ZK standard" są następujące: System.Core.dll InsERT.Moria.PolaWlasne.dll InsERT.Mox.Core.dll InsERT.Mox.EntityFramework.Core.dll InsERT.Mox.EntityFrameworkSupport.dll InsERT.Moria.ModelDanych.dll System.Dll System.Drawing.Dll System.Windows.Forms.Dll System.Data.Dll System.Xml.Dll Stimulsoft.Controls.Dll Stimulsoft.Base.Dll Stimulsoft.Report.Dll InsERT.Moria.API.dll InsERT.Moria.Narzedzia.dll Nie rozumiem dlaczego u Pana we wzorcu brakuje tych referencji - ja używam wersji 32 i po powieleniu raportu "ZK standard" mam wszystkie potrzebne referencje i wszystko się kompiluje 1 Link to postu
Łukasz Kubacki 37 Napisano 27 Października 2020 Autor Udostępnij Napisano 27 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Poniżej zauważyłem, gdzie jest błąd: Dnia 23.10.2020 o 13:39, Łukasz W. napisał: Jako pierwszy parametr podaje się nazwę słownika - czyli powinno być "Wykonawcy" - ale to już chyba Pan zauważył 1 Link to postu
Łukasz W. 2 Napisano 27 Października 2020 Udostępnij Napisano 27 Października 2020 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 21 minut temu, Łukasz Kubacki napisał: Poniżej zauważyłem, gdzie jest błąd: Jako pierwszy parametr podaje się nazwę słownika - czyli powinno być "Wykonawcy" - ale to już chyba Pan zauważył Ja również zauważyłem to po napisaniu postu - jak zwykle najprostszy błąd najciężej znaleźć. 33 minuty temu, Łukasz Kubacki napisał: Nie rozumiem dlaczego u Pana we wzorcu brakuje tych referencji - ja używam wersji 32 i po powieleniu raportu "ZK standard" mam wszystkie potrzebne referencje i wszystko się kompiluje U mnie były tylko te poniżej - pewnie korzystałem z jakiegoś starego wzorca (tak jak pisałem wcześniej - korzystałem z działającego, ale nie z najnowszej wersji) System.Dll System.Drawing.Dll System.Windows.Forms.Dll System.Data.Dll System.Xml.Dll Stimulsoft.Controls.Dll Stimulsoft.Base.Dll Stimulsoft.Report.Dll InsERT.Moria.API.dll InsERT.Moria.Narzedzia.dll 1 Link to postu
Rafał Męcikiewicz 1 Napisano 22 Stycznia 2021 Udostępnij Napisano 22 Stycznia 2021 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 (edytowane) U mnie również brakowało referencji (wzorzec Zlecenie serwisowe), po ich dodaniu został ostatni błąd i tu nie za bardzo wiem gdzie dokładnie leży problem. Widzę w screenach, że u Łukasza W. wysypał się podobny error. __ Edit: brakowało usingu using System.Linq; po jego dodaniu wszystko zaczęło działać. Edytowane 25 Stycznia 2021 przez Rafał Męcikiewicz Rozwiązanie 1 Link to postu
Patryk Kłoda 196 Napisano 5 Września 2022 Udostępnij Napisano 5 Września 2022 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 A, że tak zapytam ogólnie - czy udało się może przez te kilka wersji uprościć edycję wzorców i pól własnych słownikowych? Chociażby to NewBusinessObject ? Zabawa w CODE po to, żeby móc uzyskać wartość ze słownika a nie tylko ID wydaje się niezbyt sensowne Link to postu
Paweł Kubacki 192 Napisano 9 Września 2022 Udostępnij Napisano 9 Września 2022 w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Nic się w tym temacie nie zmieniło. Powyższa instrukcja dalej pozostaje aktualna. 1 Link to postu
Tomasz Korzeniowski 2 Napisano 28 Lutego Udostępnij Napisano 28 Lutego w Dostęp do pól własnych v2 na wydrukach od 31.1.0 (edytowane) . Edytowane 28 Lutego przez Tomasz Korzeniowski pomyłka, wolałbym skasować niż edytować. Link to postu
Tomasz Korzeniowski 2 Napisano 28 Lutego Udostępnij Napisano 28 Lutego w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Dzień dobry, "Business Objects->Nabywca->Podmiot->PodmiotDlaKtoregoHistoria". Czy na tej samej zasadzie mogę dodać zaawansowane pola na wydruku dotyczące asortymentu ? Pola własne zaawansowane dla asortymentu: Utworzyłem grupę pola SEKTORY. Utworzyłem pole zaawansowane: "Miejsce w magazynie", gdzie można wybrać z pola wyboru sektory (Sektor001-Sektor099); (załącznik 28.02.jpg). Teraz chcę to umieścić na wydruku dokumentu WZ. Rozumiem, że wybieram jak Pan pisał: "Business Objects->Nabywca->Podmiot->PodmiotDlaKtoregoHistoria". itd itd ? Uprzejmie proszę o pomoc. Link to postu
Paweł Kubacki 192 Napisano 28 Lutego Udostępnij Napisano 28 Lutego w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Instrukcja jest ogólna, ale przedstawiony w pierwszej wiadomości przykład dotyczył dodania pól własnych klienta na wydruk FS. W przypadku asortymentu ścieżka prowadząca do pól własnych będzie inna. Tutaj chciałbym zwrócić uwagę, że jest to instrukcja techniczna. Została stworzona z myślą o osobach zajmujących się wdrażaniem/serwisowaniem aplikacji. Polecam zatem skorzystać z pomocy takiej osoby. Proszę przejrzeć naszą listę serwisantów. Link to postu
Tomasz Korzeniowski 2 Napisano 29 Lutego Udostępnij Napisano 29 Lutego w Dostęp do pól własnych v2 na wydrukach od 31.1.0 Dziękuję serdecznie za rozwianie moich wątpliwości oraz pomoc z Pana strony :] Wszystkiego dobrego :] 1 Link to postu
Polecane posty