{"id":90098,"date":"2026-10-14T13:45:00","date_gmt":"2026-10-14T11:45:00","guid":{"rendered":"https:\/\/codescriptum.pl\/blog\/konfigurator-pozwala-skonfigurowac-niemozliwy-produkt\/"},"modified":"2026-10-18T20:02:10","modified_gmt":"2026-10-18T18:02:10","slug":"konfigurator-pozwala-skonfigurowac-niemozliwy-produkt","status":"publish","type":"post","link":"https:\/\/codescriptum.pl\/blog\/konfigurator-pozwala-skonfigurowac-niemozliwy-produkt\/","title":{"rendered":"Konfigurator pozwala skonfigurowa\u0107 produkt, kt\u00f3rego nie da si\u0119 wyprodukowa\u0107 - jak ustawi\u0107 regu\u0142y"},"content":{"rendered":"<p>Konfigurator pozwala zam\u00f3wi\u0107 produkt niemo\u017cliwy do wykonania, gdy nie ma w nim regu\u0142 produkcji: zakres\u00f3w wymiar\u00f3w, opcji, kt\u00f3re si\u0119 wykluczaj\u0105, i opcji, kt\u00f3re wymagaj\u0105 innych. Naprawa polega na spisaniu tych regu\u0142 razem z produkcj\u0105 w jednej tabeli danych, z kt\u00f3rej konfigurator blokuje niedozwolone wybory i wyja\u015bnia klientowi, dlaczego.<\/p>\n<h2>Jak wygl\u0105da konfiguracja, kt\u00f3rej nie da si\u0119 wyprodukowa\u0107?<\/h2>\n<p>Na ekranie zwykle wygl\u0105da poprawnie, bo model 3D narysuje wszystko, co mu si\u0119 poda. Problem wychodzi dopiero u handlowca albo technologa, kt\u00f3ry czyta zapytanie.<\/p>\n<ul>\n<li>gara\u017c z bram\u0105 uchyln\u0105 tak szerok\u0105 jak ca\u0142a \u015bciana, bez miejsca na s\u0142upki i obr\u00f3bki,<\/li>\n<li>brama segmentowa w gara\u017cu, kt\u00f3ry ma za ma\u0142o miejsca nad otworem na prowadnice,<\/li>\n<li>hala z bram\u0105, kt\u00f3ra wypada na s\u0142upie ramy,<\/li>\n<li>ogrodzenie z bram\u0105 przesuwn\u0105 przy samym naro\u017cniku dzia\u0142ki, bez miejsca na odjazd skrzyd\u0142a,<\/li>\n<li>dwa dodatki, kt\u00f3re si\u0119 wykluczaj\u0105, np. dwa r\u00f3\u017cne rodzaje nap\u0119du do tej samej bramy.<\/li>\n<\/ul>\n<p>Ka\u017cda taka konfiguracja ko\u0144czy si\u0119 dodatkow\u0105 korespondencj\u0105 z korekt\u0105, a klient ma poczucie, \u017ce cena i wygl\u0105d z konfiguratora by\u0142y nieprawdziwe. Cz\u0119\u015b\u0107 klient\u00f3w nie czeka na wyja\u015bnienia i pyta innego producenta.<\/p>\n<h2>Dlaczego konfigurator nie blokuje niemo\u017cliwych wybor\u00f3w?<\/h2>\n<p>Bo regu\u0142y produkcji nie zosta\u0142y spisane albo zosta\u0142y wpisane w kod w kilku miejscach naraz. Konfigurator wie, jak narysowa\u0107 bram\u0119, ale nie wie, gdzie wolno j\u0105 postawi\u0107.<\/p>\n<h3>Regu\u0142y istniej\u0105 tylko w g\u0142owach<\/h3>\n<p>Technolog wie, \u017ce dany dach robi si\u0119 dopiero od okre\u015blonej szeroko\u015bci, a handlowiec, \u017ce furtka nie mo\u017ce mie\u0107 dowolnej szeroko\u015bci. Ta wiedza nie trafi\u0142a do wymaga\u0144 na konfigurator, wi\u0119c wykonawca dosta\u0142 tylko list\u0119 opcji i cennik.<\/p>\n<h3>Regu\u0142y zapisane w kodzie<\/h3>\n<p>Nawet spisane regu\u0142y bywaj\u0105 wpisane bezpo\u015brednio w kod jako warunki. Ka\u017cda zmiana w produkcji wymaga wtedy programisty, a regu\u0142y z czasem rozje\u017cd\u017caj\u0105 si\u0119 z cennikiem i katalogiem. Bywa te\u017c, \u017ce ta sama regu\u0142a jest zapisana dwa razy, raz przy modelu 3D, a raz przy formularzu, i po zmianie poprawiono tylko jedno miejsce.<\/p>\n<h3>Brak test\u00f3w na granicach<\/h3>\n<p>Konfigurator sprawdzono na kilku typowych zestawach, a nie na warto\u015bciach skrajnych: minimalnej szeroko\u015bci, maksymalnej d\u0142ugo\u015bci, najwi\u0119kszej bramie w najmniejszej \u015bcianie. W\u0142a\u015bnie tam najcz\u0119\u015bciej wychodz\u0105 niemo\u017cliwe po\u0142\u0105czenia.<\/p>\n<h2>Jakie regu\u0142y powinien mie\u0107 konfigurator produktu?<\/h2>\n<p>Wi\u0119kszo\u015b\u0107 ogranicze\u0144 produkcji da si\u0119 opisa\u0107 czterema typami regu\u0142. Ka\u017cd\u0105 zapisuj jako wiersz w tabeli, a nie jako warunek w kodzie.<\/p>\n<table>\n<thead>\n<tr>\n<th>Typ regu\u0142y<\/th>\n<th>Przyk\u0142ad<\/th>\n<th>Co robi konfigurator<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Zakres<\/td>\n<td>Szeroko\u015b\u0107 gara\u017cu od-do, z krokiem co 10 cm<\/td>\n<td>Nie przyjmuje warto\u015bci spoza zakresu, podpowiada najbli\u017csz\u0105 dozwolon\u0105<\/td>\n<\/tr>\n<tr>\n<td>Wykluczenie<\/td>\n<td>Brama przesuwna wyklucza nap\u0119d do bramy skrzyd\u0142owej<\/td>\n<td>Wyszarza opcj\u0119 i pokazuje pow\u00f3d<\/td>\n<\/tr>\n<tr>\n<td>Wymaganie<\/td>\n<td>Nap\u0119d bramy wymaga doprowadzenia zasilania<\/td>\n<td>Dodaje wymagan\u0105 pozycj\u0119 albo pyta o ni\u0105<\/td>\n<\/tr>\n<tr>\n<td>Warto\u015b\u0107 zale\u017cna<\/td>\n<td>Maksymalna szeroko\u015b\u0107 bramy to szeroko\u015b\u0107 \u015bciany minus odst\u0119py od naro\u017cnik\u00f3w<\/td>\n<td>Przelicza dozwolony zakres po ka\u017cdej zmianie wymiaru<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Najwi\u0119cej regu\u0142 zale\u017cnych maj\u0105 gara\u017ce i wiaty: szeroko\u015b\u0107 i typ bramy zale\u017c\u0105 od \u015bciany, rodzaj dachu od szeroko\u015bci, a okna i drzwi od tego, ile miejsca zostaje obok bramy. Tak projektujemy <a href=\"https:\/\/codescriptum.pl\/konfigurator-3d-garazy\/\">konfigurator 3D gara\u017cy<\/a>. W halach dochodz\u0105 regu\u0142y konstrukcji: bramy i drzwi musz\u0105 wypada\u0107 mi\u0119dzy ramami albo wymagaj\u0105 zmiany konstrukcji, kt\u00f3r\u0105 zatwierdza konstruktor, dlatego w <a href=\"https:\/\/codescriptum.pl\/konfigurator-3d-hal\/\">konfiguratorze 3D hal stalowych<\/a> rozstaw ram jest jednym z parametr\u00f3w regu\u0142. Przy ogrodzeniach regu\u0142y dotycz\u0105 przede wszystkim rozstawu s\u0142upk\u00f3w, wysoko\u015bci prz\u0119se\u0142 i miejsca na bramy i furtki, i to od nich zaczynamy, buduj\u0105c <a href=\"https:\/\/codescriptum.pl\/konfigurator-3d-ogrodzen\/\">konfigurator 3D ogrodze\u0144<\/a>.<\/p>\n<h2>Gdzie zapisa\u0107 regu\u0142y, \u017ceby zmienia\u0107 je bez programisty?<\/h2>\n<p>W tabeli danych, np. arkuszu lub panelu administracyjnym, z kt\u00f3rej konfigurator czyta regu\u0142y przy starcie. Kod zna tylko typy regu\u0142, a konkretne warto\u015bci i komunikaty s\u0105 danymi.<\/p>\n<p>Ka\u017cdy wiersz tabeli powinien mie\u0107 identyfikator regu\u0142y, warunek, skutek, komunikat dla klienta, osob\u0119, kt\u00f3ra regu\u0142\u0119 zatwierdzi\u0142a, i dat\u0119. Ta sama tabela s\u0142u\u017cy wtedy produkcji jako dokumentacja, a handlowcom jako odpowied\u017a na pytanie \u201eczy da si\u0119 to zrobi\u0107?\u201d. Regu\u0142y sprawdzaj dwa razy: w przegl\u0105darce, \u017ceby klient od razu widzia\u0142 ograniczenia, i na serwerze przy wysy\u0142ce zapytania, bo dane wys\u0142ane z przegl\u0105darki mo\u017cna zmieni\u0107.<\/p>\n<h2>Jak informowa\u0107 klienta o ograniczeniach?<\/h2>\n<p>Wyja\u015bniaj przy opcji, a nie komunikatem o b\u0142\u0119dzie na ko\u0144cu. Klient powinien widzie\u0107, dlaczego co\u015b jest niedost\u0119pne i co mo\u017ce wybra\u0107 zamiast tego. Komunikat pisz j\u0119zykiem klienta, a nie produkcji: zamiast kodu regu\u0142y lepiej \u201ebrama nie zmie\u015bci si\u0119 w tej \u015bcianie\u201d.<\/p>\n<ul>\n<li>niedost\u0119pne opcje wyszarzaj z kr\u00f3tkim powodem, np. \u201eTen dach jest dost\u0119pny od wi\u0119kszej szeroko\u015bci. Zwi\u0119ksz szeroko\u015b\u0107 albo wybierz dach jednospadowy.\u201d, zamiast je ukrywa\u0107,<\/li>\n<li>gdy zmiana wymiaru uniewa\u017cnia wcze\u015bniejszy wyb\u00f3r, poka\u017c, co si\u0119 zmieni\u0142o, zamiast poprawia\u0107 to po cichu,<\/li>\n<li>proponuj najbli\u017csz\u0105 wykonaln\u0105 wersj\u0119, np. w\u0119\u017csz\u0105 bram\u0119 albo przesuni\u0119cie okna,<\/li>\n<li>dla nietypowych potrzeb zostaw \u015bcie\u017ck\u0119 \u201ezapytaj o wykonanie indywidualne\u201d z do\u0142\u0105czon\u0105 konfiguracj\u0105.<\/li>\n<\/ul>\n<h2>Jak zbudowa\u0107 macierz test\u00f3w regu\u0142?<\/h2>\n<p>Macierz test\u00f3w to lista konkretnych konfiguracji z oczekiwanym wynikiem: dozwolona, zablokowana albo zmieniona z komunikatem. Nie obejmuje wszystkich kombinacji, tylko przypadki, w kt\u00f3rych regu\u0142y naprawd\u0119 pracuj\u0105.<\/p>\n<p>Dla regu\u0142y zakresu testuje si\u0119 warto\u015b\u0107 minimaln\u0105, maksymaln\u0105 i tu\u017c poza zakresem. Dla wyklucze\u0144 sprawdza si\u0119 obie kolejno\u015bci wyboru, czyli najpierw opcj\u0119 A, a potem B, i odwrotnie. Dla warto\u015bci zale\u017cnych zmienia si\u0119 wymiar ju\u017c po wybraniu elementu, bo cz\u0119stym \u017ar\u00f3d\u0142em b\u0142\u0119d\u00f3w jest w\u0142a\u015bnie kolejno\u015b\u0107: klient wybiera szerok\u0105 bram\u0119, a potem zmniejsza szeroko\u015b\u0107 gara\u017cu albo przesuwa bram\u0119 bli\u017cej naro\u017cnika. Macierz trzymaj obok tabeli regu\u0142, uruchamiaj j\u0105 jako testy automatyczne po ka\u017cdej zmianie, a wynik pokazuj zespo\u0142owi produktu przed publikacj\u0105 nowej wersji.<\/p>\n<h2>Co sprawdzi\u0107 przed uruchomieniem regu\u0142? Lista kontrolna<\/h2>\n<ul>\n<li>ka\u017cda opcja ma przypisane zakresy i zale\u017cno\u015bci albo \u015bwiadom\u0105 decyzj\u0119, \u017ce ich nie ma,<\/li>\n<li>regu\u0142y s\u0105 w tabeli danych, a nie w kodzie,<\/li>\n<li>ka\u017cda regu\u0142a ma komunikat zrozumia\u0142y dla klienta,<\/li>\n<li>regu\u0142y s\u0105 sprawdzane tak\u017ce na serwerze przy wysy\u0142ce zapytania,<\/li>\n<li>macierz test\u00f3w obejmuje warto\u015bci minimalne, maksymalne i tu\u017c poza zakresem,<\/li>\n<li>zesp\u00f3\u0142 produktu zatwierdzi\u0142 regu\u0142y, z dat\u0105 i nazwiskiem osoby zatwierdzaj\u0105cej.<\/li>\n<\/ul>\n<div class=\"csb-note csb-note--warn\">\n<p>Konfigurator z regu\u0142ami nie zast\u0119puje projektu konstrukcyjnego. Je\u015bli wykonalno\u015b\u0107 zale\u017cy od oblicze\u0144, np. przy nietypowo du\u017cych otworach, regu\u0142a powinna kierowa\u0107 takie konfiguracje do zapytania z weryfikacj\u0105 przez konstruktora, a nie zatwierdza\u0107 je automatycznie.<\/p>\n<\/div>\n<p>Ten problem jest jednym z naszej listy <a href=\"\/blog\/50-problemow-z-konfiguratorem-3d\/\">50 problem\u00f3w z konfiguratorem 3D produktu<\/a>, w kt\u00f3rej opisujemy te\u017c cennik, zaokr\u0105glenia i rozmieszczanie bram i okien na modelu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Konfigurator pozwala zam\u00f3wi\u0107 produkt niemo\u017cliwy do wykonania, gdy nie ma w nim regu\u0142 produkcji: zakres\u00f3w wymiar\u00f3w, opcji, kt\u00f3re si\u0119 wykluczaj\u0105, i opcji, kt\u00f3re wymagaj\u0105 innych. Naprawa polega na spisaniu tych\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[102],"tags":[],"class_list":["post-90098","post","type-post","status-publish","format-standard","hentry","category-konfiguratory-3d"],"_links":{"self":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts\/90098","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/comments?post=90098"}],"version-history":[{"count":1,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts\/90098\/revisions"}],"predecessor-version":[{"id":90130,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts\/90098\/revisions\/90130"}],"wp:attachment":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/media?parent=90098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/categories?post=90098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/tags?post=90098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}