Informacje o wersji 1.14.7.0
z dn. 07-05-2025
W tej wersji
- Wyszukiwarka kontrolek na formularzu
- Nowe funkcje listy wyboru w edycji inline
- Rozszerzenia logowania błędów
- Kilka nowości w różnych obszarach
- Usunięte błędy
Wymagane działania
- Lista wyboru w edycji inline:
Aktualizacja nAxiom do wersji 1.14.7.0 spowoduje usunięcie kolumny DefinedControlOptions z tabeli core.GridColumns. W efekcie wartości [key] wybierane na liście wyboru w trybie edycji inline nie będą trafiać do kolumny docelowej i nie będą zapisywane. Aby to naprawić, należy zdefiniować mapowanie wartości [key] na kolumnę docelową (właściwości kolumny > karta
Edycja Inline
>Lista zależności kolumna - kolumna
). Przed aktualizacją można wyszukać w bazie takie przypadki zapytaniem:SELECT [Id] ,[GridDataId] ,[Code] ,[DataType] ,[DefinedControlId] ,[DefinedControlOptions] FROM [MojaBaza].[core].[GridColumns] WHERE DefinedControlOptions IS NOT NULL
Kompatybilność aplikacji
Migracja aplikacji jest możliwa tylko między wersjami nAxiom kompatybilnymi na poziomie bazy danych.
Bieżąca wersja bazy danych: 20250415070758
W tej wersji nAxiom struktura bazy danych zmieniła się. Przed migracją aplikacji do tej wersji wymagane jest zaktualizowanie środowiska źródłowego.
Nowe i zmodernizowane funkcje
1. Wyszukiwarka kontrolek formularza
Ujednolicono komponent wyświetlający strukturę formularza w kreatorze i w designerze. Do tego komponentu dodano okienko wyszukiwania elementów formularza po nazwie, kodzie lub po identyfikatorze. W ostatnim przypadku numer nalezy poprzedzić symbolem hash . W ramach zadania dodano także pole ID we właściwościach elementów formularza (tylko do odczytu).
Usunięto mechanizm niejawnej obsługi sytuacji, w której dwie sekcje formularza mają taką samą kolejność. W takich przypadkach po aktualizacji do wersji 1.14.7.0 nie będzie można zapisać formularza. W celu rozwiązania problemu należy zmienić kolejność sekcji na formularzu. Można to zrobić tylko w kreatorze formularzy poprzez przeniesienie sekcji w drzewie struktury. Drzewo struktury w designerze formularzy nie obsługuje tej operacji.
2. Lista wyboru w edycji inline
Zmodyfikowano funkcjonalność kontrolki listy wyboru używanej w trybie edycji inline. Obecnie obsługiwany jest przypadek, kiedy kontrolka zwraca dodatkowe kolumny, oprócz obowiązkowych [key] i [value]. Wartości z tych kolumn dla wybranej pozycji w kontrolce są dostępne w kontekście rekordu listy jako parametry {@NazwaSQL_KolumnaKontrolki} (tylko w przypadku, gdy tryb edycji inline będzie aktywny). Jeśli na przykład w kolumnie [Wojewodztwo] zostanie osadzona lista wyboru zwracająca kolumny [key], [value] i [MiastoWojewodzkie], w akcji zapisu inline można używać parametrów: {@Wojewodztwo_key}, {@Wojewodztwo_value} i {@Wojewodztwo_MiastoWojewodzkie}.
Podstawowy scenariusz zakłada, że lista wyboru zostanie użyta w kolumnie pomocniczej używanej do wyświetlania danych, a w tabeli modelu danych będzie zapisywana wartość klucza zwracana przez listę.
- Zdefiniuj kontrolkę:
SELECT Id AS [key] , Nazwa AS [value] , Uwagi AS [info] FROM [dbo].[Maszyny]
- Dodaj kolumnę pomocniczą w definicji listy:
SELECT v.* , m.Nazwa as [NazwMaszyny] FROM [model_View]({@_LangId}) v LEFT JOIN [dbo].[Maszyny] m ON m.Id = v.IdMaszyny
- Skonfiguruj kontrolkę do edycji inline:
- w kolumnie [NazwaMaszyny] ustaw kontrolkę z pkt. 1
- zdefiniuj zależność [key] → IdMaszyny
- Zdefiniuj akcję zapisu:
IF ({@Id} IS NULL) INSERT INTO [dbo].[Produkcja] (IdMaszyny) VALUES ({@IdMaszyny}) ELSE UPDATE [dbo].[Produkcja] SET IdMaszyny = {@IdMaszyny} WHERE Id = {@Id}
Ta konfiguracja pozwala używać listy wyboru w kolumnie [NazwaMaszyny] do wprowadzania identyfikatora maszyny w kolumnie [IdMaszyny]. W kontekście rekordu są również dostępne wartości {@NazwaMaszyny_value) i {@NazwaMaszyny_info).
Aby taka konfiguracja działała poprawnie, kolumna pomocnicza w zapytaniu źródłowym musi zwracać wartości identyczne jak kolumna value kontrolki.
Uwagi dodatkowe:
-
Usunięto ustawienie
Kolumna dla zapisu wartości
(core.GridColumns.DefinedControlOptions). Konsekwencje tej zmiany opisano w sekcji Wymagane działania na początku niniejszych informacji. -
Obsługiwany jest scenariusz uproszczony, w którym kontrolkę wstawia się w kolumnie o typie zgodnym z wartością [value] zwracaną przez kontrolkę. W takim przypadku w tej kolumnie zapisywana będzie wartość wybrana z listy.
-
Nie jest obsługiwany scenariusz, w którym kontrolkę wstawia się w kolumnie o typie zgodnym z wartością [key] zwracaną przez kontrolkę.
-
Można definiować zależności do innych kolumn widoku listy, w których używane są kontrolki listy rozwijanej. W takim przypadku należy przekazać wartość odpowiadającą wartości [key] z kontrolki w kolumnie zależnej. Taka konfiguracja będzie działać poprawnie, to znaczy wybór wartości w kontrolce nadrzędnej spowoduje prawidłowe ustawienie wartości w kontrolce zależnej. Nie zaleca się natomiast definiowania zależności między jedną z kolumn zwracanych przez kontrolkę, a kolumną widoku listy, w której znajduje się ta kontrolka.
3. Logi błędów - kody kontrolek
Rozszerzono funkcjonalność logowania błędów o kod kontrolki formularza, w której wystąpił błąd (parametr ControlCode). W połączeniu z nową wyszukiwarką kontrolek w kreatorze/designerze formularzy usprawni to proces diagnostyki.
4. Logi błędów - zapytania SQL
Zmodyfikowano działanie funkcji logowania błędów. Po zmianach:
- informacje szczegółowe będą logowane dla każdego błędu,
- kontekst formularza będzie logowany jako obiekt JSON, a nie tekst, co poprawi czytelność logów,
- w przypadku błędów i wyjątków SQL, w tym błędów dotyczących podstawiania wartości parametrów, logowane będzie zapytanie oraz nazwa, typ i wartość parametrów używanych w zapytaniu (o ile nie włączono ukrywania wartości parametrów w ustawieniach systemu).
Ponadto uzupełniono brakujące tłumaczenia komunikatów o błędach.
5. Tymczasowy zapis zapytania SQL
Dodano możliwość zapisania definicji akcji, formularza i widoku listy pomimo wykrytych błędów w zapytaniu SQL. Dotyczy to sytuacji, kiedy w zapytaniu występuje odwołanie do nieistniejącej kolumny lub tabeli, a w przypadku list dodatkowo następujących błędów:
- zapytanie SQL nie zwraca kolumny wskazanej jako kolumna klucza głównego,
- nazwy kolumn zwracanych przez zapytanie listy są takie same jak nazwy kolumn zwracanych przez listy wyboru używane w trybie edycji inline.
W przypadku wykrycia tego rodzaju błędu podczas zapisu wyświetlany jest odpowiedni komunikat, ale użytkownik może tymczasowo zapisać definicję z błędami. Aby zapisany obiekt działał prawidłowo, konieczne jest usunięcie błędów.
6. Wykonaj zapytanie SQL
W aplikacji AdminSPA rozszerzono możliwość wykonania dowolnego skryptu SQL (Kreator modeli danych
> Wykonaj SQL
) na inne miejsca. Odpowiedni przycisk (
) jest dostępny na pasku „breadcrumbs” z prawej strony (obok przycisków wyświetlania logów i odświeżania) oraz w oknie designera formularzy (w prawym górnym rogu). W zapytaniach nie są obsługiwane parametry systemowe ani składnia smart numbers.
7. Kontrolka wyboru interesariusza
Zmodyfikowano kontrolkę wyboru interesariuszy. Obecnie wartość wyświetlana w kontrolce odpowiada wartości zwracanej w kolumnie [value] przez zapytanie źródłowe kontrolki.
8. Konfiguracja logowania - obrazy Docker
Opracowano plik konfiguracji logowania zdarzeń dotyczących migracji w tabeli core.ImportLogs w bazie danych aplikacji w środowisku skonteneryzowanym. Plik należy umieścić w ścieżce taskservice/configs w katalogu głównym wdrożenia.
W przypadku konieczności scalenia fragmentów tego pliku z własnym plikiem konfiguracyjnym, należy skopiować definicję miejsca docelowego od linii nr 10 oraz reguły ograniczające logowanie do zdarzeń dotyczących migracji (od linii 47).
Plik jest dostępny w ścieżce Linux Docker Image/taskservice/configs/nlog-custom.configs w katalogu pobierania obrazów dokerowych dla wersji 1.14.7.0.
Poprawki i usunięte błędy
1. Akcja zapisu inline
Akcję SQL zapisu danych używaną do zapisu w trybie edycji inline rozszerzono o obsługę smart numbers.
2. Wartość ustalona
Poprawiono błąd nadpisywania wartości ustalonej przez NULL w przypadku uruchomienia akcji zapisu rekordu przed zakończeniem pobierania danych przez kontrolkę.
3. Akcja otwierania formularza
Poprawiono błąd zapisu akcji otwierania formularza. Błąd występował w przypadku zapisu akcji z zaznaczoną opcją wskazany dokument
, o ile użytkownik nie zmienił wyświetlonej wartością domyślnej {@Id}. Ta wartość nie zapisywała się i po ponownym otwarciu zaznaczona była opcja nowy dokument.
4. Akcja otwierania formularza
Poprawiono błąd, który powodował, że wartości NULL przekazywane do otwieranego formularza w akcji otwórz formularz były konwertowane na puste stringi.
5. Przekazywanie danych datetime
Naprawiono błąd powodujący zmianę wartości godziny w danych typu datetime w przypadku ich przekazywania w akcji otwierania formularza wywoływanej z pozycji listy. Błąd był spowodowany błędną obsługą strefy czasowej.
6. Filtrowanie widoku listy
Poprawiono działanie wyszukiwania wartości do filtrowania w okienku filtra dynamicznego w kolumnie typu liczbowego.
7. Kreator modeli danych
Usunięto błąd, który blokował możliwość zmiany nazwy kolumny typu int w Kreatorze modeli danych
.
8. Edycja inline
Poprawiono błąd walidacji wymagalności dla pola tekstowego w edycji inline. Pomimo wyświetlanej informacji o wymagalności pola, można było zapisać rekord bez podawania wartości.