-
Liczba zawartości
1 133 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
18
Zawartość dodana przez Paweł Kubacki
-
Dostęp do pól własnych v2 na wydrukach od 31.1.0
Paweł Kubacki odpowiedział Łukasz Kubacki → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Nic się w tym temacie nie zmieniło. Powyższa instrukcja dalej pozostaje aktualna. -
Błąd wyświetlania okna Asortyment dla użytkownika 'szef'
Paweł Kubacki odpowiedział R2 D2 → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Proszę o przesłanie w wiadomości prywatnej danych diagnostycznych ze stanowiska komputerowego, na którym ten problem występuje. -
Ładowanie programu
Paweł Kubacki odpowiedział Agata Foremska → na temat → Forum użytkowników - InsERT nexo - Rachmistrz nexo
Proszę w pierwszej kolejności uruchomić program serwisowy i w ustawieniach tego programu włączyć szczegółowy poziom logowania zdarzeń Proszę z takimi ustawieniami popracować chwilę, uruchomić program na kilku podmiotach. Następnie proszę o utworzenie danych diagnostycznych z komputera, na którym ten problem występuje i przesłanie ich do mnie w wiadomości prywatnej. Informacja o sposobie komunikacji z serwerem SQL jest akurat w tym przypadku bardzo istotna. Proszę więc powiedzieć trochę więcej o konfiguracji: Ile jest komputerów w sieci? Czy łączą się z serwerem udostępnionym przez internet czy jest to praca w sieci lokalnej lub przez RDP? Czy na wszystkich komputerach występuje ten problem, czy tylko niektórych? Czy problem pojawia się tylko po wgraniu nowej wersji programu, czy przy każdym uruchomieniu? -
Problem aktualizacja Insert Nexo server QNAS - do v.32.0.1
Paweł Kubacki odpowiedział Paweł Korytnicki → na temat → Forum użytkowników - InsERT nexo - Subiekt nexo
Taki błąd zazwyczaj jest objawem timeoutu przy przesyłaniu plików programu do tzw. bazy dystrybucyjnej. Pliki te są przesyłane z końcówki do bazy, po to, żeby inne końcówki mogły je pobierać, dzięki czemu przy aktualizacji wystarczy zainstalować nexo na jednej końcówce, żeby nowa wersja rozpropagowała się na pozostałe. Przesyłamy te pliki tylko podczas pierwszego uruchomienia w nowej wersji - potem już nie ma takiej potrzeby. Jeżeli ma Pan dostęp do komputera, na którym jest zainstalowany serwer SQL, to może Pan wgrać pakiety nexo na ten komputer, a potem za pomocą programu serwisowego do bazy dystrybucyjnej. -
Zbędne foldery
Paweł Kubacki odpowiedział Krzysztof Lasko → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Jeżeli chce Pan usunąć jedynie wybrane katalogi, to trzeba to zrobić ręcznie. Gdyby chciał Pan usunąć wszystkie, to w programie serwisowym jest do tego operacja o nazwie "Usuń binaria ze stacji roboczej". Proszę jednak nie spodziewać się, że w ten sposób odzyskane będzie tyle miejsca ile widać na tym obrazie. W katalogach tych przechowywane są jedynie linki do binariów programu i informacja pokazywana w systemie operacyjnym jest tutaj myląca. Jeżeli chce Pan odzyskać miejsce zajmowane przez binaria programu, to polecam ten artykuł e-Pomocy. -
Raport LINQ z parametrami i wydruki
Paweł Kubacki odpowiedział Miroslaw Lach → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Mogę potwierdzić to co napisał Pan Andrzej. Taki problem został poprawiony do wersji 40-stej i wpis o tym znalazł się na liście zmian. -
Przyciski Poprzedni-Następny
Paweł Kubacki odpowiedział Magdalena Richter → na temat → Forum użytkowników - InsERT nexo - Rewizor nexo
Można skorzystać z podglądu na dole okna, a można też skorzystać z nowego podglądu w osobnym oknie (F9), który zmienia się wraz ze zmianą zaznaczonego elementu na liście. -
Błąd w raportach własnych sql Subiekt NEXO
Paweł Kubacki odpowiedział Tomasz Bieńkowski → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Jedną ze zmian w wersji 41, która właśnie się ukazała jest: Poprawiono problem z zapisem raportu SQL, w którym użyto parametru DR. Problem, który Pan opisuje występował, gdy dla parametru DR nie podano domyślnej wartości. Można więc zainstalować nową wersję programu lub pozostać przy obecnej i podać domyślną wartość dla tego parametru. To dlatego, że parametr, który sprawiał problem jest w tym przykładzie zakomentowany. -
Plik startowy - dodane własnych parametrów uruchomienia aplikacji
Paweł Kubacki odpowiedział Radomił Ząbik → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Może Pan stworzyć plik startowy w programie serwisowym z zapisanymi ustawieniami serwera i wybranej bazy danych oraz podanym scenariuszem uruchomienia. Następnie przekazać ścieżkę do tego pliku do Launchera wraz z parametrami dla aplikacji. Ostatecznie będzie to wyglądało tak InsLauncher.exe /StartupFile=SciezkaDoPlikuStartowego -- parametr1 parametr2 -
Raporty własne a flagi
Paweł Kubacki odpowiedział Łukasz Czarnowski → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Tak. -
Sesja użytkownika nie wygasa nawet po restarcie klienta.
Paweł Kubacki odpowiedział Błażej Nowak → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
W pierwszej kolejności proszę się upewnić czy program jest zamykany. Samo wylogowanie użytkownika z programu nie zwalnia licencji. W drugiej kolejności proszę się upewnić, że w tle nie chodzą żadne programy, takie jak rozwiązania własne oparte na Sferze nexo lub serwer rozwiązań mobilnych. Do zdiagnozowania problemu może posłużyć program serwisowy. Na danej bazie danych w menu kontekstowym znajduje się operacja "Zarządzanie połączeniami". Widać tam wszystkie procesy podłączone pod bazę danych. Na podstawie nazwy hosta oraz ID procesu hosta można szukać programu, który zjada dodatkową licencję. -
[Sfera] Aktualizowanie załącznika w nowej bibliotece załączników 40+
Paweł Kubacki odpowiedział Radomił Ząbik → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Proszę spróbować operatora + -
[Sfera] Aktualizowanie załącznika w nowej bibliotece załączników 40+
Paweł Kubacki odpowiedział Radomił Ząbik → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Przy założeniu, że w bazie albo jest załącznik związany z FZ, albo nie ma go wcale, to kod jest z grubsza właściwy. Zwrócę jednak uwagę na kilka ważnych szczegółów. Użycie metody Single w sytuacji, gdy w bazie nie ma żadnych załączników wywoła wyjątek i nie dojdzie do tego if, które jest poniżej. Lepsze byłoby tutaj użycie metody SingleOrDefault. Drugie miejsce, na które należy zwrócić uwagę to porównywanie nazwy plików. W bibliotece przechowywana jest nazwa bez rozszerzenia, więc musi Pan taką samą nazwę użyć w warunku Where. Kod ten nie sprawdzi się także, gdy w bibliotece będzie załącznik o takiej samej nazwie, ale nie powiązany z wskazanym FZ. -
[Sfera] Aktualizowanie załącznika w nowej bibliotece załączników 40+
Paweł Kubacki odpowiedział Radomił Ząbik → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Dokładnie tak trzeba zrobić. Najpierw wyszukać załącznik i jeżeli taki istnieje, to podmienić jego zawartość za pomocą metody AktualizujZawartosc. W sferze nie ma takiej metody i nie planujemy jej dodawać. Takiego parametru też nie ma. -
Subiekt Nexo wersja 4 - problem z polem własnym
Paweł Kubacki odpowiedział Artur Admin → na temat → Forum użytkowników - InsERT nexo - Subiekt nexo
-
Podgląd wydruku
Paweł Kubacki odpowiedział Anna Sałacińska → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Aby wywołać podgląd wydruku trzeba uruchomić Sfere z dostępem do interfejsu użytkownika. Polecam w tym celu zapoznanie się z tematem "Pierwsze kroki" -> "Wykorzystanie interfejsu użytkownika" w pomocy do Sfery. -
problem z wydajnoscia bazy nexo pro (deadlock)
Paweł Kubacki odpowiedział Radosław Szachnowski → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Proszę wykonać takie oto zapytanie na serwerze, na którym występują problemy: SELECT xdr.value('@timestamp', 'datetime') AS [Date], xdr.query('.') AS [Event_Data] FROM (SELECT CAST([target_data] AS XML) AS Target_Data FROM sys.dm_xe_session_targets AS xt INNER JOIN sys.dm_xe_sessions AS xs ON xs.address = xt.event_session_address WHERE xs.name = N'system_health' AND xt.target_name = N'ring_buffer' ) AS XML_Data CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(xdr) ORDER BY [Date] DESC Najlepiej gdyby zapytanie to było wykonane w SQL Server Management Studio (SSMS). Jeżeli zwróci ono jakieś wyniki, to proszę otworzyć każdy z XML-i, zapisać i wysłać do mnie w wiadomości prywatnej. -
Podwojona wartość dokumentu przy płatnościach odroczonych
Paweł Kubacki odpowiedział Anna Sałacińska → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Proszę sprawdzić czy klient ma określoną płatność domyślną i czy nie jest to przypadkiem gotówka? Po realizacji dokumentu zawsze można usunąć wszystkie płatności wywołując ds.Dane.PlatnosciDokumentow.Clear(); W wersji 35.0.0 płatności przeszły dużą przebudowę. Zapowiedź różnic w obsłudze płatności była publikowana w poniższym wątku. -
Limit danych w SDK
Paweł Kubacki odpowiedział Anna Sałacińska → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Dziękuje. Teraz wiadomo już znacznie więcej. Ilość zwracanych danych nie jest w tym przypadku aż tak istotna. Bardziej istotna jest sama forma tego zapytania oraz postać generowanego zapytania SQL. Przy pomocy profilera SQL można je podejrzeć. Widać wówczas, że wynikowy SQL zawiera 115 JOIN-ów. Stosując drobną optymalizację można zmniejszyć ilość JOIN-ów do 36 (warunek WHERE ze względu na brak interfejsu użytkownika jest nieco inny niż w Pani przykładzie) zamowienia.Dane.Wszystkie() .Where(x => x.DataWprowadzenia > new DateTime(2000, 5, 1) && x.DataWprowadzenia < new DateTime(2020, 12, 31) && (x.FlagaWlasna == null || x.FlagaWlasna.Id == 1230)) .Select(x => new { Dok = x, Podmiot = x.Podmiot, Adres = x.Podmiot.AdresPodstawowy.Szczegoly, AdresDostaw = x.Podmiot.DomyslnyAdresDostaw.Szczegoly, }) .Select(select => new Zk() { id = select.Dok.Id, numerZamowienia = select.Dok.NumerZewnetrzny, numerZk = select.Dok.NumerWewnetrzny.PelnaSygnatura, chcekd = false, data = select.Dok.DataWprowadzenia, waluta = select.Dok.Waluta.Symbol, kontrahent = new Zk.Kontrahent() { nazwa = select.Podmiot.AdresPodstawowy.Nazwa, nazwaSkrocona = select.Podmiot.NazwaSkrocona, miejscowosc = select.Adres.Miejscowosc, kodPocztowy = select.Adres.KodPocztowy, nrDomu = select.Adres.NrDomu, nrLokalu = select.Adres.NrLokalu, ulica = select.Adres.Ulica, mail = select.Podmiot.Kontakty.Where(k => k.Podstawowy == true && k.Rodzaj.Id == rodzajeKontaktu).FirstOrDefault().Wartosc, nip = select.Podmiot.NIP, firma = select.Podmiot.Firma.Nazwa }, kontrahentDostawa = new Zk.Kontrahent() { nazwa = select.AdresDostaw.Adres.Nazwa, miejscowosc = select.AdresDostaw.Miejscowosc, kodPocztowy = select.AdresDostaw.KodPocztowy, nrDomu = select.AdresDostaw.NrDomu, nrLokalu = select.AdresDostaw.NrLokalu, ulica = select.AdresDostaw.Ulica, }, produkty = select.Dok.Pozycje .Select(p => new Zk.Produkt() { ilosc = p.Ilosc, indeks = p.AsortymentAktualny.Symbol, typ = p.RodzajAsortymentuId, cena = p.Cena.BruttoPrzedRabatem, rabat = p.Cena.RabatProcent, vat = p.StawkaVat.Stawka, }) }) .ToList() Jednak najlepszą optymalizację można uzyskać zmieniając nieco formę zapytania. Wówczas ilość JOIN-ów zmniejsza się do 17. (from z in zamowienia.Dane.Wszystkie() let podmiot = z.Podmiot let adres = podmiot.AdresPodstawowy let adresSzczegoly = adres.Szczegoly let adresDostaw = podmiot.DomyslnyAdresDostaw let adresDostawSzczegoly = adresDostaw.Szczegoly where z.DataWprowadzenia > new DateTime(2000, 5, 1) && z.DataWprowadzenia < new DateTime(2020, 12, 31) && (z.FlagaWlasna == null || z.FlagaWlasna.Id == 1230) select new Zk() { id = z.Id, numerZamowienia = z.NumerZewnetrzny, numerZk = z.NumerWewnetrzny.PelnaSygnatura, chcekd = false, data = z.DataWprowadzenia, waluta = z.Waluta.Symbol, kontrahent = new Zk.Kontrahent() { nazwa = adres.Nazwa, nazwaSkrocona = podmiot.NazwaSkrocona, miejscowosc = adresSzczegoly.Miejscowosc, kodPocztowy = adresSzczegoly.KodPocztowy, nrDomu = adresSzczegoly.NrDomu, nrLokalu = adresSzczegoly.NrLokalu, ulica = adresSzczegoly.Ulica, mail = podmiot.Kontakty.Where(k => k.Podstawowy == true && k.Rodzaj.Id == rodzajeKontaktu).FirstOrDefault().Wartosc, nip = podmiot.NIP, firma = podmiot.Firma.Nazwa }, kontrahentDostawa = new Zk.Kontrahent() { nazwa = adresDostaw.Nazwa, miejscowosc = adresDostawSzczegoly.Miejscowosc, kodPocztowy = adresDostawSzczegoly.KodPocztowy, nrDomu = adresDostawSzczegoly.NrDomu, nrLokalu = adresDostawSzczegoly.NrLokalu, ulica = adresDostawSzczegoly.Ulica, }, produkty = z.Pozycje .Select(p => new Zk.Produkt() { ilosc = p.Ilosc, indeks = p.AsortymentAktualny.Symbol, typ = p.RodzajAsortymentuId, cena = p.Cena.BruttoPrzedRabatem, rabat = p.Cena.RabatProcent, vat = p.StawkaVat.Stawka, }) }).ToList() -
Limit danych w SDK
Paweł Kubacki odpowiedział Anna Sałacińska → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Pani Aniu, jeżeli mamy Pani pomóc w rozwiązaniu tego problemu, to prosiłbym bardzo o umieszczenie oryginalnego kodu tego rozwiązania własnego, bez uproszczeń, modyfikacji i wycinania czegokolwiek. Treść zamieszczonego wyjątku nie odpowiada przykładowi, który Pani podała. -
Różnice w obsłudze płatności przez Sfere (wersja wiosenna)
Paweł Kubacki odpowiedział Paweł Kubacki → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Tak. Jeżeli gotówka jest domyślną płatnością na stanowisku kasowym, to tak właśnie będzie. Jeśli potrzebna jest inne działanie niż to istniejące w programie, to zawsze można to oprogramować według własnych potrzeb, np. tak: var kwotaDoZaplaty = zk.Dane.Wartosc.BruttoPoRabacie; var podmiot = zk.Dane.PodmiotFinansowy(); var domyslneFormyPlatnosci = zk.Dane.CzyDokumentZakupowy() ? podmiot.DomyslneFormyPlatnosci.Where(x => x.FormaPlatnosci.TypPlatnosci.Zakupu) : podmiot.DomyslneFormyPlatnosci.Where(x => x.FormaPlatnosci.TypPlatnosci.Sprzedazy); int precyzja = zk.Dane.Waluta != null ? zk.Dane.Waluta.Precyzja : 2; foreach (var fp in domyslneFormyPlatnosci) { var kwota = Decimal.Round(kwotaDoZaplaty * fp.Procent * 0.01M, precyzja, MidpointRounding.AwayFromZero); if (fp.FormaPlatnosci.TypPlatnosci.Odroczony) { zk.Platnosci.DodajPlatnoscOdroczona(fp.FormaPlatnosci, kwota); } else { zk.Platnosci.DodajPlatnoscNatychmiastowa(fp.FormaPlatnosci, kwota); } } Oczywiście przy wielu płatnościach domyślnych mogą wyjść groszowe różnice w sumie płatności i kwocie do zapłaty. Wówczas trzeba skorygować kwotę jednej z płatności o wartość tej różnicy. -
Różnice w obsłudze płatności przez Sfere (wersja wiosenna)
Paweł Kubacki odpowiedział Paweł Kubacki → na temat → Forum użytkowników - InsERT nexo - Sprawy techniczne
Nie trzeba czyścić kolekcji płatności. Metoda DodajPlatnosciDomyslne sama usuwa wszelkie płatności przed dodaniem płatności domyślnych. Powinno się to zachować tak jakby dokument był wystawiany w programie. Jeżeli klient ma określone płatności domyślne, to one zostaną dodane. Jeżeli klient nie ma określonych płatności domyślnych, ale jest określona płatność domyślna dla stanowiska kasowego, to ona zostanie dodana. Uwzględnione również zostaną ustawienia domyślnych płatności z parametrów płatności (obsługuj, nie obsługuj, obsługuj tylko odroczone).