Przejdź do treści

FAQ

Ogólne

Serwer neos nie działa poprawnie. Neos przestaje odpowiadać, działa wolno, lub proces zamyka się zamoczynnie.

Najlepszym sposobem zdiagnozowania problemów opisanych wyżej jest przejście następującej checklisty. Dokument ten pozwoli rozpoznać czy problem dotyczy wydajności działania serwera lub maszyny, czy może błędnej konfiguracji, czy nieobsłużonego błędu technologicznego. Jeżeli jakiś punkt jest niejasny to skontaktuj się z zespołem ZRT.

Usługa Neosa startuje, lecz nie działa poprawnie

W sytuacji, kiedy usługa Neos uruchamia się, ale nie pochłania zasobów, sugeruje to, że nie działa poprawnie. Po weryfikacji, że nasz system spełnia minimalne wymagania, oraz posiada wszystkie potrzebne narzędzia i biblioteki, należy przeinstalować usługę Neosa.

Problem z wyłączeniem usługi

Może się zdarzyć, że Neos, który posiada uruchomionych kilka Webserwisów, przy próbie zamknięcia zgłasza komunikat mówiący o tym, że proces nie przyjmuje komend sterujących, a próba zakończenia działania nie daje rezultatu ani z poziomu Neos Monitora, ani z poziomu windowsowej konsoli usług. W takiej sytuacji należy zakończyć działanie procesu po jego PID uruchamiając menedżer zadań. Po uruchomieniu narzędzia należy przejść na zakładkę Usługi, znaleźć proces naszego Neosa, kliknąć prawym przyciskiem myszy na pozycji procesu, przejść do szczegółów i wybrać opcję zakończ zadanie lub zakończ drzewo procesów.

Wolne działanie NeosExperta

Jeśli NeosExpert działa u Ciebie wolno, czyli przełączenie między zakładkami trwa 2-3 sekundy, a dodanie parametru do obiektu kilkanaście to warto zweryfikować następujące ustawienia.

  • Poziom logowania w pliku *.app aplikacji VCL. Logi aplikacji VCL przy codziennej pracy powinny być ustawione na poziom ERROR. Inne ustawienie logów powoduje znaczne zwolnienie systemu.:
[General]
LogFileMode=ERROR
  • W *.app poniżej wersji 5.4.13 warto ustawić następujące opóźnienie. Dzięki temu dopiero po 100ms bezczynności klient VCL prześle informacje o zmianach na formie do serwera a praca na NeosExpercie stanie się płynniejsza. W wersjach późniejszych opóźnienie to jest włączone automatycznie.:
[NEOS]
InterfaceDelay=100
  • Przy pracy developerskiej (rozwój aplikacji dla klienta na środowisku lokalnym) warto dodać folder / proces neos'a oraz VCL'a do wyjątków antywirusa. Klient VCL i serwer NEOS są w ciągłej komunikacji i właśnie od szybkości tej komunikacji zależy prędkość działania NeosExperta.

Długie uruchamianie aplikacji, zawieszenie aplikacji po postawieniu świeżego środowiska

Należy zweryfikować logi Neosa i klienta VCL, a następnie sprawdzić czy na bazie nie mamy np. procedury Everyday, która wykonuje się bardzo długo. Procedura ta może być rozszerzana przez zespoły serwisowe, co znacząco wpływa na czas jej wykonania. Jeżeli podczas logowania czekamy na wykonanie procedury, to aplikacja może przestać odpowiadać. W związku z tym opisane rozwiązanie wskazuje, gdzie może leżeć problem. W celach developerskich możemy zmodyfikować procedurę, aby ta nie zajmowała tyle czasu, lub przeanalizować ją i spróbować zoptymalizować.

Nie załadowano NeosBussinesPlatform dla Neosa w wersji 6.0

Pojawienie się błędu możemy odnotować w oknie aplikacji monitora Neos, gdzie po próbie załadowania pluginów przez Neosa pojawia się informacja, że NeosBussinesPlatform nie został poprawnie załadowany . Prawdopodobnym rozwiązaniem problemu jest brak zainstalowanej biblioteki .Net Framework w wersji 4.8, lub zestawu narzędzi MSBuildtools. Pliki instalacyjne dla biblioteki .Net Framework znajdziemy tutaj, natomiast dla narzędzia MSBuildtools znajdziemy w lokalizacji "X:\apoc\install\Microsoft\Visual Studio Build Tools\vs_BuildTools_2019.exe".

Problem z polskimi znakami w aplikacji uruchomionej pod Windows

FIX

Jeśli na systemie Windows w aplikacji nie wyświetlają się wszystkie polskie znaki, to należy sprawdzić ustawienia regionalne języka dla aplikacji nieobsługujących Unicode i ustawić język polski. Ścieżka do ustawień: Panel sterowania → Region → Administracyjne → Język dla programów nieobsługujących kodu Unicode → Polski

Nie odnaleziono tabeli nazwa_konkretnej_tabeli pomimo, że tabela istnieje w bazie danych

Jeśli w czasie ładowania okna klienta otrzymujemy błąd krytyczny opisany komunikatem: Nie odnaleziono tabeli nazwa_tabeli, a po kliknięciu przycisku OK klient Teneum się zamyka, należy sprawdzić czy plik .dbi jest prawidłowy, oraz czy zawiera wpis z tabelą wskazaną w komunikacie błędu.

Próba zarejestrowania formy BrowseSECURITYLOG podczas uruchamiania klienta Teneum

W celu wyeliminowania powyższego błędu, przed ponowną kompilacją źródeł, z pliku common3.cbproj, znajdującego się w katalogu S4/ESystem, należy usunąć wszystkie wpisy związane z browsesecuritylogf. Dodatkowo, z pliku common3.cpp, znajdującego się w tej samej lokalizacji, należy usunąć wpis:

REGISTER_FORM(TBrowseSECURITYLOG,BrowseSECURITYLOG,"BrowseSECURITYLOG",MODAL_WIN,false,false)
Po wykonaniu wyżej wymienionych operacji ponownie kompilujemy projekt.

Komunikat błędu: Invalid BLOB_ID SQL error

Jeśli przy próbie zapisania danych na formach pojawia się komunikat:

Dynamic SQL Error
SQL error code =XXX
invalid BLOB ID
należy sprawdzić, czy podczas próby zapisania danych do pól w formacie UTF8, łączymy się do bazy za pomocą aplikacji, która w konfiguracji ma zdefiniowane połączenie za pomocą tego charset-u.

Aplikacja klienta zwraca błąd o braku standardowych tabel, które zostały przez nas celowo usunięte z bazy danych.

Aby usunąć błąd wymieniony w tytule, należy sprawdzić czy w plikach klientka znajduje się poprawny plik .dbi, oraz czy zawiera wpis z tabelą wskazaną w komunikacie błędu. Jeśli taki wpis się w nim znajduje, należy ten wpis zakomentować lub usunąć.

Problem z logowaniem do aplikacji: nie udaje się wykonać procedury pobierającej dane do logowania

Jeśli podczas logowania się do aplikacji klienta Teneum, otrzymujemy informację o błędzie następującej treści:

Invalid request BLR at offset 247;
function ROUND is not defined
module name or entrypoint could not be found
świadczy to o potrzebie zaktualizowania plików UDF oraz weryfikacji, czy posiadamy zainstalowane narzędzie OpenSSL. Aby zaktualizować UDFy, należy pobrać plik udf_win_x86_x64.zip z lokalizacji "X:\DBR\release\firebird\udf". Jeśli okaże się, że brakuje nam narzędzia OpenSSL, z lokalizacji "X:/DBR/release/firebird/openssl" pobieramy plik stosownie do architektury zainstalowanego systemu. Warto także wykonać następujące zapytanie w IBExpercie:
select * from
SYS_GET_USERINFO('SENTE','4538E440A2AF79F3F5E0D22B477DCF96','^RXF^QR',NULL)
order by USERID
Jeżeli powyższe zapytanie wykonuje się poprawnie, może to dodatkowo świadczyć o braku potrzebnych uprawnień do procedury SYS_GET_USERINFO dla użytkownika, który aktualnie wykonuje to zapytanie.

Nie działa logowanie do metody WebAPI, Postman wykonuje metodę mimo braku danych logujących

Uwaga!

Zakładka "Logowanie" w konfiguracji roli WebSerwisu odpowiada za zapis logów do pliku a nie za uwierzytelnianie!

Żeby włączyć uwierzytelnianie należy sprawdzić, czy jakakolwiek rola publiczna nie ma nadanych praw do metody naszego Webserwisu, do której chcemy ograniczyć dostęp. Sprawdź zatem wszystkie role publiczne w oknie zarządzania uprawnieniami.

Zachęcamy do zapoznania się z dokumentacją

Błąd podczas logowania: Błąd w SetQueryActive: Błąd aktywacji ds: brak predefiniowanych pól danych

FIX

Błąd spowodowany jest tym, że użytkownik sentelogin nie posiada potrzebnych uprawnień do jednej ze standardowych tabeli w bazie danych. Dokładna informacja odnośnie błędu powinna znajdować się w logach klienta Teneum. Po wyczyszczeniu uprawnień przez zespół ZRP podobny błąd może pojawić się w sytuacji, gdy w pliku Teneum.app, w sekcji Genreal, posiadamy uzupełniony i niezakomentowany wpis z loginem i hasłem dla klienta.

Niepoprawne ładowanie biblioteki nazwa_biblioteki.dpl: Can't load package nazwa_biblioteki.bpl. Nie można odnaleźć określonego modułu

W momencie pojawienia się takiego błędu, może dojść do sytuacji, że klient załaduje się i uruchomi, ale prawdopodobnie część funkcjonalności nie będzie działać poprawnie. Aby uniknąć takiej sytuacji, należy dla odpowiedniej wersji klienta, dograć brakujące biblioteki.

Komunikat błędu: The program can’t start because rtl120.bpl is missing from your computer. Try reinstalling the program to fix this problem

FIX

Pojawienie się powyższego komunikatu podczas ładowania okna klienta, informuje o tym, że aplikacja jest prawdopodobnie uruchamiana na komputerze, na którym nie zostały wcześniej zainstalowane wymagane biblioteki dla technologii VCL. Aby zainstalować brakujące biblioteki poproś zespół ZRT o plik instalacyjny do aplikacji s4, wybierz instalację niestandardową i ze składników instalacji wybierz pozycję Biblioteki systemowe. Po zakończeniu procesu instalacji biblioteki uruchom ponownie aplikację klienta.

Po zalogowaniu się użytkownikiem do WebApi, użytkownik nie może wykonać danej metody

Samo zalogowanie użytkownikiem do API nie daje jeszcze dostępu do metody. Żeby taki dostęp ustawić, należy nadać roli użytkownika uprawnienia do żądanej metody WebAPI. Pozwala to, na udostępnianie metod w zależności od użytkowników czy grup użytkowników.

Brak podglądu obiektów w Neos Expercie

W sytuacji, kiedy w aplikacji klienta Teneum, w oknie Neos Experta, po wskazaniu konkretnego obiektu na drzewie projektów, nie jest widoczny podgląd danego projektu (pola modelu danych), dodatkowo kursor myszki zmienia się w kręcące kółko, a aplikacja w dalszym ciągu działa, wówczas należy sprawdzić poprawność wersji Neosa i klienta Teneum. Wyżej wymieniony błąd sugeruje rozbieżności w tej kwestii, a do poprawnego działania aplikacji, wersje powinny być takie same.

Mimo poprawnego nadania uprawnień dla projektu, przy wykorzystaniu roli predefiniowanej, użytkownik nie ma uprawnień do danego projektu

FIX

W takiej sytuacji należy zacząć od weryfikacji, czy dany projekt jest widoczny w zakładce Developera, w obiekcie Neos Expert; jeśli nie, to prawdopodobnie dany projekt nie został poprawnie załadowany przez serwer Neosa. W przeciwnym wypadku należy przede wszystkim sprawdzić, czy mamy nadane uprawnienia za pomocą okna Zarządzaj uprawnieniami. Jeżeli tych uprawnień nie widać to może oznaczać, że nasze zmiany się nie zapisały (spróbujmy się przelogować) lub uprawnieniami do tego projektu steruje moduł, na który nie mamy licencji (sprawdzić plik .ser).

Pojawianie się błędów arithmetic exception, numeric overflow, or string truncation

Należy sprawdzić, czy nie chcemy pobierać danych z tabeli UTF8 przy konfiguracji połączenia Neosa do BD jako WIN1250. Należy zwrócić uwagę, że nawet błędna konfiguracja będzie działać poprawnie do momentu pojawienia się w tabeli "prawdziwych" danych UTF8 czyli znaków z poza zakresu tablicy ANSI. Konfiguracja kodowania znaków w połączeniu BD jest opisana w dokumentacji

Błąd cseditor.exe w Neos Expercie

W sytuacji, kiedy podczas wchodzenia w metody w Neos Expercie lub Schedulerze, wyrzucany jest błąd o braku możliwości edycji metod, otwarciu schedulera, lub o tym, że Program nie istnieje w podanej lokalizacji: .\cseditor\cseditor.exe, należy dograć brakujące pliki do klienta VCL ze ścieżki "X:\DBR\release\cseditor".

Brak podpowiedzi w starym Code Editorze, w aplikacji udostępnionej na dysku sieciowym

Kiedy w oknie metod w Neos Expercie, podczas wpisywania dowolnej frazy, edytor nie podpowiada nam pól, parametrów, metod itp. należy sprawdzić czy nasz plik teneum.app posiada poprawnie wskazane ścieżki: w przypadku aplikacji udostępnionej na dysku sieciowym wskazanie powinno odwoływać się do lokalizacji sieciowej.

SignatureHelper nie może się zaktualizować na serwerze klienta

FIX

Serwer aktualizacji jest dostępny jedynie z sieci Sente. Żeby SH mógł się poprawnie zaktualizować należy sprawdzić, czy połączenie OpenVPN jest aktywne. Jeśli zestawienie VPN nie jest możliwe, można ściągnąć plik Setup.exe z http://shrelease.dbr.local/ który zawiera instalator najnowszej wersji Signature Helper.

SignatureHelper nie może się zaktualizować i pokazuje komunikat o błędzie

Jeżeli Signature helper nie może się zaktualizować i jednocześnie pokazuje komunikat :

To możliwe, że podana jest błędna ścieżka do serwera z plikami potrzebnymi do aktualizacji

FIX

Należy wejść do folderu z zainstalowanym SH, domyślnie jest to C:\Users\\[USER]\AppData\Local\SignatureHelper. Następnie otworzyć folder config i plik user.config. W w/w pliku zlokalizować sekcję UpdateServer i uzupełnić wartość o odpowiednią ścieżkę: SH Stable - http://shrelease.dbr.local SH Beta - http://shbeta.dbr.local

Wpis powinien wyglądać w następujący sposób : <setting name="UpdateServer" serializeAs="String" type="System.String">http://shrelease.dbr.local</setting>

Następnie należy ponownie uruchomić SH

W nawigatorze klienta Teneum nie widać grupy SENTE

Wskazany problem wynika z braku dostępu do przestrzeni nazw: namespace ADMIN dla konkretnego użytkownika. Można to ustawić dzięki polu SUPERVISIOR z wartością 1 (SUPERVISIOR = 1) na tabeli S_USERS, lub poprzez odpowiednią modyfikację procedury logującej SYS_GET_USERINFO.

Uwaga!

SUPERVISIOR = 2 nie daje już tej funkcjonalności, ponieważ namespace jest wtedy ustawiany na SENTE.

Problem z konfiguracją smtp i wysyłaniem maili za pomocą limilabs na serwerze exchange

W przypadku problemów z wysyłaniem maili za pomocą limilabs na serwerze exchange, należy zweryfikować, czy nasza konfiguracja jest zgodna z poniższym szablonem:

Konfiguracja dla portu 465
    Do połączenia używamy metody Connect()
    Korzystamy ze znacznika StartTLS (jeżeli to potrzebne)
    Używamy Nadpisania metody sprawdzającej certyfikat, jeżeli jest z tym problem
Konfiguracja dla portu 587
    Do połączenia używamy metody ConnectSSL() do połączenia
    Nie wykorzystujemy znacznika StartTLS
    Używamy Nadpisania metody sprawdzającej certyfikat, jeżeli jest z tym problem

Na liście faktur kosztowych nie widać osób w kolumnie pola: zarejestrowana przez

Problem wynika z braku relacji na obiekcie pola modelu danych. W obiekcie WFFACOSTINVOICE znajduje się pole WFACTIVITYREF, które powinno mieć relację na obiekt WFACTIVITY_VIEW i pole REF.

Czy mogę zainstalować Sinatica u klienta?

Tylko wtedy jeśli klient wykupi licencję. Licencja Sente, która jest dostępna w ZRT pozwala na instalacje jedynie na komputerach Sente i używanie przez pracowników Sente.

Czy istnieje wersja developera bazy Sente?

Tak, dostępem zarządza Specjalista Wsparcia ITS.

Problem z uzupełnieniem pól modelu danych na obiektcie z zapytania

Komunikat techniczny błędu wewnętrznego 1: Element o tym samym kluczu został już dodany.

FIX

Jeżeli zapytanie sql zwraca pola o takiej samej nazwie, to należy pamiętać aby ręcznie zapewnić unikalność nazw. W innym przypadku neos będzie próbował założyć pola modelu danych na podstawie takiego zapytania i operacja zakończy się błędem, ponieważ do kolekcji będziemy próbowali dodać dwa takie same klucze.

Problem z polskimi znakami w ścieżce do projektów Neosowych

Objawy : - Nieskompilowany projekt - Brak metod w code edytorze Neos Experta - Błędy kompilacji : error CS0117: 'Element NAZWA PROJEKTU nie zawiera definicji NAZWA METODY'.

FIX

Dla projektów w wersji 6.0 problemem jest kodowanie plików cs/csproj projektów Neosowych. Aby rozwiązać ten problem należy w pliku .csproj danego projektu dodać odpowiedni znacznik odpowiadający za encodowanie plików danego projektu w odpowiednim PropertyGroup. <CodePage>65001</CodePage> Przykład na zdjęciu poniżej

Problem z kontrolką HTMLEDIT na kliencie web

Korzystając z HTMLEDIT na webie można natrafić na taki problem jak znikająca treść w kontrolce po otwarciu drugi raz tej samej zakładki, lub po przejściu na inną zakładkę i powrót na tą na której jest HTMLEDIT. Z tych powodów zalecane jest korzystanie z HTMLEDIT tylko w kliencie VCL, na którym wcześniej wspomniane problemy nie występują.

Aktualizacja bazy danych firebird do wyższej wersji

Podczas aktualizacji bazy danych z wersji firebird 2.5 na wyższe, np. 3.0, 4.0 itp. Przed rozpoczęciem tego procesu należy bezwzględnie ustawić collate dla wszystkich domen, które nie mają ich ustawionych! Niewykonanie tej czynności uniemożliwi aktualizację bazy danych za pomocą Signature Helpera !!!

Nie można tej operacji wykonać po aktualizacji bazy, ponieważ od wersji firebird 3.0 tabele systemowe są readonly i nie pozwalają na jakąkolwiek ich aktualizację !!!

Tutaj można znaleźć instrukcję aktualizacji bazy danych firebird.

Wersja 4.7 (RC)

Problem z ładowaniem pluginu Neos.Email wraz z modułem Scheduler

W wersji 4.7 pojawia się problem z załadowaniem pluginu Neos.Email do serwera NEOS. Należy ten "plugin" pobrać link i przekopiować go do folderu Modules. Następnie wystarczy usunąć z pliku *.SMD informację o ładowaniu pluginu Neos.Email. Moduł załaduje się przy starcie serwera NEOS.

Ważne

Należy przejrzeć projekty NEOSowe i w miejscach w których wykorzystujemy klasy pluginu jawnie dopisać namespace. np. Neos.Email.EmailBuilder()

Wersja 4.6

Tip

Zajrzyj też do błędów wcześniejszych wersji ;)

Problem z edycją metod przez edytor kodu C#

Ważne!

Problem przy przejściu z wersji 4.6.x na najnowszą 4.6.16

Problem objawia się następująco. Po dodaniu nowej metody będziemy normalnie widzieć jej kod w edytorze, jednak po jego modyfikacji nie będą pokazywały się przyciski "Zapisz, Anuluj". Przez co nawet po kliknięciu kompiluj NEOS nie będzie miał aktualnej metody i kompilacja może się nie udać (metoda na widoczność).

FIX

  1. Wyłączamy środowisko.
  2. Uruchamiamy Explorer.exe
  3. Wpisujemy %appdata%
  4. Usuwamy folder sente
  5. Uruchamiamy środowisko. Edytor powinien zacząć działać poprawnie.

Powyższy problem jest spowodowany tym, że pliki *js od edytora zostały zapisane w cache'u.

Błędy przy starcie środowiska

Przy starcie aplikacji S4 dostaję komunikat "Missing CEF files"

FIX

Przenieś do lokalizacji sentes4.exe folder cef możesz go znaleźć m. in. w plikach wydawanych przez DBR (x:\dbr\release\s4). CEF to skrót od Chrome Embedding Framework, jest potrzebny aby zadziałał nowy komponent przeglądarki www. Jeżeli pomimo przekopiowania dalej dostajesz komunikat, pliki mogą wymagać aktualizacji. Przenieś je z folderu odpowiadającego numerowi wersji S4.

Przy starcie aplikacji S4 dostaję message boxa, że muszę je podnieść do wersji co najmniej 4.3.5

Z uwagi na poprawki bezpieczeństwa w Neosie i S4 jest to konieczne. Trzeba podnieść technologiczne S4. W innym przypadku funkcje serwerowe nie będą działać poprawnie.

Uwaga!

Komunikat nie jest precyzyjny, trzeba mieć co najmniej wersję 4.3.5.5.

Jeżeli sprawdzałeś i masz 4.3.5 a dalej dostajesz ten błąd, pewnie nie przeniosłeś wszystkiego w Sente S4, albo masz właśnie jeden z pre-releasów 4.3.5

Nie widzę nowego edytora kodu C#

FIX

Sprawdź w konfiguracji .smd Neosa czy masz następujące wpisy. W drugiej kolejności sprawdź, czy port został otwarty.

Mój plugin nie wczytał się poprawnie do Neosa a nic w nim nie zmieniałem

W wersji 4.6 Neos zaczął przechodzić lekką refaktoryzację, na którą czekał od powstania. Pluginy powinny działać, ale w przypadku problemów skorzystaj najpierw z przygotowanego scenariusza aktualizacji.

Aplikacja S4 uruchamia się a po chwili się wyłącza

Sprawdź w logu zdarzeń windows czy błąd zamknięcia aplikacji to c0000374. Alternatywnie spróbuj uruchomić S4 spod debuggera. Jeżeli przy uruchomieniu aplikacja zgłosi błąd krytyczny po załadowaniu biblioteki vulcan-1.dll pobierz i zainstaluj to. Jeżeli link nie działa, poszukaj VulkanRT-xxxxx-Installer na tej stronie.

Wersje starsze

Błędy przy starcie środowiska

Uruchomiłem aplikację, ale nie widzę we wstążce przycisków z Neosa

  1. Serwer Neos nie zaladowal projektów. Zajrzyj do loga lub okna serwera, czy są wpisy o załadowaniu projektów. Jeśli ich nie ma, to znaczy, że być może ścieżka projektów została podana nieprawidłowo.

  2. Aplikacja kliencka nie podłączyła się do serwera Neos, bo nie skonfigurowano właściwie pliku app lub smd. Zajrzyj do loga lub okna serwera, czy są wpisy o podłączeniu się klienta do serwera. Jeśli nie, to popraw konfigurację w plikach.

  3. Nie została właczona synchronizacja użytkowników i nie ma roli odpowiadającej zalogowanemu użytkownikowi. Sprawdź, czy masz opcję SynchronizeUsers=yes a pliku app.

  4. Brak uprawnień użytkownika do obiektów które tworzą wpisy we wstążce. Zaloguj się na innego użytkownika i sprawdź w oknie zarządzania uprawnieniami. Jeśli nie masz innego użytkownika na którego mógłbyś się zalogować, sprawdź, czy Twój użytkownik ma ustawione pole SENTE=1 w tabeli S_USERS lub ISSUPERVISOR=2. Użytkownik z tą flagą nie ma ograniczeń wynikających z nadanych uprawnień. Jeśli logujesz się zwykłym użytkownikiem, to Neos Expert nie jest dostępny.

  5. W pliku app zdefiniowano ograniczenie do jakiegoś modułu i jedynie wpisy tego modułu są widoczne. Należy sprawdzić wpis Modules w sekcji [NEOS].

Klient połączył się z serwerem, widzę we wstążce przyciski z Neosa, ale po ich kliknięciu nic się nie dzieje

FIX

Odkomentuj w pliku .app w kliencie wpis #Plugin9=neos3.bpl i sprawdź czy wszystkie numery po słowie "Plugin" zachowują kolejność bez dziur w numeracji.

Komunikat: "Aplikacja nie została poprawnie zainicjowana...." podczas uruchamiania cseditor.exe

Sprawdź, czy na komputerze na którym pracujesz zainstalowano .NET Framework w wersji 4.0

Podczas próby włączenia Neos Expert występuje błąd

Sprawdź, czy masz poprawnie skonfigurowany plik app - prawdopodobnie nie ma prawidłowo zarejestrowanej bazy system

CSEditor się uruchomił, ale w ogóle się nie osadza w oknie aplikacji i nie widzę kodu C# metod

Zweryfikuj, czy w katalogu aplikacji (tam skąd odpalasz esystem3.exe) znajduje się aktualna wersja cseditora. Potrzebne są pliki *.dll, *.xml i cseditor.exe.

Aplikacja wiesza się podczas próby wejścia do edytora C# w Neos Expercie

Sprawdź ścieżki, jakie wskazano w pliku app w sekcji [Neos] w kluczach ServerProjectDllPath i ServerNeosDllPath. Być może z lokalnego komputera nie masz dostępu do tych ścieżek, a program cseditor.exe próbuje stamtąd pobrać pliki .dll i .xml w celu wczytania podpowiedzi do intellisense.

Po uruchomieniu aplikacji dostaję komunikat Range check error

Czasami problem pojawia się znienacka i znika po restarcie komputera. Jeśli nie znika, to prawdopodobnie komponent edytora HTML używanego w aplikacji nie został poprawnie zainstalowany. Aby go zainstalować, należy:

FIX

  1. Wgrać plik KsDHTMLEDLib.ocx do katalogów c:\windows\system32 oraz c:\windows\syswow64.
  2. Wykonać polecenie regsvr32 KsDHTMLEDLib.ocx i zrestartować komputer.

Jeśli powyższe polecenie zwraca błąd, należy spróbować je wykonać właściwą wersją regsrv32.exe. Najlepiej spróbować zarówno z c:\windows\syswow64\regsvr32.exe jak i c:\windows\system32\regsvr32.exe.

Uwaga!

Problem występuje do wersji klienta desktopowego 4.2.3 włącznie

Podczas uruchomienia występuje komunikat o nieudanej inicjacji komponentu KSdHtmlEdit

Problem: podczas rozruchu aplikacji występuje komunikat :

Wynika to z błędnej konfiguracji serwera Firebird. Powoduje to, że nie może zainicjować się poprawnie moduł obsługi IBEventów w aplikacji co blokuje przyjmowanie eventów od zewnętrznych procesów - w tym przypadku kontrolki InternetExplorer która jest powoływana w ramach KSDHtmlEdit i wtedy kontrolka KSDHtmlEdit myśli, że nie udało jej się zainicjalizować.

FIX

Należy sprawdzić konfigurację Fierebirda w pliku firebird.conf. Odpowiednia sekcja to:

# The TCP Port Number to be used for server Event Notification
# messages. The value of 0 (Zero) means that the server will choose
# a port number randomly.
#
# Type: integer 
#
#RemoteAuxPort = 0

Gdy RemoteAuxPort jest ustawiony na 0 lub brak nastawy, to port będzie losowany. W przypadku losowania lub wyboru konkretnego portu należy zadbać, by nie występowały konflikty z innymi aplikacjami (np. poprzez skopiowanie konfiguracji z innego serwera Firebird na tej maszynie), oraz drożność portu na poziomie zabezpieczeń sieci, firewalla, routingu.

Błędy w trakcie pracy

W kliencie WEB widać dane w słowniku, natomiast w kliencie VCL słownik jest pusty

Spora jest szansa, że w takim przypadku obiekt będący słownikiem, posiada pusty filtr, a zarazem definicja tejże tabeli na której zbudowany jest obiekt posiada definicję EmptyFilter w pliku dbi. Wtenczas EmptyFilter jest stosowany, gdy nie ma filtru nałożonego na obiekt, a najczęściej EmptyFilter ma postać REF=0. Zmieniać tegoż wpisu w DBI raczej nie można, gdyż pewnie istniały stosowne powody ku niemu. Powinno się zatem założyć odpowiedni filtr na obiekcie biznesowym, w przypadku gdy EmptyFilter istnieje a chcemy mieć wszystkie dane, winniśmy nałożyć domyślnie filtr 1=1. Celem ułatwienia detekcji owych EmptyFiltrów w logu zapytań ( tryb DEBUG z F8 ) bezpośrednio przed wyrażeniem EmptyFilter znajduje się komentarz /* !Empty Filter! */.

Błąd kompilacji projektu: "nazwy członków i odpowiadających im typów otaczających nie mogą być takie same."

W projekcie występuje taka sama nazwa: projektu-obiektu, obiektu-pola modelu danych itp itd. Należy zmienić jedną z nazw, tak by były różne.

Znikneło pole z grida! Było, a nie ma. Mało tego, na żadnych oknach, neosowych i nie neosowych to pole również się nie pokazuje

Sprawdź, czy jak wyciągniesz to pole bezpośrednio na formę a nie na grida, czy dla bieżącego rekordu się pokazuje, jeżeli tak, na 100% administrator dodał ochronę na to pole, że nikt go nie zobaczy.

Jeśli pole, które chcesz wyświetlić jest słownikowane np KLIENT {NAZWA}, być może jest problem z samą relacją i nie jest w zapytaniu SQL budowany LEFT JOIN do tabeli słownika. Spróbuj wyświetlić samo pole bez sięgania do słownika, lub poprawić relację.

Serwer Neos wiesza się co jakiś czas i trzeba go restartować, bo inaczej nic nie działa

Jest to poważny problem, którego przyczyną mogą być deadlocki powstające w serwerze. Rozwiązać go może tylko poprawka w samym kodzie serwera, tylko trzeba zidentyfikować dokładnie miejsce i scenariusz, co nie jest łatwe. Zastosuj się jednak do tej instrukcji, a czas naprawienia problemu i wyemitowania poprawki znacznie się skróci.

Zrobiłem obiekt dziedziczący w trybie przykrycia ale Neos go nie widzi

Zrobiłem obiekt ARGOCARD.DOKPLIK dziedziczący po SENTE.DOKPLIK w trybie przykrycia i wprowadziłem kilka zmian. Niestety dalej odwołania do SENTE.DOKPLIK pokazują obiekt oryginalny i nie widzę zmian. W takiej sytuacji sprawdź, czy w pliku app wskazano projekt klienta jako projekt domyślny, czyli DefaultProject=ARGOCARD. Tylko wtedy obiekty przykrywające zdefiniowane w tym obiekcie są widoczne.

Klient tworzy plik, ale ma on 0 bajtów i jest zablokowany przez proces klienta

Należy sprawdzić czy nie utworzono obiektu transferu wewnątrz using(StreamWriter...).

Podczas pracy wysuwa się DebugLog z krzakami, zamiast polskich liter

Wynika to z błędu w starej wersji Internet Explolera oraz Windows XP. Należy:

FIX

  1. Włączyć IE
  2. PPM->Kodowanie
  3. Odznaczyć "Wybór automatyczny"

Zmienia mi się rekord w gridzie

Jeśli robić dwuklik na rekordzie i jego dane podmieniają się na dane innego rekordu, albo jak chcesz kliknąć w drzwie na jakiś rekord a on się ustawia uporczywie na jakimś innym, z pewnością nie oznaczyłeś poprawnie pól klucza głównego w definicji obiektu. Pola oznaczone jako pola klucza nie identyfikują unikalnie rekordu. Oznacz poprawne pola.

Chcę dodać nowy rekord, a okno uporczywie ustawia się na jakimś innym rekordzie

Poza tym dzieją się dziwne rzeczy na oknie, np nie mogę z pól odczytać starej wartości ( OldValue ), gdyż zwraca null. Prawdopodobnie w kodzie obiektu jest kod C#, który niejawnie przełącza źródło danych w tryb edycji. Przez to źródło danych ustawia się na jakimś pierwszym z brzegu rekordzie i wyświetla tylko jego. Być może napisałeś w którejś z metod, które neos sam uruchamia taki kod:

public string ValidateREF()
{
  ...
  this.POLE = "wartosc";
  ...
  return "";
}
Przypisanie wartości do jakiegokolwiek pola modelu danych przełącza rekord w tryb edycji. Aby potwierdzić tą hipotezę możesz uruchomić narzędzie Neos Inspector i sprawdzić stan źródła danych w tym oknie.

Wieszanie się/wolne działanie okna CSEditora

Jeśli występują spowolnienia reakcji aplikacji podczas edycji kodu bądź wyświetlania podpowiedzi "IntelliSense" w CSEditorze i włączona jest ochrona realtime w usłudze Windows Defender, to należy dodać cseditor.exe do wykluczonych procesów Windows Defendera. Scieżka pod Win10: Panel Sterowania -> Windows Defender -> Ustawienia -> Dodaj wykluczenie -> Wyklucz proces exe, com lub scr.

Pole jest nieedytowalne, chociaż powinno być

Jeśli pole nie jest wyszarzone, ale nie da się w nim nic wpisać, to możliwe że serwer firebird zwrócił flagę COMPUTED_BLD dla tego pola, co oznacza, że pole jest wyliczone a nie pobrane bezpośrednio z bazy danych. Dzieje się tak zwykle dla obiektów z zapytań SQL oraz z widoków. Zmień zapytanie SQL, aby pobierać bezpośrednio pole z tabeli bez żadnej obróbki. Nie używaj też klauzuli group by.

Błąd: "DATASETINSTANCExxxxx: Missing data provider on data packet"

FIX

Sprawdzamy czy forma dla której wyświetlono komunikat jest z obiektu opartego o zapytanie i posiada ona metodę na treść zapytania SQL. Jeżeli tak to możemy spróbować zrobić dwie rzeczy:

  1. Usunąć domyślne wyrażenie na FORM/JOIN
  2. W metodzie na treść zapytania SQL dodać linijkę kodu która wyświetli nam wygenerowane zapytanie do Loga. Następnie sprawdzamy czy jest poprawne

Błąd: Po otwarciu okna wykonanego w Neosie nie widać wszystkich danych

Należy przed otwarciem okna włączyć tryb debuggowania (F8). Potem, należy otworzyć okno. Po otwarciu okna przeglądamy log "debug.log" i sprawdzamy, czy w jednym z końcowych wpisów nie ma błędu o kodzie -104. Jeżeli taki błąd się znajdzie, to sprawdzamy, czy w tabeli źródłowej obiektu, nie znajduje się pole o takiej samej nazwie, jak nazwa tabeli która została wybrana do zbudowania filtru, czy to statycznie, czy to przez metodę na filtrację. Jeżeli np. tabela ODDZIAŁY, posiada pole OPERATOR, natomiast w filtrze dokonamy zapytania z tabeli OPERATOR, to dostaniemy błąd -104. Wówczas w podzapytaniu filtrującym powinniśmy nazwą tabeli objąć cudzysłowami czyli np.

select first 1 1 from "OPERATOR" where ...

Podpowiadanie nieaktualnych danych podczas wybierania rekordu ze słownika

Może się zdarzyć tak, że jeśli operator w jakimś oknie aplikacji wybiera rekord ze słownika, to system nie widzi najświeższych danych w słowniku, tylko dane zostały zbuforowane w pamięci chwilę wcześniej i nie widać najnowszych zmian. Przykład: użytkownik zakłada zamówienie sprzedaży i wybiera klienta ze słownika do zamówienia. Wtedy do zakładki "odbiór" podpowiada się adres dostawy. Jeśli równolegle inny użytkownik poprawi adres dostawy na kartotece klienta, to do kolejnych zamówień może się jeszcze przez jakiś czas podpowiadać stary adres.

Dlaczego tak jest? Dane ze słowników nie są odświeżane z bazy danych za każdym razem, aby ograniczyć interakcję aplikacji z bazą danych. Zwykle nie jest to uciążliwe, bo dane w słownikach zwykle nie ulegają zmianie zaraz przed wybraniem rekordu. Nowe dane w słownikach są zawsze poprawnie widoczne. Ponadto w większości okien da się wymusić odświeżenie słownika poprzez naciśnięcie F5.

Serwer Neos się wysypuje, bo zjada za dużo RAM-u. Pojawia się wyjątek OutOfMemory

Taka sytuacja może wynikać z kilku przyczyn:

  1. Istnieją pluginy podpięte do neosa albo reguły schedulerowe, które robą DB.OpenTable(...) ale nie mają odpowiedniego DB.CloseTable(..) lub dataview.Close(). Powoduje to alokację pamięci na dane, która nigdy nie jest zwalniania. Pamięć jest zjadana tym szybciej, im częściej taki kod się wykonuje oraz im więcej danych zawiera takie źródło danych. Jest to częsta przyczyna problemów z pamięcią. Problem ten nie występuje w metodach obiektów neosowych, gdyż serwer neos samodzielnie sprząta źródła danych powołane programowo w danej metodzie zaraz po zakończeniu danej metody.
  2. Użytkownik robi import danych z bardzo dużego arkusza xls mechanizmem Neosowym. Jeśli to prawda, to jedyne rozwiązanie to skompilowac serwer Neos w wersji 64-bitowej. To zdejmuje górne ograniczenie ilości pamięci RAM możliwej do zaalokowania przez serwer Neos.
  3. Neos działa już wiele dni, a mechanizm gromadzenia statystyk jest skonfigurowany tak, że rejestruje wywołanie procedur SQL łącznie z parametrami. Jeśli mamy jakąś procedurę SQL, która wykonywana jest bardzo często i każdorazowo z inną wartością parametru (np REF-em dokumentu), to statystyki gromadzą w pamięci RAM bardzo wiele wpisów dotyczących tej procedury.
  4. Na maszynie serwerowej działa równolegle wiele neosów i wyszystkie mają włączone EDA, EDAProxy, Schedulera, itp. Wszystkie neosy próbują przetwarzać te same komunikaty albo reguły schedulera. Może wtedy dochodzić do sytuacji, gdzie jeden neos deadlockuje drugiego i tak w kółko, aż któryś neos pada.

Błędy wywołane przez usunięcie pola z bazy danych i Neosa

W sytuacji, gdy Neos jest włączony i w tym czasie zostanie usunięte pole z bazy danych, a następnie usunięte z pól modelu danych w Neosie, to mogą się pojawić błędy takie jak:

"Wykonywanie zapytania SQL. Błąd podczas wykonania zapytania: Dynamic SQL Error SQL error code = -206 Column unknown"

oraz

"Odświeżanie zmienionego zbioru danych. Błąd podczas wykonania zapytania."

Aby pozbyć się tych błędów należy zrestartować aplikację kliencką.

Po kliknięciu "Edytuj w Visual Studio Code" w Neos Expert, IDE nie uruchamia się na wskazanej metodzie

Czasami z nieznanych dotąd nam przyczyn, Visual Studio Code uruchamiane z poziomu Neos Experta, nie uruchamia się na metodzie, na której byliśmy ustawieni w Neos Expert. W takim przypadku jeżeli chcemy skorzystać z Visual Studio Code, należy metodę znaleźć ręcznie. Aby tego dokonać, wykonujemy następujące kroki:

  1. "Edytuj w Visual Studio Code" w Neos Expert
  2. Po otwarciu IDE, na pasku po lewej stronie klikamy w przycisk o nazwie "Solution" (zazwyczaj jest to ostatni przycisk na pasku).
  3. Na oknie Solution explorer pojawia nam się lista projektów załadowanych przez serwer Neos. Na tej liście znajdujemy interesujący nas projekt i go rozwijamy.
  4. Wybieramy folder na podstawie tego czy szukamy metody interfejsu, czy logiki biznesowej i znajdujemy obiekt, w którym znajduje się poszukiwana metoda.
  5. Klikamy dwukrotnie w obiekt na liście i powinna nam się pojawić zawartość pliku .cs.
  6. Ostatnim krokiem jest odnalezienie metody w pliku i przystąpienie do pracy.

Jak podłączyć się debugerem do serwera neos na środowisku klienta lub testowym podczas jego uruchomienia

Zdarza się, że jest problem z uruchomieniem serwera neos. W takim przypadku nie ma możliwości podłączyć się debbugerem. W celu sprawdzenia przyczyny błędu należy podłączyć się debuggerem, zanim serwer zacznie się uruchamiać. Należy uruchomić serwer z dodatkowym parametrem -debug. Parametr ten sprawi, że pojawi się okno z możliwością podpięcia debuggera, daje to czas na podpięcie się debuggerem, zanim serwer zacznie się uruchamiać.

Nie widać akcji w rozwijanym menu lub po kliknięciu prawego przycisku myszy.

Aby akcje, które zagnieżdżamy (tworzymy rozwijane menu) były widoczne w wyżej opisanych przypadkach, należy upewnić się, czy podczas definicji tych akcji został zaznaczony checkbox "Widoczne w popup menu". Obie formy prezentacji akcji są uzależnione od wskazanego checkboxa ze względu na to, że podczas implementacji tych mechanizmów do stworzenia struktury menu w obu przypadkach użyto tego samego komponentu. Wynika to z ograniczeń technologii VCL w wersji, z której korzystamy. Aktualnie wszelka ingerencja, która miałaby na celu rozłączenie definicji dla tych dwóch form prezentacji, będzie bardzo kosztowna i może wprowadzić niespójności w dotychczasowych projektach biznesowych.

Błędy kompilacji serwera ze źródeł

Przypominamy, że wszystkie bieżące binarki Neosa w wersji stabilnej i candidate dostępne są wprost na apocu. Szczegóły podane są tutaj. Być może wcale nie potrzebujesz kompilować źródeł samodzielnie.

Compiling transformation: ...

Jest to błąd wynikający z błędów podczas transformacji plików szablonowych .tt do plików .cs (np. żeby wygenerować plik .cs z IP komputera który dokonuje budowy źródeł). Błędy transformacji mogą wynikać, z błędnego szablonu, lub z złych znaków końca linii. Na repozytorium przechowywane są pliki ze znakami końca linii Uniksowymi czyli LF natomiast do kompilacji potrzebujemy pliki z znakiem końca linii Windowsowym CRLF. Konwersja powinna być dokonywana automatycznie przez GIT. Jeśli mamy końce lini w plki .tt LF (można sprawdzić przez Notepad++), należy sprawdzić plik \~/.gitconfig. Powinien on zawierać ustawienie:

[core]
autocrlf = true

Missing nuget package x.x.x.x

Projekt Neosa korzysta z zewnętrznych bibliotek, które są rozpowszechniane jako tak zwane paczki, a pilnuje tego program zwany NuGet. Jest on częścią ekosystemu środowiska Visual Studio, ale jest traktowany jako zewnętrzny komponent. Błąd oznacza, że masz VS2012 i najprawdopodobniej nigdy NuGeta nie aktualizowałeś, posiadasz zatem starą wersję, która jeszcze nie obsługiwała tak dobrze automatycznego podciągania brakujących paczek. Postępuj zgodnie z instrukcją i zobacz czy błąd będzie się dalej pojawiał.

AssemblyVersion.cs not found

Z menu Build wybierz opcję Transform all T4 templates.

Missing nuget.exe

W trybie edycji źródeł kliknij prawym na solucje i wybierz opcję Enable Nuget package restore

Nie można załadować zestawu Microsoft.VisualStudio.TextTemplating.11.0

Do rozwijania Neosa używamy VS 2012, w którym brakowało pewnej opcji dostępnej w późniejszych wersjach, przez co w projekcie Neos.Core jest dodany post build event który odpala plik transform.bat. Na nowych wersjach VS ten bat może się nie udać a VS napisze nam, że wobec tego cała kompilacja jest nieudana.

FIX

Aby się tego pozbyć należy wejść we właściwości projektu Neos.Core i skasować ten event. Następnie uruchomić opcję opisaną wyżej w temacie o braku AssemblyVersion.cs.

Neos.Gui i Neos.Common nie mogą wczytać przestrzeni nazw Neos.Core mimo że kompiluje się on poprawnie

Błąd najczęściej pod VS 2012/2013 w wersjach Express. Wejdź do Manage Nuget packages for solution i sprawdzić czy wszędzie jest zaznaczona paczka Microsoft.Bcl.Build.

Błędy spójności

Pole obiektu posiada relację na obiekt który jest z zapytania i nie ma zdefiniowanej tabeli natywnej.

Neos aby obsługiwać słownikowanie po stronie serwera robi left join do słownika. Jeżeli słownikiem jest obiekt z zapytania, to Neos nie robi left join (SELECT ...) bo obiekty z zapytań mogą zależeć, od parametrów, których wartości mogą być nieznane w danym momencie. Nie znaczy to, że po takich obiektach nie można słownikować. Tutaj właśnie pojawia się koncept tabeli natywnej. Jeżeli obiekt słownika dziedziczy po obiekcie z tabeli lub explicite wpiszesz nazwę tabeli natywnej we właściwościach, to left join będzie robiony właśnie do tej tabeli. Ma to oczywiście wady, bo lepiej żeby w tej tabeli były pola na jakich nam zależy. W przeciwnym przypadku użycie tego mechanizmu jest bezcelowe.