Informacje o wersji 1.14.7.0
z dn. 07-05-2025

PDF

W tej wersji

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ę.

  1. Zdefiniuj kontrolkę:
    SELECT Id AS [key]
    , Nazwa AS [value]
    , Uwagi AS [info]
    FROM [dbo].[Maszyny]
    
  2. 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
    
  3. Skonfiguruj kontrolkę do edycji inline:
    • w kolumnie [NazwaMaszyny] ustaw kontrolkę z pkt. 1
    • zdefiniuj zależność [key]IdMaszyny
  4. 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:

  1. 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.

  2. 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.

  3. Nie jest obsługiwany scenariusz, w którym kontrolkę wstawia się w kolumnie o typie zgodnym z wartością [key] zwracaną przez kontrolkę.

  4. 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 (run-sql.png ) 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.


Copyright © 2025 OPTEAM SA. Theme Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license.