Niezależna praktyka IFS Cloud · Modyfikacje
Dlaczego okno dialogowe i asystent w IFS Cloud nie przyjmą pola własnego i co zbudować zamiast niego
Pola własne w oknach dialogowych IFS Cloud i w jego asystentach trafiają na ograniczenie frameworka. Dla asystentów zapisuje je strona Known Limitations (znane ograniczenia) w Tailoring guide, w wydaniach 24R1 i 25R1. Dla dialogów wiemy o nim z odpowiedzi pracownika IFS w wątku społeczności z 2026 roku, więc wybór obejścia zależy od tego, z którym widokiem masz do czynienia.
Najważniejsze wnioski
- Strona Known Limitations w 25R1 stwierdza, że obecnie nie można dodawać custom attributes do asystentów. To zdanie jest w dokumentacji. To samo ograniczenie dla dialogów pochodzi z odpowiedzi w wątku społeczności, nie z tej strony.
- Dokumentacja uzasadnia to wzorcem pracy: zwykłe strony działają w układzie szukaj, zmień, zapisz, a asystent ma implementację dopasowaną do zadania. Odpowiedź w wątku podaje ten sam powód dla dialogów.
- Page Designer ma w tych widokach ograniczone możliwości konfiguracji, co opisuje dokumentacja, a odpowiedź w wątku wskazuje sposób dostępu do niego także w dialogach. Służy do zmian istniejących pól, takich jak ukrycie, etykieta czy wymagalność. Nowego pola nie doda.
- Trzy obejścia mają oparcie w dokumentacji: konfiguracja w Page Designerze, Custom Defined Events oraz Custom Entity wyświetlona na standardowej stronie. Wartości domyślne, własna strona zamiast dialogu i fragmenty projekcji opierają się na odpowiedziach z forum.
- Obejścia 1-5 działają w Extensibility Framework i nie ruszają standardowych obiektów. Obejście 6, czyli modyfikacja projekcji z fragmentami, to kod, który trzeba nosić przez każde wydanie. Obejścia różnią się kosztem utrzymania i prawdopodobieństwem, że po aktualizacji do nowego wydania będą wymagały poprawek.
W marcu 2026 klient na IFS Cloud 25R1 zapytał na IFS Community, dlaczego ekran Receive Shop Order Manually (ręczne przyjęcie z produkcji) nie przyjmuje pola własnego. Pytający zauważa, że widok jest zaimplementowany jako dialog (Dialog). Pytanie wraca w projektach modyfikacji w IFS Cloud: zakład produkcyjny chce zapisać jeszcze jedną informację, na przykład numer partii z karty technologicznej albo uwagę kontrolera jakości, dokładnie w kroku, w którym magazynier i tak pracuje, a ten krok jest dialogiem albo asystentem. Poniżej oddzielam to, co IFS dokumentuje, od tego, co pisze jedna odpowiedź na forum, i podaję tabelę decyzyjną do użycia, zanim ktokolwiek zacznie budować.
1.Co IFS dokumentuje o polach własnych w dialogach i asystentach?
Strona Known Limitations w Tailoring guide dla IFS Cloud zawiera sekcję „Custom Attributes on Assistants”. Otworzyłem ją w dokumentacji 24R1 i 25R1, a obie wersje mają ten sam tekst. Sekcja zestawia zwykłe strony aplikacji, na których użytkownik wyszukuje dane, zmienia lub dodaje informacje i jawnie zapisuje, z asystentami, które według dokumentacji mają elastyczną implementację dopasowaną do zadania. Wniosek (w moim tłumaczeniu): obecnie nie można dodawać custom attributes do asystentów.
Ta strona nie wspomina o dialogach. Ta luka ma znaczenie, bo w codziennej rozmowie „pole własne” (Custom Field) oznacza i framework Custom Attributes, i pole widoczne na ekranie, a udokumentowane zdanie jest węższe niż problem, który zgłaszają użytkownicy. Dla dialogów jedynym dowodem, jaki mogłem otworzyć, jest wątek społeczności opisany niżej.
Wprowadzenie do Page Designera (narzędzia do zmiany standardowego układu i zachowania stron) w Tailoring guide 25R1 dodaje jedną istotną informację. Na liście możliwości jest konfiguracja kroków asystentów, a obok uwaga, że dialogi i asystenci mają ograniczone możliwości konfiguracji w porównaniu ze zwykłymi stronami. Żadne z tych zdań nie obiecuje dodania nowego pola.
2.Co dodał wątek społeczności i na ile można mu ufać?
Wątek „Missing CUSTOM Functions in Dialog and Assistant Views in IFS Cloud” zawiera jedno pytanie i dwie odpowiedzi z okresu 12 do 17 marca 2026, jest oznaczony jako 25R1 i rozwiązany. Każdą odpowiedź traktuję jako to, czym jest: wypowiedzią osoby na forum, nie stroną dokumentacji.
- Odpowiedź pracownika IFS mówi, że po konsultacji z kolegami dodanie pól własnych do widoków Dialog lub Assistant standardowymi Custom Fields nie jest możliwe, bo te widoki nie odpowiadają wzorcom, których wymaga framework Custom Attributes. To jedyne źródło, jakie znalazłem, które wprost nazywa dialogi, i ma wagę odpowiedzi pracownika, nie dokumentacji.
- Odpowiedź klienta podaje ten sam powód innymi słowy (strony muszą spełniać wspólne wzorce przechowywania i implementacji) i wymienia cztery obejścia, z których autor woli jedno, bo jego zespół ma do niego kompetencje wewnętrzne.
- Żadna odpowiedź nie podaje terminu zmiany. Nie znalazłem wypowiedzi IFS o dodaniu tej możliwości w przyszłości, więc projektuj rozwiązanie pod ograniczenie w obecnym kształcie.
Drugi wątek potwierdza stronę asystentów. W marcu 2025 w wątku o wersji 24R2 pracownik IFS pisze, że większość konfiguracji Page Designera działa w asystentach, na przykład warunkowa widoczność, możliwość edycji i wymagalność pól, a niewspierane jest tylko dodawanie pól własnych do asystenta. Inny pracownik IFS w tym samym wątku pisze, że workflow BPA typu process enrichment powinien umieć uzupełniać wartości domyślne.
3.Jakie istnieją obejścia i które z nich są potwierdzone?
W wątku i dokumentacji pojawia się sześć podejść. Numery 1, 3 i 4 mają oparcie w Tailoring guide albo Administration guide dla IFS Cloud. Numery 2, 5 i 6 opierają się na odpowiedziach z forum i tak je oznaczam.
- Page Designer dla tego, co już istnieje. Page Designer zmienia etykiety, ukrywa pola, ustawia pola jako obowiązkowe i przestawia elementy. Odpowiedź klienta w wątku radzi spróbować dopisać
?showInPageDesigner=truedo adresu dialogu, żeby otworzyć na nim Page Designer, i dodaje, że pól własnych w ten sposób się nie utworzy. Ten parametr znalazłem wyłącznie w wątku, więc przetestuj go poza produkcją, zanim na nim oprzesz rozwiązanie. - Wartości domyślne w asystentach. Odpowiedź pracownika IFS w wątku o 24R2 wymienia Conditional Default Values (24R2 i 25R1) oraz workflow BPA typu process enrichment. Obie rzeczy to stwierdzenia z wątku. Dokumentacji, do której prowadzą, nie otwierałem.
- Custom Defined Events na encji bazowej. Administration guide 25R1 opisuje Custom Defined Events (zdarzenia własne) jako zdarzenia definiowane w jednej instalacji i wykonywane przez triggery bazodanowe, które odpalają się przy dodaniu, zmianie lub usunięciu wiersza. Akcją może być E-Mail, Application Message, Task, Workflow, Streams Message albo REST Call, a Execute Online SQL jest oznaczone jako deprecated. Pracownik IFS w wątku proponuje tę drogę dla logiki w tle lub walidacji po zmianie danych przez standardowe pola dialogu. To, czy dany dialog zapisuje do encji, na której można zdefiniować zdarzenie, trzeba sprawdzać osobno dla każdego dialogu.
- Custom Entity obok rekordu. Tailoring guide 25R1 dokumentuje rozszerzenie standardowej strony o Custom Entity: dodajesz ją do projekcji, na której oparta jest standardowa strona, tworzysz dla niej listę w Page Designerze i ustawiasz filtr przez asocjacje. Dodatkowe dane trafiają wtedy na stronę, z której otwiera się dialog, nie do samego dialogu. Odpowiedź klienta w wątku sugeruje ten sam kształt dla zlecenia produkcyjnego (Shop Order): Custom Entity powiązana kluczami ze zleceniem produkcyjnym.
- Standardowa strona własna zamiast dialogu. Pracownik IFS w wątku proponuje rozszerzyć encję bazową o pola własne przez framework Custom Attributes i zbudować standardową stronę własną, która oferuje funkcję dialogu, żeby użytkownicy pracowali na niej. Nie znalazłem strony dokumentacji opisującej to jako wzorzec, więc to propozycja pracownika.
- Modyfikacje projekcji i fragmenty (fragments). Klient, który preferuje tę drogę, pisze, że wymaga ona zespołu z kompetencjami wewnętrznymi. Znalazłem ją opisaną tylko w wątku. To rozwiązanie z największą ilością kodu do przeniesienia przez każde wydanie.
Tam, gdzie jedynym źródłem jest wątek, piszę „odpowiedź w wątku mówi”. Tam, gdzie obejście opisuje Tailoring guide albo Administration guide, powołuję się na dokumentację.
4.Które obejście pasuje do jakiej potrzeby?
Kolumny kosztu utrzymania i ryzyka przy aktualizacji to moja ocena z praktyki, nie ocena IFS. Traktuj je jako punkt wyjścia do rozmowy o Twoim systemie.
| Potrzeba | Obejście | Koszt utrzymania | Ryzyko przy aktualizacji | Podstawa |
|---|---|---|---|---|
| Zmiana etykiety, ukrycie albo wymagalność istniejącego pola w dialogu lub asystencie | Konfiguracja w Page Designerze | Niski | Niskie: po każdym wydaniu sprawdź konfigurację | Udokumentowane dla stron i kroków asystenta; parametr w adresie dialogu tylko z wątku |
| Wstępne wypełnienie wartości w asystencie | Conditional Default Values albo BPA process enrichment | Niski do średniego | Niskie do średniego | Odpowiedzi pracowników IFS w wątku |
| Walidacja, alert albo uruchomienie workflow po zapisie z dialogu | Custom Defined Event na encji | Średni | Średnie: warunki zależą od kolumn encji, które mogą się zmienić | Funkcja udokumentowana (Administration guide); zastosowanie przy dialogu to propozycja pracownika IFS w wątku |
| Zapis dodatkowych danych o zleceniu produkcyjnym, przyjęciu z produkcji lub podobnym rekordzie | Custom Entity z listą na stronie nadrzędnej | Średni | Niskie do średniego | Udokumentowane (Tailoring guide) |
| Zebranie dodatkowych danych w tym samym kroku, który użytkownik wykonuje dziś | Strona własna na rozszerzonej encji zamiast dialogu | Wysoki | Średnie: odpowiadasz za cały przebieg pracy użytkownika i jego uprawnienia | Propozycja pracownika IFS w wątku |
| Logika lub pola, których żadna konfiguracja nie wyrazi | Modyfikacja projekcji z fragmentami | Wysoki | Wysokie: kod do ponownego przetestowania przy każdym wydaniu | Wątek, opinia klienta |
Przechodź tabelę od góry i zatrzymaj się na pierwszym wierszu, który spełnia potrzebę. Im niżej, tym więcej rozwiązania musisz utrzymywać sam, a to ten sam rachunek, który stoi za wyborem między Quick Reports, Custom Fields i Custom Events.
5.Jak zachować czysty rdzeń, obchodząc to ograniczenie?
Clean Core oznacza, że standardowe obiekty IFS zostają bez zmian, a każda zmiana siedzi w Extensibility Framework, skąd aktualizacja do nowego wydania może ją przenieść dalej. Ograniczenie dla dialogów i asystentów popycha zespoły ku jednemu z dwóch złych nawyków: modyfikacji standardowego widoku albo stosowi nieudokumentowanych zdarzeń, których nikt nie pilnuje. Tabela powyżej pozwala uniknąć obu.
- Wybieraj wiersz, który zostawia dialog w spokoju. Custom Entity na stronie nadrzędnej albo zdarzenie na encji nic nie zmienia w samym dialogu, więc aktualizacja ma mniej do zepsucia. Podejście opisuje artykuł Rozszerzenia IFS Cloud w modelu Update-Safe.
- Zapisz, dlaczego dialogu nie rozszerzono. Jedno zdanie przy każdym obejściu, z nazwą ograniczenia i datą sprawdzenia, oszczędza następnemu konsultantowi odkrywania tego od nowa.
- Po każdej aktualizacji sprawdź zdarzenia. Zdarzenie, które przestaje się odpalać, nie zgłasza błędu. Kontrola po wydaniu powinna potwierdzić, że zdarzenia nadal zapisują ślad wykonania.
- Policz koszt, zanim wybierzesz dolny wiersz. Kod z fragmentami projekcji trzeba przetestować po każdym wydaniu, więc im niżej w tabeli, tym więcej testów regresji spada na Ciebie.
O szerszej strategii piszę na stronie konsultingowej: The Clean Core i Strategic IFS Cloud Customization (obie po angielsku).
6.Czy gotowa modyfikacja CRIMS może zastąpić budowanie od zera?
CRIMS to skrót od Configurations, Reports, Interfaces i Modifications: obiektów specyficznych dla klienta, dodawanych do standardowego IFS Cloud. Marketplace na tej stronie ma kategorię Modyfikacje, której pozycje opisano jako sprawdzone pod kątem utrzymywalności i zgodności „evergreen” z aktualizacjami IFS Cloud. To opis samej kategorii i nie mówi, jak testuje się poszczególną pozycję.
Są dwie drogi. Jeśli Twoja potrzeba pasuje do pozycji z tej kategorii, bierzesz gotowe rozwiązanie. Jeśli nie pasuje, pracę wyceniam jako budowę według tabeli decyzyjnej. W obu przypadkach proponowane podejście sprawdzam względem opisanych ograniczeń, zanim cokolwiek zostanie skonfigurowane, żeby nie powstało pole, którego framework nie przyjmie.
7.Najczęstsze pytania
Czy można dodać pola własne do asystenta w IFS Cloud?
Nie. Strona Known Limitations w Tailoring guide dla IFS Cloud, w dokumentacji 24R1 i 25R1, stwierdza, że obecnie nie można dodawać custom attributes do asystentów. Pozostała konfiguracja Page Designera, na przykład warunkowa widoczność i wymagalność pól, nadal działa w asystentach.
Czy można dodać pola własne do okna dialogowego w IFS Cloud?
Odpowiedź pracownika IFS w marcowym wątku społeczności z 2026 roku (25R1) mówi, że standardowymi Custom Fields się nie da, bo dialogi nie spełniają wzorców wymaganych przez framework Custom Attributes. Strona Known Limitations, którą sprawdziłem, nazywa asystentów i nie wspomina o dialogach, więc przed projektowaniem zweryfikuj aktualny stan dla swojego wydania.
Jaka jest bezpieczna przy aktualizacjach alternatywa dla pola własnego w oknie dialogowym IFS Cloud?
Zostaw dialog nietknięty i połóż dane obok niego. Custom Entity z listą na nadrzędnej standardowej stronie przechowuje dodatkowe dane, a Custom Defined Event na encji bazowej może zareagować, gdy dialog zmieni dane. Oba rozwiązania działają w Extensibility Framework, więc rdzeń zostaje bez zmian, a aktualizacja do nowego wydania ma mniej do zepsucia.
Czy parametr showInPageDesigner pozwala dodać pola do okna dialogowego?
Nie. Odpowiedź klienta w wątku IFS Community mówi, że dopisanie ?showInPageDesigner=true do adresu dialogu może otworzyć Page Designer, w którym zmienisz widoczność lub zachowanie istniejących pól, i stwierdza, że pól własnych w ten sposób się nie doda. Parametr znalazłem tylko w tym wątku, nie w dokumentacji IFS, więc najpierw przetestuj go w środowisku nieprodukcyjnym.
Czy Custom Event może zastąpić pole własne w oknie dialogowym?
Custom Defined Event reaguje na zmiany danych, ale nie pokaże nowego pola wejściowego w dialogu. Administration guide 25R1 opisuje zdarzenia odpalane przy dodaniu, zmianie lub usunięciu wiersza, które wykonują akcję, na przykład E-Mail, Task, Workflow albo REST Call. Zdarzenia używaj do walidacji i działań następczych, a Custom Entity albo strony własnej tam, gdzie użytkownik ma wpisać nową informację.
8.Źródła
- Known Limitations, Tailoring guide, IFS Cloud 25R1 (czytane także w wydaniu 24R1): sekcja „Custom Attributes on Assistants”.
- Introduction to Page Designer, Tailoring guide, IFS Cloud 25R1
- Extending an existing Page Model: adding a Custom Entity to a standard page, IFS Cloud 25R1
- Manage Event Actions, Administration guide, IFS Cloud 25R1
- Wątek IFS Community: Missing CUSTOM Functions in Dialog and Assistant Views in IFS Cloud (marzec 2026, 25R1)
- Wątek IFS Community: Is it Possible to Change Assistant Pages Using Configuration Only? (marzec 2025, 24R2)
- Marketplace CRIMS: Modyfikacje
Dokumentację czytano w wydaniach podanych wyżej. Ograniczenia mogą zmieniać się między wydaniami, więc sprawdź stronę Known Limitations dla wydania, z którego korzystasz. Źródła są po angielsku.
9.O autorze
Dariusz Myśliwiec: 18 lat praktyki z IFS, obecnie z IFS Cloud. IFS Certified Associate Consultant. PRINCE2® 7. Niezależna praktyka z siedzibą w Krakowie, prowadzona zdalnie dla firm w Europie i poza nią. Rozmawiasz z konsultantem, który to buduje, nie z działem sprzedaży.
Wybrani klienci z mojej pracy z IFS: Fugro · LGC · BVI Medical · Betafence (PRÆSIDIAD) · Barlinek · NGK Ceramics · Newag · Oleofarm.
IFS jest zarejestrowanym znakiem towarowym IFS AB; ta praktyka nie jest powiązana z IFS AB.
Potrzebujesz pola tam, gdzie IFS Cloud go nie przyjmie?
Przynieś mi okno dialogowe albo asystenta i dane, które trzeba zapisać. Na 30-minutowej rozmowie powiem Ci, który wiersz tabeli pasuje, czy modyfikacja CRIMS już to pokrywa i ile kosztowałoby zbudowanie oraz utrzymanie reszty.