{"id":31452,"date":"2025-06-23T05:00:00","date_gmt":"2025-06-23T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=31452"},"modified":"2025-06-12T15:30:03","modified_gmt":"2025-06-12T13:30:03","slug":"powerfx-programowanie-w-prostym-stylu-zbuduj-aplikacje-bez-wysilku","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/powerfx-programowanie-w-prostym-stylu-zbuduj-aplikacje-bez-wysilku\/","title":{"rendered":"PowerFX: Programowanie w prostym stylu \u2013 zbuduj aplikacj\u0119 bez wysi\u0142ku"},"content":{"rendered":"\n<p>W \u015bwiecie <em>Power Platform<\/em> pojawi\u0142o si\u0119 rozwi\u0105zanie, kt\u00f3re ma szans\u0119 u\u0142atwi\u0107 tworzenie oraz modyfikacj\u0119 aplikacji, a zarazem sprawi\u0107, \u017ce b\u0119dzie to jeszcze przyjemniejsze ni\u017c dotychczas. Mowa o low-codowym j\u0119zyku programowania stworzonym przez firm\u0119 Microsoft zwanym <strong>PowerFX<\/strong>. Je\u015bli pracujesz z <em>Microsoft Dataverse<\/em> oraz korzystasz z <em>Power Apps<\/em>, prawdopodobnie ju\u017c go widzia\u0142e\u015b, nawet je\u015bli nie wiedzia\u0142e\u015b, \u017ce to on.<\/p>\n\n\n\n<p>PowerFX to j\u0119zyk, kt\u00f3ry pozwala tworzy\u0107 logik\u0119 aplikacji w spos\u00f3b prosty, przejrzysty i\u2026 zrozumia\u0142y praktycznie dla ka\u017cdego. Nie musisz by\u0107 programist\u0105, \u017ceby poczu\u0107 si\u0119, jakby\u015b nim by\u0142. W artykule przyjrzymy si\u0119 mu z bliska.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Czym w\u0142a\u015bciwie jest PowerFX?<\/strong><\/h2>\n\n\n\n<p>PowerFX to low-codowy, silnie typowany, deklaratywny j\u0119zyk programowania stworzony w 2021 roku przez Microsoft specjalnie na potrzeby <em>Power Platform<\/em>. Pocz\u0105tkowo za jego pomoc\u0105 mo\u017cna by\u0142o dodawa\u0107 logik\u0119 do aplikacji kreowanych jedynie w <em>Canvas Apps<\/em>, jednak z czasem sta\u0142 si\u0119 on dost\u0119pny w coraz wi\u0119kszej ilo\u015bci miejsc. Aktualnie mo\u017cna go r\u00f3wnie\u017c wykorzystywa\u0107, tworz\u0105c rozwi\u0105zania w <em>Datavers<\/em>e, <em>Power Virtual Agents<\/em>, <em>Power Pages<\/em> czy <em>Power Automate<\/em>.<\/p>\n\n\n\n<p>Jego <strong>najwi\u0119kszym atutem jest prostota<\/strong> i to w\u0142a\u015bnie ten cel przy\u015bwieca\u0142 jego powstaniu. W za\u0142o\u017ceniu mia\u0142 on przypomina\u0107 formu\u0142y znane z programu <em>Microsoft Excel<\/em>, a zarazem pozwala\u0107 na tworzenie rozwi\u0105za\u0144 w aplikacjach biznesowych w r\u00f3wnie \u0142atwy spos\u00f3b jak tworzenie arkuszy kalkulacyjnych. Dlatego zar\u00f3wno kto\u015b z wiedz\u0105 programistyczn\u0105 jak i kompletny laik jest w stanie go zrozumie\u0107 i u\u017cy\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Do czego si\u0119 nada?<\/strong><\/h3>\n\n\n\n<p>Je\u015bli pracujesz z aplikacjami stworzonymi w \u015brodowisku <em>Power Platform<\/em>, wcze\u015bniej czy p\u00f3\u017aniej staniesz przed potrzeb\u0105 wprowadzenia w\u0142asnych modyfikacji. PowerFX jest narz\u0119dziem, kt\u00f3re da ci tak\u0105 mo\u017cliwo\u015b\u0107 &nbsp;<strong>bez pisania skomplikowanego kodu. <\/strong>Nie zast\u0105pi on wszystkich rozwi\u0105za\u0144, kt\u00f3re umo\u017cliwiaj\u0105 nam te oparte na kodzie (jak Dataverse Plugins czy Scripts), ale \u015bwietnie nada si\u0119 do mniejszych rzeczy, na przyk\u0142ad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>walidacja danych,<\/li>\n\n\n\n<li>aktualizacja danych w wybranych rekordach,<\/li>\n\n\n\n<li>filtrowanie wy\u015bwietlanych informacji w czasie rzeczywistym,<\/li>\n\n\n\n<li>sortowanie,<\/li>\n\n\n\n<li>przeliczanie warto\u015bci,<\/li>\n\n\n\n<li>wy\u015bwietlanie ostrze\u017ce\u0144 dla u\u017cytkownika,<\/li>\n\n\n\n<li>blokowanie przycisk\u00f3w w zale\u017cno\u015bci od potrzeby,<\/li>\n\n\n\n<li>prze\u0142\u0105czanie pomi\u0119dzy widokami.<\/li>\n<\/ul>\n\n\n\n<p>W dodatku PowerFX to rozwi\u0105zanie open-sourcowe. Jego kod jest publiczny i jawny. Oznacza to, \u017ce ka\u017cdy mo\u017ce dostosowywa\u0107 go do w\u0142asnych potrzeb, wsp\u00f3\u0142tworzy\u0107, oraz \u017ce spo\u0142eczno\u015b\u0107 Power Platformowa mo\u017ce go ci\u0105gle rozwija\u0107. Jest to <strong>ca\u0142kowicie darmowe<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Co musisz wiedzie\u0107, zanim zaczniesz?<\/strong><\/h2>\n\n\n\n<p>Pisz\u0105c formu\u0142y za pomoc\u0105 j\u0119zyka PowerFX, trzeba pami\u0119ta\u0107, \u017ce wszelkie zmiany, kt\u00f3re wprowadzaj\u0105, dziej\u0105 si\u0119 w czasie rzeczywistym. Co za tym idzie \u2013 je\u015bli zmienimy co\u015b w naszym \u201ekodzie\u201d, zmiana ta b\u0119dzie wprowadzona do aplikacji natychmiastowo. Jednak nie ma czego si\u0119 ba\u0107. Inni u\u017cytkownicy nie zobacz\u0105 tych zmian dop\u00f3ki ich nie opublikujemy. My jednak b\u0119dziemy mie\u0107 mo\u017cliwo\u015b\u0107 sprawdzenia ich od razu w trybie podgl\u0105du, kt\u00f3ry jest nam oferowany.<\/p>\n\n\n\n<p>Ponadto, wszystkie operacje, za kt\u00f3re odpowiedzialny jest PowerFX, s\u0105 asynchroniczne, wi\u0119c mimo to, \u017ce wszystko dzieje si\u0119 \u201ena \u017cywo\u201d, niekt\u00f3re operacje mog\u0105 by\u0107 realizowane w tle i na rezultat ich dzia\u0142ania musimy chwil\u0119 poczeka\u0107.<\/p>\n\n\n\n<p>Za\u0142\u00f3\u017cmy, \u017ce chcesz pobra\u0107 dane z zewn\u0119trznego \u017ar\u00f3d\u0142a, np. z <em>SharePointa<\/em>. System mo\u017ce potrzebowa\u0107 chwili, \u017ceby dosta\u0107 si\u0119 do nich i odpowiednio je przetworzy\u0107, a p\u00f3\u017aniej poprawnie wy\u015bwietli\u0107. Jednak aplikacja nie zawiesi si\u0119, czekaj\u0105c na zako\u0144czenie tej operacji. B\u0119dzie dalej dzia\u0142a\u0107 normalnie, jedynie dane mog\u0105 zosta\u0107 za\u0142adowane odrobin\u0119 p\u00f3\u017aniej. Inaczej m\u00f3wi\u0105c: <strong>Power Fx nie zatrzymuje dzia\u0142ania aplikacji, czekaj\u0105c, a\u017c dane zostan\u0105 w pe\u0142ni pobrane<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Sk\u0142adnia<\/strong><\/h2>\n\n\n\n<p>Rozpoczynaj\u0105c prac\u0119 z j\u0119zykiem programowania, bez wzgl\u0119du na to, czy jest on low-codowy, czy te\u017c nie, wa\u017cnym jest, aby zwr\u00f3ci\u0107 uwag\u0119 na jego sk\u0142adni\u0119. Ka\u017cdy z nich ma swoje zasady na kt\u00f3re trzeba uwa\u017ca\u0107.<\/p>\n\n\n\n<p>Tak jest te\u017c i w przypadku <em>PowerFX<\/em>. Pisz\u0105c formu\u0142y, trzeba pami\u0119ta\u0107, \u017ce funkcje musz\u0105 posiada\u0107 nawiasy okr\u0105g\u0142e, a cz\u0119sto na ko\u0144cu powinien znale\u017a\u0107 si\u0119 \u015brednik rozdzielaj\u0105cy od siebie dwa zapytania czy dwa warunki np. w funkcji <em>Je\u017celi<\/em>.<\/p>\n\n\n\n<p>Ponadto jest to j\u0119zyk, kt\u00f3ry mo\u017cna opisa\u0107 jako <em>case sensitive<\/em>. Innymi s\u0142owy \u2013 <strong>wielko\u015b\u0107 liter ma tutaj ogromne znaczenie<\/strong>. Zar\u00f3wno je\u015bli chodzi o wywo\u0142ywanie funkcji czy pisanie nazwy zmiennej. Wszystkie nazwy funkcji, kt\u00f3rych wywo\u0142ywanie umo\u017cliwia PowerFx, musz\u0105 zaczyna\u0107 si\u0119 od wielkiej litery.<\/p>\n\n\n\n<p>Kolejn\u0105 wa\u017cn\u0105 rzecz\u0105 dotycz\u0105c\u0105 sk\u0142adni mo\u017ce by\u0107 to, \u017ce <strong>dane s\u0105 tutaj relacyjne<\/strong>. Co to oznacza? PowerFX pozwala na dostanie si\u0119 do wszelkich relacji rekordu za pomoc\u0105 prostej notacji kropkowej. Na przyk\u0142ad taki zapis <em>ThisItem.<\/em> pozwoli nam na dostanie si\u0119 do wszelkich atrybut\u00f3w danego rekordu. System automatycznie podpowie nam, jakie pola czy te\u017c atrybuty znajduj\u0105 si\u0119 w wymienionym przez nas obiekcie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Przyk\u0142adowe funkcje<\/strong><\/h3>\n\n\n\n<p><em>Copy(ThisItem.&#8217;Plate number&#8217;);; Notify(&#8222;Plate number copied to clipboard&#8221;);; Set(varPlateNumber; ThisItem.&#8217;Plate number&#8217;)<\/em><\/p>\n\n\n\n<p>Jak mo\u017cna zauwa\u017cy\u0107, ka\u017cda z funkcji tj. <strong>Copy<\/strong>, <strong>Notify<\/strong> oraz <strong>Set<\/strong>, aby zosta\u0107 wywo\u0142an\u0105, posiada nawias i dopiero w nim s\u0105 zawarte przekazywane przez nas argumenty. Ponadto, pomi\u0119dzy funkcjami znajduj\u0105 si\u0119 podw\u00f3jne \u015bredniki. Gdyby ich nie by\u0142o albo \u015brednik by\u0142 pojedynczy, system poinformowa\u0142by nas o b\u0142\u0119dzie, zamiast wywo\u0142ywa\u0107 jak\u0105kolwiek z funkcji.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"903\" height=\"83\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image1-2.png\" alt=\"notify\" class=\"wp-image-31453\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image1-2.png 903w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image1-2-300x28.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image1-2-768x71.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image1-2-900x83.png 900w\" sizes=\"(max-width: 903px) 100vw, 903px\" \/><figcaption class=\"wp-element-caption\">Ryc. 1 Notify<\/figcaption><\/figure>\n\n\n\n<p>Podobnie wygl\u0105da sprawa z nieodpowiedni\u0105 wielko\u015bci\u0105 liter. Je\u017celi w systemie istnieje zmienna zapisana jako Plate number, a my spr\u00f3bujemy j\u0105 wyszuka\u0107, wpisuj\u0105c plate number albo Plate Number, to system nie b\u0119dzie w stanie znale\u017a\u0107 takiego pola.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"688\" height=\"85\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image2-2.png\" alt=\"copy\" class=\"wp-image-31455\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image2-2.png 688w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image2-2-300x37.png 300w\" sizes=\"(max-width: 688px) 100vw, 688px\" \/><figcaption class=\"wp-element-caption\">Ryc. 2 Copy<\/figcaption><\/figure>\n\n\n\n<p>Odrobin\u0119 inn\u0105 informacj\u0119 dostaniemy, je\u017celi nazwa funkcji b\u0119dzie napisana ma\u0142\u0105 liter\u0105. System poinformuje nas, \u017ce rozpozna\u0142 dan\u0105 funkcj\u0119, ale jej nie obs\u0142uguje.<\/p>\n\n\n\n<p>Pomimo wszystkich tych zasad, napisanie prostego zapytania w PowerFX jest naprawd\u0119 bardzo \u0142atwe. Pisz\u0105c Dataverse Plugin, je\u015bli chcieliby\u015bmy wykona\u0107 proste dzia\u0142anie matematyczne, kt\u00f3re zaktualizowa\u0142oby warto\u015b\u0107 w jednym z p\u00f3l w wybranym przez nas rekordzie, musieliby\u015bmy przej\u015b\u0107 przez kilka krok\u00f3w. Natomiast za pomoc\u0105 PowerFX ca\u0142a ta operacja mo\u017ce by\u0107 zapisana w jednej linijce:<\/p>\n\n\n\n<p>Patch(&#8217;Exam; Exam<em>Gallery<\/em>.Selected; {&#8217;Cost price&#8217;:<em>Value(TextBox2.Value) * Value(TextBox1.Value)<\/em>});;<\/p>\n\n\n\n<p>Taka prosta formu\u0142a pomno\u017cy\u0142aby warto\u015bci z p\u00f3l TextBox1 i TextBox2, po czym zaktualizowa\u0142aby pole o nazwie Cost price znajduj\u0105ce si\u0119 w tabeli Exam w Dataverse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Operatory<\/strong><\/h2>\n\n\n\n<p>W PowerFX wyst\u0119puj\u0105 podstawowe operatory arytmetyczne i logiczne, kt\u00f3re cz\u0119sto s\u0105 takie same jak w programie Excel. Szczeg\u00f3lnie, je\u015bli chodzi o operatory arytmetyczne np<em>. +, -, *, \/, ^,%<\/em> . Chocia\u017c s\u0105 te\u017c pomi\u0119dzy nimi r\u00f3\u017cnice. PowerFX pozwala nam na wyb\u00f3r zapisu w przypadku trzech operator\u00f3w logicznych, na co Microsoft Excel by nam nie pozwoli\u0142.<\/p>\n\n\n\n<p>Te operatory to:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>&amp;&amp; czy And<\/li>\n\n\n\n<li>|| czy Or<\/li>\n\n\n\n<li>! czy Not<\/li>\n<\/ol>\n\n\n\n<p>W tradycyjnym Excelu musieliby\u015bmy u\u017cy\u0107 s\u0142owa AND, OR lub NOT, ale w PowerFX mo\u017cemy wybra\u0107, kt\u00f3ry zapis nam bardziej odpowiada i jest dla nas czytelniejszy. Angielskie nazwy bardziej kojarz\u0105 si\u0119 nam z formu\u0142ami Excela, a drugi spos\u00f3b bardziej przypomina operatory u\u017cywane w innych j\u0119zykach programowania. Ten przyk\u0142ad pokazuje r\u00f3wnie\u017c, \u017ce PowerFX jest czym\u015b pomi\u0119dzy programowaniem a pisaniem formu\u0142.<\/p>\n\n\n\n<p>Przyk\u0142adowo w PowerFX mo\u017cemy napisa\u0107:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"657\" height=\"136\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image3-2.png\" alt=\"operator &amp;&amp;\" class=\"wp-image-31457\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image3-2.png 657w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image3-2-300x62.png 300w\" sizes=\"(max-width: 657px) 100vw, 657px\" \/><figcaption class=\"wp-element-caption\">Ryc. 3 Operator &amp;&amp;<\/figcaption><\/figure>\n\n\n\n<p>Jednak ten sam warunek mo\u017cemy r\u00f3wnie\u017c zapisa\u0107 jako:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"660\" height=\"123\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image4-2.png\" alt=\"aoperator and\" class=\"wp-image-31459\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image4-2.png 660w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/image4-2-300x56.png 300w\" sizes=\"(max-width: 660px) 100vw, 660px\" \/><figcaption class=\"wp-element-caption\">Ryc. 4 Operator And<\/figcaption><\/figure>\n\n\n\n<p>Oba zapisy s\u0105 prawid\u0142owe i zadzia\u0142aj\u0105 tak samo. System sprawdzi, czy podany wiek u\u017cytkownika mie\u015bci si\u0119 w przedziale pomi\u0119dzy 18 a 65, a nast\u0119pnie na podstawie tej informacji wy\u015bwietli odpowiedni komunikat.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"459\" height=\"224\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/5.jpg\" alt=\"komunikaty\" class=\"wp-image-31465\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/5.jpg 459w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/5-300x146.jpg 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><figcaption class=\"wp-element-caption\">Ryc. 5 Komunikaty<\/figcaption><\/figure>\n\n\n\n<p>PowerFX posiada r\u00f3wnie\u017c specjalne operatory typowe jedynie dla siebie. Takim przyk\u0142adem mog\u0105 by\u0107 <em>in<\/em> oraz <em>exactin<\/em>. Oba s\u0105 odpowiedzialne za sprawdzenie, czy dana warto\u015b\u0107 wyst\u0119puje w kolekcji (np. w danej tabeli czy li\u015bcie). R\u00f3\u017cnica mi\u0119dzy nimi jest taka, \u017ce in jest case-insensitive, a exactin jest case-sensitive. Innymi s\u0142owy exactin jest dok\u0142adniejszy w przeszukiwaniu kolekcji przez to, \u017ce zwraca uwag\u0119 na dok\u0142adny zapis danych wyra\u017ce\u0144, co czasami te\u017c jest niezb\u0119dne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Typy danych<\/strong><\/h2>\n\n\n\n<p>Kolejn\u0105 wa\u017cn\u0105 rzecz\u0105 s\u0105 dost\u0119pne typy danych. Musimy je mie\u0107 na uwadze zar\u00f3wno wtedy, kiedy dzia\u0142amy na danych wyst\u0119puj\u0105cych w Dataversie, jak i wtedy, gdy za pomoc\u0105 j\u0119zyka Power Fx odczytujemy dane z zewn\u0119trznego \u017ar\u00f3d\u0142a np. \u015brodowiska Sharepoint. Wszystkie dane z Sharepointa s\u0105 wtedy mapowane na te dost\u0119pne w PowerFX.<\/p>\n\n\n\n<p>Wyst\u0119puj\u0105 tu standardowe typy, kt\u00f3re dost\u0119pne s\u0105 w wielu innych j\u0119zykach, takie jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DateTime,<\/li>\n\n\n\n<li>Number,<\/li>\n\n\n\n<li>Decimal,<\/li>\n\n\n\n<li>Text,<\/li>\n\n\n\n<li>Boolean.<\/li>\n<\/ul>\n\n\n\n<p>Jednak s\u0105 te\u017c te mniej oczywiste:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Color,<\/li>\n\n\n\n<li>Hyperlink,<\/li>\n\n\n\n<li>GUID,<\/li>\n\n\n\n<li>Media,<\/li>\n\n\n\n<li>Image,<\/li>\n\n\n\n<li>Record.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/oferty-pracy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/praca-m-1.jpg\" alt=\"oferty pracy\" class=\"wp-image-31467\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/praca-m-1.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/praca-m-1-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Rozwi\u0105zanie jakim jest PowerFX nie zast\u0105pi innych j\u0119zyk\u00f3w programowania i nie daje nam niesko\u0144czonych mo\u017cliwo\u015bci modyfikacji logiki znajduj\u0105cej si\u0119 w naszej aplikacji stworzonej w \u015brodowisku Power Platform. Jednak jest to low-codowy j\u0119zyk, kt\u00f3ry umo\u017cliwia tworzenie oraz modyfikacj\u0119 aplikacji biznesowych <strong>osobom nietechnicznym.<\/strong><\/p>\n\n\n\n<p>Jego si\u0142a le\u017cy w prostocie i blisko\u015bci do programu Microsoft Excel. Je\u015bli pracujesz w \u015brodowisku Power Platform i chcesz zacz\u0105\u0107 tworzy\u0107 lub modyfikowa\u0107 aplikacje biznesowe bez zag\u0142\u0119biania si\u0119 w klasyczne j\u0119zyki programowania, <strong>PowerFX jest idealny dla ciebie<\/strong>.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;31452&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;8&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 8)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;PowerFX: Programowanie w prostym stylu \u2013 zbuduj aplikacj\u0119 bez wysi\u0142ku&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 8)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>W \u015bwiecie Power Platform pojawi\u0142o si\u0119 rozwi\u0105zanie, kt\u00f3re ma szans\u0119 u\u0142atwi\u0107 tworzenie oraz modyfikacj\u0119 aplikacji, a zarazem sprawi\u0107, \u017ce b\u0119dzie &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/powerfx-programowanie-w-prostym-stylu-zbuduj-aplikacje-bez-wysilku\/\">Continued<\/a><\/p>\n","protected":false},"author":722,"featured_media":31469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[2843,1806,1546,1512],"class_list":["post-31452","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-powerfx","tag-power-platform","tag-przeglad-narzedzi","tag-poradnik"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/06\/Coding-1.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31452"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/722"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=31452"}],"version-history":[{"count":1,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31452\/revisions"}],"predecessor-version":[{"id":31471,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31452\/revisions\/31471"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/31469"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=31452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=31452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=31452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}