{"id":9267,"date":"2025-04-14T13:29:17","date_gmt":"2025-04-14T11:29:17","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/640\/?post_type=ht_kb&#038;p=9267"},"modified":"2025-04-14T14:23:30","modified_gmt":"2025-04-14T12:23:30","slug":"skladnia-oql","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/","title":{"rendered":"Sk\u0142adnia OQL"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Wprowadzenie\" >Wprowadzenie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Grupa_docelowa\" >Grupa docelowa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Wymagania_wstepne\" >Wymagania wst\u0119pne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Konwencje\" >Konwencje<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Opis\" >Opis<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Komentarze\" >Komentarze<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Zapytania\" >Zapytania<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Proste_zapytanie_za_pomoca_getObjectIterator\" >Proste zapytanie za pomoc\u0105 getObjectIterator<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Zapytania_za_pomoca_getResultSet\" >Zapytania za pomoc\u0105 getResultSet<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Modyfikacje\" >Modyfikacje<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Usuwanie_obiektow_biznesowych_za_pomoca_DELETE\" >Usuwanie obiekt\u00f3w biznesowych za pomoc\u0105 DELETE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Zmiana_obiektow_biznesowych_za_pomoca_UPDATE\" >Zmiana obiekt\u00f3w biznesowych za pomoc\u0105 UPDATE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Tworzenie_nowych_obiektow_biznesowych_za_pomoca_INSERT\" >Tworzenie nowych obiekt\u00f3w biznesowych za pomoc\u0105 INSERT<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Funkcje_znacznika_czasu_i_daty\" >Funkcje znacznika czasu i daty<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#SYSTEMTIME\" >SYSTEMTIME<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Funkcja_toTimeStamp\" >Funkcja toTimeStamp()<\/a><ul class='ez-toc-list-level-6' ><li class='ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Okreslanie_stalych_znacznika_czasu\" >Okre\u015blanie sta\u0142ych znacznika czasu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Okreslanie_stalych_daty\" >Okre\u015blanie sta\u0142ych daty<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Odtwarzanie_wyszukiwania\" >Odtwarzanie wyszukiwania<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Stale_znacznika_czasu\" >Sta\u0142e znacznika czasu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Funkcja_toTimeZoneGuid\" >Funkcja toTimeZoneGuid()<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/skladnia-oql\/#Rozszerzenia_skladni_OQL_dla_obiektu_deweloperskiego_Search\" >Rozszerzenia sk\u0142adni OQL dla obiektu deweloperskiego Search<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3 id=\"wprowadzenie\" id=\"wprowadzenie\" ><span class=\"ez-toc-section\" id=\"Wprowadzenie\"><\/span>Wprowadzenie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Poszczeg\u00f3lni producenci u\u017cywaj\u0105 w komunikacji z bazami danych r\u00f3\u017cnych interfejs\u00f3w lub r\u00f3\u017cnych dialekt\u00f3w j\u0119zyka SQL. Aby t\u0119 komunikacj\u0119 ujednolici\u0107 zaimplementowano j\u0119zyk Object Query Language (OQL) bazuj\u0105cy na modelu obiektowym i relacyjnym. OQL jest oparty na standardzie SQL. OQL jest wspierany, w podobnym zakresie funkcjonowania jak SQL, dla wszystkich wymienionych tu system\u00f3w zarz\u0105dzania bazami danych. Przy jego t\u0142umaczeniu charakterystyczne nazwy dla Comarch ERP Enterprise zostaj\u0105 przekszta\u0142cane w techniczne nazwy baz danych, zgodnie z za\u0142o\u017ceniami przestrzeni nazw. Przez to powstaj\u0105 unikalne odniesienia do obiekt\u00f3w, a niezgodno\u015bci nazw w systemie zostaj\u0105 wykluczone.<\/p>\n<p><span style=\"color: #000000;\">Object Manager <\/span>zapewnia deweloperowi aplikacji prosty spos\u00f3b dost\u0119pu do danych. Zapewnia on indywidualne operacje odczytu, wstawiania, zmiany i usuwania obiekt\u00f3w biznesowych. Ponadto programista aplikacji mo\u017ce u\u017cywa\u0107 zapyta\u0144 OQL w celu jednoczesnego przetwarzania wielu instancji obiekt\u00f3w biznesowych. OQL i Object Manager tworz\u0105 interfejs do baz danych dla tw\u00f3rcy aplikacji. Oba korzystaj\u0105 wewn\u0119trznie z niezale\u017cnego od platformy protoko\u0142u JDBC\u2122. R\u00f3\u017cne sterowniki JDBC\u2122 s\u0105 zwykle dostarczane z dodatkowymi parametrami specyficznymi dla producenta, z kt\u00f3rych niekt\u00f3re s\u0105 u\u017cywane przez Comarch ERP Enterprise w celu skorzystania ze specjalnych funkcji system\u00f3w zarz\u0105dzania bazami danych i wykorzystania potencjalnego wzrostu wydajno\u015bci.<\/p>\n<h3 id=\"grupa-docelowa\" ><span class=\"ez-toc-section\" id=\"Grupa_docelowa\"><\/span>Grupa docelowa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Tw\u00f3rcy aplikacji<\/li>\n<li>Administratorzy<\/li>\n<li>U\u017cytkownicy posiadaj\u0105cy wiedz\u0119 techniczn\u0105<\/li>\n<\/ul>\n<h3 id=\"wymagania-wstepne\" ><span class=\"ez-toc-section\" id=\"Wymagania_wstepne\"><\/span>Wymagania wst\u0119pne<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Podstawy znajomo\u015bci Persistence service Comarch ERP Enterprise, znajomo\u015b\u0107 OQL i SQL.<\/p>\n<h3 id=\"konwencje\" ><span class=\"ez-toc-section\" id=\"Konwencje\"><\/span>Konwencje<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sk\u0142adnia Object Query Language (OQL) zostanie wyja\u015bniona za pomoc\u0105 diagram\u00f3w sk\u0142adni. Diagram sk\u0142adni sk\u0142ada si\u0119 z kilku podstawowych element\u00f3w i jest czytany od lewej do prawej i od g\u00f3ry do do\u0142u zgodnie z kierunkiem strza\u0142ki. Je\u015bli elementy mog\u0105 pojawi\u0107 si\u0119 wi\u0119cej ni\u017c raz w wyra\u017ceniu OQL, strza\u0142ka prowadzi z powrotem do odpowiedniego elementu.<\/p>\n<p>Je\u015bli:<\/p>\n<ul>\n<li>bloki s\u0105 z zaokr\u0105glonymi rogami reprezentuj\u0105 proste ci\u0105gi znak\u00f3w<\/li>\n<li>teksty nie s\u0105 oznaczone kursyw\u0105, symbolizuj\u0105 s\u0142owa kluczowe lub operatory j\u0119zyka OQL. W s\u0142owach kluczowych nie jest rozr\u00f3\u017cniana wielko\u015b\u0107 liter<\/li>\n<li>bloki s\u0105 zaokr\u0105glone oraz teksty pisane s\u0105 kursyw\u0105, symbole te reprezentuj\u0105 dane wej\u015bciowe u\u017cytkownika.<\/li>\n<\/ul>\n<p>Istniej\u0105 nast\u0119puj\u0105ce symbole tego typu:<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 175px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Element <\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PATH<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Oznacza dwa lub wi\u0119cej element\u00f3w ID, ka\u017cdy oddzielony znakiem &#8222;.&#8221;. Na przyk\u0142ad struktura nazwy obiektu biznesowego: com.cisag.app.general.obj.Item.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">ID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Nazwa stosowana dla poszczeg\u00f3lnych element\u00f3w. W zale\u017cno\u015bci od kontekstu mo\u017ce oznacza\u0107 nazw\u0119 Business Object, atrybut Business Object lub przestrze\u0144 nazw. Nazwa musi zaczyna\u0107 si\u0119 liter\u0105, dalej w dowolnej kolejno\u015bci mo\u017cna u\u017cywa\u0107 liter, cyfr lub znak\u00f3w \u201e_\u201c, \u201e$\u201c oraz \u201e#\u201c.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">QUOTEDPATH<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Element oznacza ID lub PATH, w podw\u00f3jnym cudzys\u0142owie. Je\u015bli nazwa pisana jest jak s\u0142owo kluczowe OQL, musi zaczyna\u0107 si\u0119 i ko\u0144czy\u0107 podw\u00f3jnym cudzys\u0142owiem.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">STRING_LITERAL<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Ci\u0105g znak\u00f3w. Ci\u0105g ten musi zaczyna\u0107 si\u0119 i ko\u0144czy\u0107 pojedynczym cudzys\u0142owiem.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">INTEGER_LITERAL<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Liczba ca\u0142kowita.<\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 50%; height: 14px; border-style: outset;\">FLOATINGPOINT_LITERAL<\/td>\n<td style=\"width: 50%; height: 14px; border-style: outset;\">Liczba zmiennoprzecinkowa.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">EOF<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Koniec wyra\u017cenia OQL.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li>kwadratowe bloki oznaczaj\u0105 wyra\u017cenia sk\u0142adniowe, kt\u00f3re symbolizuj\u0105 bardziej z\u0142o\u017cone podwyra\u017cenia.<\/li>\n<\/ul>\n<h3 id=\"opis\" ><span class=\"ez-toc-section\" id=\"Opis\"><\/span>Opis<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>OQL oferuje mo\u017cliwo\u015b\u0107 tworzenia zapyta\u0144 w celu odczytu okre\u015blonych danych z bazy danych. Mo\u017cliwe jest r\u00f3wnie\u017c tworzenie, zmienianie lub usuwanie obiekt\u00f3w biznesowych w bazie danych za pomoc\u0105 OQL. Mened\u017cer obiekt\u00f3w (com.cisag.pgm.appserver.CisObjectManager) oferuje kilka metod, kt\u00f3re mi\u0119dzy innymi oczekuj\u0105 wyra\u017cenia OQL jako parametru transferowy:<\/p>\n<ul>\n<li>getObjectIterator<\/li>\n<li>getResultSet<\/li>\n<li>getUpdateStatement<\/li>\n<\/ul>\n<h4 id=\"komentarze\" ><span class=\"ez-toc-section\" id=\"Komentarze\"><\/span>Komentarze<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Mo\u017cliwe jest u\u017cycie komentarzy w zapytaniu OQL. Mog\u0105 one by\u0107 u\u017cywane na przyk\u0142ad do dokumentowania instrukcji OQL. Istniej\u0105 dwa sposoby okre\u015blenia komentarza:<\/p>\n<ul>\n<li>w osobnej linii, kt\u00f3ra musi zaczyna\u0107 si\u0119 od znacznika &#8222;&#8211;&#8222;<\/li>\n<li>poprzez etykietowanie z pocz\u0105tkiem komentarza &#8222;\/*&#8221; i ko\u0144cem komentarza &#8222;*\/&#8221;.<\/li>\n<\/ul>\n<h4 id=\"zapytania\" ><span class=\"ez-toc-section\" id=\"Zapytania\"><\/span>Zapytania<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Istniej\u0105 dwa r\u00f3\u017cne sposoby dost\u0119pu do danych z Business Objects: Metoda getObjectIterator zwraca iterator z wyst\u0105pieniami obiekt\u00f3w biznesowych, a metoda getResultset zwraca kolumny okre\u015blone w zapytaniu OQL.<\/p>\n<h5 id=\"proste-zapytanie-za-pomoca-getobjectiterator\" ><span class=\"ez-toc-section\" id=\"Proste_zapytanie_za_pomoca_getObjectIterator\"><\/span>Proste zapytanie za pomoc\u0105 getObjectIterator<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Metoda getObjectIterator zwraca iterator instancji obiekt\u00f3w biznesowych okre\u015blonego typu obiektu biznesowego. W zapytaniu OQL mo\u017cna okre\u015bli\u0107, czy maj\u0105 zosta\u0107 zwr\u00f3cone wszystkie instancje obiektu biznesowego, czy tylko instancje spe\u0142niaj\u0105ce okre\u015blone warunki. Sk\u0142adnia zapytania OQL akceptowanego przez t\u0119 metod\u0119 ma nast\u0119puj\u0105c\u0105 struktur\u0119:<\/p>\n<figure id=\"attachment_28420\" aria-describedby=\"caption-attachment-28420\" style=\"width: 539px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28420\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_1.jpg\" alt=\"\" width=\"539\" height=\"198\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_1.jpg 539w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_1-300x110.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_1-50x18.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_1-320x118.jpg 320w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><\/a><figcaption id=\"caption-attachment-28420\" class=\"wp-caption-text\">Sk\u0142adnia wyra\u017cenia OQL dla getObjectIterator<\/figcaption><\/figure>\n<p><strong>Sk\u0142adnia wyra\u017cenia OQL dla getObjectIterator<\/strong><\/p>\n<p>Poniewa\u017c metoda getObjectIterator zwraca instancje obiekt\u00f3w biznesowych, w przeciwie\u0144stwie do SQL nie mo\u017ce by\u0107 wyboru atrybutu mi\u0119dzy s\u0142owami kluczowymi <em>SELECT FROM<\/em>.<\/p>\n<p><strong>PATH<\/strong><\/p>\n<p>W pozycji dla PATH nale\u017cy okre\u015bli\u0107 \u017c\u0105dany obiekt biznesowy za pomoc\u0105 w pe\u0142ni kwalifikowanej nazwy, np. com.cisag.app.general.obj.Item.<\/p>\n<p>Dodaj\u0105c s\u0142owa kluczowe OQL ACTIVE_TABLE dla aktywnej tabeli bazy danych i CONVERTED_TABLE dla tymczasowej tabeli bazy danych z przekonwertowanymi danymi, mo\u017cna okre\u015bli\u0107, z kt\u00f3rej tabeli dane s\u0105 odczytywane.<\/p>\n<p>Dane s\u0105 odczytywane z tabeli, do kt\u00f3rej pasuj\u0105 za\u0142adowane mappery obiekt\u00f3w biznesowych serwera aplikacji.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Odczytywana jest zawarto\u015b\u0107 aktywnej tabeli elementu obiektu biznesowego.<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item ACTIVE_TABLE o<\/code><\/div><\/section>\n<p><strong>ID<\/strong><\/p>\n<p>Obiekt biznesowy zawarty w PATH musi posiada\u0107 alias, kt\u00f3ry musi zaczyna\u0107 si\u0119 od litery, a nast\u0119pnie mo\u017ce zawiera\u0107 litery, cyfry i znaki &#8222;_&#8221;, &#8222;$&#8221;, &#8222;#&#8221;.<\/p>\n<p><strong>QUOTEDPATH<\/strong><\/p>\n<p>Element sk\u0142adni QUOTEDPATH oznacza elementy typu PATH lub ID, kt\u00f3re s\u0105 zapisane mi\u0119dzy podw\u00f3jnymi cudzys\u0142owami. Atrybuty obiekt\u00f3w biznesowych mog\u0105 mie\u0107 tak\u0105 sam\u0105 nazw\u0119 co s\u0142owo kluczowe OQL. W takim przypadku atrybuty w wyra\u017ceniu OQL musz\u0105 by\u0107 uj\u0119te w podw\u00f3jne cudzys\u0142owy.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Fikcyjny obiekt biznesowy Boxy posiada atrybut o nazwie select. Je\u015bli ta nazwa ma by\u0107 u\u017cyta w wyra\u017ceniu OQL, musi by\u0107 uj\u0119ta w cudzys\u0142\u00f3w.<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Boxy bo <\/code><\/p>\n<p><code>WHERE bo: \"select\" IS NOT NULL<\/code><\/div><\/section>\n<p><span style=\"font-size: revert; color: initial;\"><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/span>Jako alias mo\u017cna wybra\u0107 s\u0142owo kluczowe OQL. W takim przypadku alias musi by\u0107 uj\u0119ty w podw\u00f3jne cudzys\u0142owy.<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item \"SELECT\"<\/code><span style=\"font-size: revert; color: initial;\"><\/div><\/section><\/span><\/p>\n<p>W celu zapewnienia przejrzysto\u015bci nie nale\u017cy u\u017cywa\u0107 s\u0142\u00f3w kluczowych OQL jako alias\u00f3w.<\/p>\n<p>Pozosta\u0142e elementy sk\u0142adni nie s\u0105 obowi\u0105zkowe. Z wykorzystaniem dotychczas opisanych element\u00f3w s\u0105 mo\u017cliwe wszystkie zapytania o wyst\u0105pienia Business Object.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017csze wyra\u017cenie OQL zwraca wszystkie instancje obiektu biznesowego item:<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item item<\/code><\/div><\/section>\n<p><strong>WHERE LogExpression<\/strong><\/p>\n<p>Mo\u017cna zaw\u0119zi\u0107 ilo\u015b\u0107 instacji w itaratorze za pomoc\u0105 s\u0142owa kluczowego <em>WHERE<\/em> i nast\u0119pnie warunku. Element<em> LogEx-pression<\/em> ma nast\u0119puj\u0105c\u0105 struktur\u0119:<\/p>\n<figure id=\"attachment_28368\" aria-describedby=\"caption-attachment-28368\" style=\"width: 349px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-28368\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_2.jpg\" alt=\"\" width=\"349\" height=\"183\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_2.jpg 267w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_2-50x26.jpg 50w\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" \/><\/a><figcaption id=\"caption-attachment-28368\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni LogExpression<\/figcaption><\/figure>\n<p>Mo\u017cliwe jest okre\u015blenie kilku warunk\u00f3w, kt\u00f3re s\u0105 logicznie powi\u0105zane za pomoc\u0105 s\u0142\u00f3w kluczowych: <em>NOT<\/em>, <em>AND<\/em>\u00a0i <em>OR<\/em>.<\/p>\n<p><strong>CompareExpr<\/strong><\/p>\n<p><em>CompareExpr<\/em> ma nast\u0119puj\u0105c\u0105 struktur\u0119:<\/p>\n<figure id=\"attachment_28374\" aria-describedby=\"caption-attachment-28374\" style=\"width: 415px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_3-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-28374 size-full\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_3-1.jpg\" alt=\"\" width=\"415\" height=\"217\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_3-1.jpg 415w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_3-1-300x157.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_3-1-50x26.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_3-1-320x167.jpg 320w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/a><figcaption id=\"caption-attachment-28374\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni CompareExpr<\/figcaption><\/figure>\n<p>Symbol CompareExpr oznacza trzy podwyra\u017cenia.<\/p>\n<p><strong>IsClause<\/strong><\/p>\n<p>IsClause mo\u017ce by\u0107 u\u017cyty do sprawdzenia, czy atrybuty obiektu biznesowego maj\u0105 warto\u015b\u0107 zero lub r\u00f3\u017cn\u0105 od zera:<\/p>\n<figure id=\"attachment_28375\" aria-describedby=\"caption-attachment-28375\" style=\"width: 326px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28375\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_4.jpg\" alt=\"\" width=\"326\" height=\"85\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_4.jpg 326w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_4-300x78.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_4-50x13.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_4-320x83.jpg 320w\" sizes=\"auto, (max-width: 326px) 100vw, 326px\" \/><\/a><figcaption id=\"caption-attachment-28375\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni IsClause<\/figcaption><\/figure>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017csze wyra\u017cenie zwraca wszystkie instancje obiektu biznesowego Item, dla kt\u00f3rych atrybut originalItem zawiera warto\u015b\u0107 null:<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>WHERE item:originalItem IS NULL<\/code><\/div><\/section>\n<p><strong>AttributeRef<\/strong><\/p>\n<p>Element AttributeRef opisuje, w jaki spos\u00f3b atrybut obiektu biznesowego jest adresowany w OQL.<\/p>\n<figure id=\"attachment_28422\" aria-describedby=\"caption-attachment-28422\" style=\"width: 639px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28422\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef.jpg\" alt=\"\" width=\"639\" height=\"184\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef.jpg 639w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef-300x86.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef-50x14.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef-600x173.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-AttributeRef-320x92.jpg 320w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/a><figcaption id=\"caption-attachment-28422\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni AttributeRef<\/figcaption><\/figure>\n<p>Pierwszy element ID oznacza alias obiektu biznesowego z cz\u0119\u015bci FROM zapytania. Wybrany atrybut jest nazywany po dwukropku.<\/p>\n<p>W najprostszym przypadku nazwa atrybutu jest zapisywana w miejscu elementu ID.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><code>SELECT FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>WHERE item:originalItem IS NOT NULL<\/code><\/div><\/section>\n<p>Je\u015bli wybrany atrybut jest cz\u0119\u015bci\u0105 <em>Part<\/em>, pe\u0142na \u015bcie\u017cka do atrybutu musi by\u0107 okre\u015blona w pozycji elementu PATH. Nazwa atrybutu cz\u0119\u015bci mo\u017ce by\u0107 u\u017cyta jako warto\u015b\u0107 logiczna w celu sprawdzenia, czy atrybut <em>Part<\/em> ma warto\u015b\u0107 null. Je\u015bli atrybut cz\u0119\u015bci nie ma warto\u015bci null, warto\u015b\u0107 logiczna ma warto\u015b\u0107 TRUE.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">W poni\u017cszym wyra\u017ceniu adresowany jest atrybut part indexOfGoodsNumber cz\u0119\u015bci intrastat obiektu Business Objects Item:<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>WHERE item:intrastat=TRUE <\/code><\/p>\n<p><code>AND item:intrastat.indexOfGoodsNumber IS NULL<\/code><\/div><\/section>\n<p>Je\u015bli wybrany atrybut jest atrybutem tablicy, \u017c\u0105dany indeks musi by\u0107 okre\u015blony w nawiasach kwadratowych.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><code>SELECT FROM com.cisag.app.inventory.obj.InventoryItem item <\/code><\/p>\n<p><code>WHERE item:uom[2] IS NOT NULL<\/code><\/div><\/section>\n<p>Je\u015bli atrybut tablicy jest typu <em>Part<\/em>, atrybut <em>Part<\/em> jest adresowany w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><code>SELECT FROM com.cisag.app.inventory.obj.InventoryItem item <\/code><\/p>\n<p><code>WHERE item:uomConversionFactor[0].denominator IS NOT NULL<\/code><\/div><\/section>\n<p><strong>ExistsClause<\/strong><\/p>\n<p>ExistsClause zwraca true, je\u015bli SubSelect zwraca warto\u015b\u0107, a false \u2013 je\u015bli nie zwraca warto\u015bci.<\/p>\n<figure id=\"attachment_28379\" aria-describedby=\"caption-attachment-28379\" style=\"width: 303px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_6.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-28379 size-full\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_6.jpg\" alt=\"\" width=\"303\" height=\"67\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_6.jpg 303w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_6-300x66.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_6-50x11.jpg 50w\" sizes=\"auto, (max-width: 303px) 100vw, 303px\" \/><\/a><figcaption id=\"caption-attachment-28379\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni ExistsClause<\/figcaption><\/figure>\n<p>SubSelect jest wyra\u017ceniem select o sk\u0142adni oczekiwanej przez metod\u0119 <em><a href=\"#get\">getResultSet<\/a><\/em>.<\/p>\n<p><strong>TermExpr<\/strong><\/p>\n<p>Element sk\u0142adni TermExpr oznacza podzapytanie OQL, w kt\u00f3rym elementy sk\u0142adni <em>Term<\/em> mog\u0105 by\u0107 po\u0142\u0105czone z operatorami arytmetycznymi. Operatory arytmetyczne +, -, *, \/ s\u0105 obs\u0142ugiwane w ich zwyk\u0142ym znaczeniu.<\/p>\n<figure id=\"attachment_28383\" aria-describedby=\"caption-attachment-28383\" style=\"width: 196px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_7.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28383\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_7.jpg\" alt=\"\" width=\"196\" height=\"189\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_7.jpg 196w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia_SQL_7-50x48.jpg 50w\" sizes=\"auto, (max-width: 196px) 100vw, 196px\" \/><\/a><figcaption id=\"caption-attachment-28383\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni TermExpr<\/figcaption><\/figure>\n<p><strong>Term<\/strong><\/p>\n<p>Podzapytanie OQL Term oznacza nast\u0119puj\u0105ce zapytanie OQL:<\/p>\n<figure id=\"attachment_28384\" aria-describedby=\"caption-attachment-28384\" style=\"width: 279px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Term.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28384\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Term.jpg\" alt=\"\" width=\"279\" height=\"212\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Term.jpg 279w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Term-50x38.jpg 50w\" sizes=\"auto, (max-width: 279px) 100vw, 279px\" \/><\/a><figcaption id=\"caption-attachment-28384\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni Term<\/figcaption><\/figure>\n<p><strong>Literal<\/strong><\/p>\n<figure id=\"attachment_28385\" aria-describedby=\"caption-attachment-28385\" style=\"width: 554px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Literal.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28385\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Literal.jpg\" alt=\"\" width=\"554\" height=\"664\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Literal.jpg 554w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Literal-250x300.jpg 250w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Literal-42x50.jpg 42w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Literal-320x384.jpg 320w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/a><figcaption id=\"caption-attachment-28385\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni Literal<\/figcaption><\/figure>\n<p>S\u0142owa kluczowe:<\/p>\n<ul>\n<li>TRUE i FALSE maj\u0105 swoje zwyk\u0142e znaczenie.<\/li>\n<li>ZEROGUID oznacza identyfikator GUID sk\u0142adaj\u0105cy si\u0119 z zer.<\/li>\n<\/ul>\n<p>Funkcja TOGUID konwertuje STRING_LITERAL zapisany w nawiasach na GUID. Pozosta\u0142e elementy odnosz\u0105 si\u0119 do czasu i daty i zosta\u0142y opisane <span style=\"color: #33cccc;\"><span style=\"color: #000000;\">rozdziale<\/span> <a href=\"#funkcje\"><em>Funkcje znacznika czasu i daty<\/em><\/a>.<\/span><\/p>\n<p><strong>Function<\/strong><\/p>\n<p><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Function.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-28386\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Function.jpg\" alt=\"\" width=\"317\" height=\"208\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Function.jpg 317w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Function-300x197.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Function-50x33.jpg 50w\" sizes=\"auto, (max-width: 317px) 100vw, 317px\" \/><\/a><\/p>\n<p>Struktura elementu sk\u0142adni Function<\/p>\n<p>S\u0142owa kluczowe AVG, MAX, MIN, SUM i COUNT s\u0105 funkcjami agreguj\u0105cymi o takim samym znaczeniu jak w SQL.<\/p>\n<p>Element sk\u0142adni UPPER zapisuje wynik wyra\u017cenia TermExpr wielkimi literami.<\/p>\n<p><strong>SYSTEMTIME<\/strong><\/p>\n<p>Wyra\u017cenie SYSTEMTIME zwraca bie\u017c\u0105cy czas systemowy serwera bazy danych.<\/p>\n<p><strong>Element sk\u0142adni &#8222;?&#8221;<\/strong><\/p>\n<p>Znak zapytania (?) s\u0142u\u017cy jako symbol zast\u0119pczy dla wyra\u017ce\u0144 podrz\u0119dnych, kt\u00f3re s\u0105 znane tylko w czasie wykonywania. Klasa CisObjectIterator ma kilka metod, za pomoc\u0105 kt\u00f3rych symbole &#8222;?&#8221; s\u0105 zast\u0119powane warto\u015bciami. Zapytanie OQL mo\u017ce zawiera\u0107 kilka symboli ?. Do metod zmieniaj\u0105cych symbol na warto\u015bci nale\u017cy ka\u017cdorazowo poda\u0107 pozycj\u0119. Symbole s\u0105 numerowane w porz\u0105dku rosn\u0105cym, pocz\u0105wszy od 1.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017cszy fragment kodu \u017ar\u00f3d\u0142owego \u0142aduje wyst\u0105pienia obiektu biznesowego Item, do kt\u00f3rego przypisana jest okre\u015blona jednostka miary (Business Object UnitOfMeasure). Ich klucz g\u0142\u00f3wny typu GUID jest ustawiany jako parametr w iteratorze za pomoc\u0105 metody setGuid(). Metoda otrzymuje pozycj\u0119 w zapytaniu OQL i identyfikator GUID jako parametry.<\/p>\n<p><code>byte[] uomGuid = ... ;<\/code><\/p>\n<p><code>CisObjectIterator iter = om.getObjectIterator(<\/code><\/p>\n<p><code>\"SELECT FROM com.cisag.app.general.obj.Item i WHERE i:uom=?\");<\/code><\/p>\n<p><code>iter.setGuid(1, uomGuid);\/<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/div><\/section><\/code><\/p>\n<p><strong>LikeClause<\/strong><\/p>\n<p>Warunek LIKE <span style=\"font-size: revert; color: initial;\">s\u0142u\u017cy do prostego dopasowywania wzorc\u00f3w mi\u0119dzy ci\u0105gami znak\u00f3w.<\/span><\/p>\n<p><figure id=\"attachment_28425\" aria-describedby=\"caption-attachment-28425\" style=\"width: 467px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-LikeClause.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28425\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-LikeClause.jpg\" alt=\"\" width=\"467\" height=\"184\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-LikeClause.jpg 467w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-LikeClause-300x118.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-LikeClause-50x20.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-LikeClause-320x126.jpg 320w\" sizes=\"auto, (max-width: 467px) 100vw, 467px\" \/><\/a><figcaption id=\"caption-attachment-28425\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni LikeClause<\/figcaption><\/figure><\/p>\n<p>W j\u0119zyku SQL, mo\u017cna u\u017cywa\u0107 znak\u00f3w % i _. Znak % oznacza dowolny ci\u0105g sk\u0142adaj\u0105cy si\u0119 z dowolnej liczby znak\u00f3w. Podkre\u015blenie _ oznacza dok\u0142adnie jeden znak.<\/p>\n<p><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/div><\/section>Poni\u017csze wyra\u017cenie zwraca wszystkie obiekty biznesowe z Item, dla kt\u00f3rych atrybut description zaczyna si\u0119 od F lub ma tylko &#8222;F&#8221; jako warto\u015b\u0107:<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>WHERE item:description like 'F%'<\/code><\/div><\/section>\n<p>Metoda setString klasy CisObjectIterator mo\u017ce by\u0107 r\u00f3wnie\u017c u\u017cyta do przekazania obliczonej warto\u015bci do zapytania w celu dopasowania wzorca w czasie wykonywania:<\/p>\n<p><code>String pattern = '%Screw%';<\/code><\/p>\n<p><code>CisObjectIterator iter = om.getObjectIterator(<\/code><\/p>\n<p><code>\"SELECT FROM com.cisag.app.general.obj.Item i WHERE i:description like ?\");<\/code><\/p>\n<p><code>iter.setString(1, pattern);<\/code><\/p>\n<p><strong>InClause<\/strong><\/p>\n<p>InClause s\u0142u\u017cy do uzyskiwania tylko tych instancji obiekt\u00f3w biznesowych, kt\u00f3rych atrybut wcze\u015bniej zdefiniowany w wyra\u017ceniu (pozycja TermExpr) pasuje do warto\u015bci z listy warto\u015bci okre\u015blonych w nawiasach.<\/p>\n<figure id=\"attachment_28426\" aria-describedby=\"caption-attachment-28426\" style=\"width: 557px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-InClause.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28426\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-InClause.jpg\" alt=\"\" width=\"557\" height=\"175\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-InClause.jpg 557w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-InClause-300x94.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-InClause-50x16.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-InClause-320x101.jpg 320w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><\/a><figcaption id=\"caption-attachment-28426\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni InClause<\/figcaption><\/figure>\n<p>Istniej\u0105 dwie opcje okre\u015blania listy warto\u015bci w nawiasach: SubSelect (sk\u0142adnia odpowiada <em>getResultSet<\/em>) oznacza wyra\u017cenie SELECT, za pomoc\u0105 kt\u00f3rego okre\u015blane s\u0105 warto\u015bci. Druga opcja oznacza list\u0119 TermExpr oddzielon\u0105 przecinkami.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017cszy fragment kodu \u017ar\u00f3d\u0142owego okre\u015bla instancje Item, dla kt\u00f3rych atrybut description ma warto\u015b\u0107 zero, warto\u015b\u0107 zmiennej pattern1 lub pattern2.<\/p>\n<p><code>String pattern1=...;<\/code><\/p>\n<p><code>String pattern2=...;<\/code><\/p>\n<p><code>CisObjectIterator iter = om.getObjectIterator(<\/code><\/p>\n<p><code>\"SELECT FROM com.cisag.app.general.obj.Item i <\/code><\/p>\n<p><code>WHERE i:description IN (?,?)\");<\/code><\/p>\n<p><code>iter.setString(1, pattern1);<\/code><\/p>\n<p><code>iter.setString(2,pattern2);<\/code><\/div><\/section>\n<p><strong>BetweenClause<\/strong><\/p>\n<p>BetweenClause s\u0142u\u017cy do okre\u015blania tylko tych obiekt\u00f3w biznesowych, dla kt\u00f3rych warto\u015bci atrybut\u00f3w zdefiniowanych wcze\u015bniej w TermExpr mieszcz\u0105 si\u0119 w okre\u015blonym zakresie warto\u015bci (lub nie mieszcz\u0105 si\u0119 w przypadku u\u017cycia NOT). Granice zakresu warto\u015bci s\u0105 definiowane za pomoc\u0105 elementu sk\u0142adni TermExpr.<\/p>\n<figure id=\"attachment_28428\" aria-describedby=\"caption-attachment-28428\" style=\"width: 627px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28428\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause.jpg\" alt=\"\" width=\"627\" height=\"118\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause.jpg 627w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause-300x56.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause-50x9.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause-600x113.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BetweenClause-320x60.jpg 320w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/a><figcaption id=\"caption-attachment-28428\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni BetweenClause<\/figcaption><\/figure>\n<p><strong>CompareOpExpr<\/strong><\/p>\n<p>Operatory por\u00f3wnania =, &lt;&gt;, &gt;, &lt;, &gt;=, &lt;= maj\u0105 takie samo znaczenie jak w SQL.<\/p>\n<figure id=\"attachment_28431\" aria-describedby=\"caption-attachment-28431\" style=\"width: 326px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-CompareOpExpr.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28431\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-CompareOpExpr.jpg\" alt=\"\" width=\"326\" height=\"295\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-CompareOpExpr.jpg 326w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-CompareOpExpr-300x271.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-CompareOpExpr-50x45.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-CompareOpExpr-320x290.jpg 320w\" sizes=\"auto, (max-width: 326px) 100vw, 326px\" \/><\/a><figcaption id=\"caption-attachment-28431\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni CompareOpExpr<\/figcaption><\/figure>\n<p><strong>ORDER BY<\/strong><\/p>\n<p>Podobnie jak w SQL, OQL oferuje r\u00f3wnie\u017c opcj\u0119 sortowania zestawu wynik\u00f3w.<\/p>\n<figure id=\"attachment_28433\" aria-describedby=\"caption-attachment-28433\" style=\"width: 624px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28433\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY.jpg\" alt=\"\" width=\"624\" height=\"169\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY.jpg 624w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY-300x81.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY-50x14.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY-600x163.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY-320x87.jpg 320w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/a><figcaption id=\"caption-attachment-28433\" class=\"wp-caption-text\">Struktura klauzuli ORDER BY<\/figcaption><\/figure>\n<p>Po s\u0142owach kluczowych ORDER BY, wymienione s\u0105 atrybuty do posortowania, oddzielone przecinkami. Po ka\u017cdym atrybucie na li\u015bcie mo\u017cna opcjonalnie okre\u015bli\u0107, czy atrybut ma by\u0107 sortowany w porz\u0105dku rosn\u0105cym (ASC) czy malej\u0105cym (DESC). Je\u015bli nie okre\u015blono kolejno\u015bci sortowania, lista jest sortowana w kolejno\u015bci malej\u0105cej.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017csze zapytanie zwraca list\u0119 wszystkich obiekt\u00f3w biznesowych typu Item, posortowanych rosn\u0105co wed\u0142ug atrybutu description:<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>ORDER BY item:description<\/code><\/p>\n<p>Poni\u017csze zapytanie ma takie samo znaczenie:<\/p>\n<p><code>SELECT FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>ORDER BY item:description ASC<\/code><\/div><\/section>\n<h5 id=\"zapytania-za-pomoca-getresultset\" ><span class=\"ez-toc-section\" id=\"Zapytania_za_pomoca_getResultSet\"><\/span><a id=\"get\"><\/a>Zapytania za pomoc\u0105 getResultSet<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Metoda <em>getResultSet<\/em> zwraca obiekt typu <em>com.cisag.pgm.appserver.CisResultSet<\/em>. Atrybuty okre\u015blone w OQL mo\u017cna tutaj odczyta\u0107 z jednego lub wi\u0119cej obiekt\u00f3w biznesowych. Sk\u0142adnia zapytania OQL akceptowanego przez t\u0119 metod\u0119 ma nast\u0119puj\u0105c\u0105 struktur\u0119:<\/p>\n<figure id=\"attachment_28437\" aria-describedby=\"caption-attachment-28437\" style=\"width: 794px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-28437 size-full\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet.jpg\" alt=\"\" width=\"794\" height=\"394\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet.jpg 794w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet-300x149.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet-768x381.jpg 768w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet-50x25.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet-600x298.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-zapytania-OQL-dla-getResultSet-320x159.jpg 320w\" sizes=\"auto, (max-width: 794px) 100vw, 794px\" \/><\/a><figcaption id=\"caption-attachment-28437\" class=\"wp-caption-text\">Sk\u0142adnia zapytania dla getResultSet<\/figcaption><\/figure>\n<p><strong>Wyb\u00f3r atrybutu<\/strong><\/p>\n<p>Pomi\u0119dzy s\u0142owami kluczowymi SELECT i FROM musi by\u0107 wybrany jeden lub wi\u0119cej atrybut\u00f3w. Opcjonalnie, s\u0142owo kluczowe DISTINCT mo\u017ce wyst\u0105pi\u0107 po SELECT. Gwarantuje to, \u017ce po wybraniu atrybut\u00f3w, kt\u00f3re mog\u0105 mie\u0107 t\u0119 sam\u0105 warto\u015b\u0107 kilka razy w tabeli, pojawi\u0105 si\u0119 one tylko raz na li\u015bcie wynik\u00f3w. Je\u015bli zapytanie ma dotyczy\u0107 kilku atrybut\u00f3w, nale\u017cy je oddzieli\u0107 przecinkami. Atrybuty mog\u0105 by\u0107 opcjonalnie oznaczone s\u0142owem kluczowym AS, po kt\u00f3rym nast\u0119puje aliasa. Alias atrybutu jest u\u017cywany w widokach OQL do definiowania nazwy atrybutu kolumny zwrotnej widoku. Alias nie mo\u017ce by\u0107 u\u017cywany w zapytaniu OQL.<\/p>\n<p><strong>Object<\/strong><\/p>\n<p>Po wybraniu atrybutu nast\u0119puje s\u0142owo kluczowe FROM. \u017b\u0105dane tabele s\u0105 wymienione mi\u0119dzy s\u0142owami kluczowymi FROM i WHERE. W najprostszym przypadku wymagane s\u0105 tylko atrybuty tabeli.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><code>SELECT item:number, item:description <\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Item item<\/code><\/div><\/section>\n<p>Je\u015bli nazwy tabel s\u0105 wymienione oddzielone przecinkami, wykonywane jest cross-join.<\/p>\n<p>U\u017cycie nazw tabel lub join mo\u017ce by\u0107 uj\u0119te w nawiasach.<\/p>\n<figure id=\"attachment_28438\" aria-describedby=\"caption-attachment-28438\" style=\"width: 440px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Object.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28438\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Object.jpg\" alt=\"\" width=\"440\" height=\"147\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Object.jpg 440w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Object-300x100.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Object-50x17.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Object-320x107.jpg 320w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><figcaption id=\"caption-attachment-28438\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni Object<\/figcaption><\/figure>\n<p><strong>JoinClause<\/strong><\/p>\n<p>Rozr\u00f3\u017cnia si\u0119 dwa typy join: po\u0142\u0105czenie obiekt\u00f3w biznesowych i po\u0142\u0105czenie dynamicznych obiekt\u00f3w biznesowych.<\/p>\n<figure id=\"attachment_28439\" aria-describedby=\"caption-attachment-28439\" style=\"width: 322px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-JoinClause.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28439\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-JoinClause.jpg\" alt=\"\" width=\"322\" height=\"144\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-JoinClause.jpg 322w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-JoinClause-300x134.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-JoinClause-50x22.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-JoinClause-320x143.jpg 320w\" sizes=\"auto, (max-width: 322px) 100vw, 322px\" \/><\/a><figcaption id=\"caption-attachment-28439\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni JoinClause<\/figcaption><\/figure>\n<p><strong>BusinessObjectJoin<\/strong><\/p>\n<p>S\u0142owa kluczowe INNER, LEFT, RIGHT, FULL i OUTER maj\u0105 takie samo znaczenie jak w SQL.<\/p>\n<figure id=\"attachment_28440\" aria-describedby=\"caption-attachment-28440\" style=\"width: 791px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28440\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin.jpg\" alt=\"\" width=\"791\" height=\"187\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin.jpg 791w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin-300x71.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin-768x182.jpg 768w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin-50x12.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin-600x142.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-BusinessObjectJoin-320x76.jpg 320w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/a><figcaption id=\"caption-attachment-28440\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni BusinessObjectJoin<\/figcaption><\/figure>\n<p>Warunek \u0142\u0105czenia musi pojawi\u0107 si\u0119 w pozycji elementu sk\u0142adni LogExpression.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017csze zapytanie zwraca u\u017cytkownik\u00f3w przypisanych do JobDescription dla danego JobDescription GUID:<\/p>\n<p><code>SELECT ua:user <\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.JobAssignment ja <\/code><\/p>\n<p><code>JOIN com.cisag.app.general.obj.UserAssignment ua <\/code><\/p>\n<p><code>ON ja:partner=ua:partner WHERE ja:jobDescription=?<\/code><\/div><\/section>\n<p><strong>DynamicBusinessObjectJoin<\/strong><\/p>\n<p>Dynamiczne obiekty biznesowe mo\u017cna \u0142\u0105czy\u0107 z obiektami biznesowymi za pomoc\u0105 s\u0142owa kluczowego DYNAMIC_OBJECT przed JOIN.<\/p>\n<figure id=\"attachment_28443\" aria-describedby=\"caption-attachment-28443\" style=\"width: 809px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28443\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin.jpg\" alt=\"\" width=\"809\" height=\"105\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin.jpg 809w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin-300x39.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin-768x100.jpg 768w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin-50x6.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin-600x78.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-DynamicBusinessObjectJoin-320x42.jpg 320w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><\/a><figcaption id=\"caption-attachment-28443\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni DynamicBusinessObjectJoin<\/figcaption><\/figure>\n<p><em>Id<\/em> wyst\u0119puj\u0105ce bezpo\u015brednio po <em>JOIN<\/em> musi by\u0107 nazw\u0105 dynamicznego obiektu biznesowego. <em>Id<\/em> przed <em>ON<\/em> oznacza alias dynamicznego obiektu biznesowego. <em>Id<\/em> w nawiasach mo\u017ce opcjonalnie zawiera\u0107 nazw\u0119 atrybutu wielowarto\u015bciowego. Elementy <em>Id<\/em> w klauzuli ON oznaczaj\u0105 raz alias dynamicznego obiektu biznesowego i alias obiektu biznesowego, do kt\u00f3rego ma zosta\u0107 do\u0142\u0105czony dynamiczny obiekt biznesowy.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">W poni\u017cszym wyra\u017ceniu OQL dynamiczny obiekt biznesowy EXTItem jest po\u0142\u0105czony z obiektem biznesowym com.cisag.app.general.obj.Item:<\/p>\n<p><code>SELECT item:number <\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>DYNAMIC_OBJECT JOIN EXTItem ei <\/code><\/p>\n<p><code>ON ei=item<\/code><\/p>\n<p><\/div><\/section>\n<p><strong>Id<\/strong><\/p>\n<p>Element sk\u0142adni Id oznacza opisane ju\u017c elementy <em>ID<\/em> i <em>QUOTEDPATH<\/em>.<\/p>\n<figure id=\"attachment_28444\" aria-describedby=\"caption-attachment-28444\" style=\"width: 221px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Id.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28444\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Id.jpg\" alt=\"\" width=\"221\" height=\"144\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Id.jpg 221w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-Id-50x33.jpg 50w\" sizes=\"auto, (max-width: 221px) 100vw, 221px\" \/><\/a><figcaption id=\"caption-attachment-28444\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni Id<\/figcaption><\/figure>\n<p><strong>GROUP BY<\/strong><\/p>\n<p>Funkcje agreguj\u0105ce znane z SQL mog\u0105 by\u0107 u\u017cywane w klauzuli FROM wyra\u017cenia SELECT. Je\u015bli klauzula FROM zawiera r\u00f3wnie\u017c atrybuty, kt\u00f3re nie s\u0105 u\u017cywane w funkcjach agreguj\u0105cych, w\u00f3wczas atrybuty te musz\u0105 znajdowa\u0107 si\u0119 w klauzuli GROUP BY.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">W poni\u017cszym zapytaniu OQL funkcja COUNT jest stosowana do atrybutu count obiektu biznesowego Boxy. Atrybut Number nie jest u\u017cywany w funkcji agreguj\u0105cej i dlatego musi pojawi\u0107 si\u0119 w klauzuli GROUP BY.<\/p>\n<p><code>SELECT bo:number,COUNT(bo:amount) <\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Boxy bo <\/code><\/p>\n<p><code>GROUP BY bo:number<\/code><\/p>\n<p><\/div><\/section>\n<p><strong>HAVING<\/strong><\/p>\n<p>Warunek HAVING jest u\u017cywany w po\u0142\u0105czeniu z klauzul\u0105 <em>GROUP BY<\/em>. Warunek <em>HAVING<\/em> mo\u017ce by\u0107 u\u017cyty do zdefiniowania, \u017ce tylko grupy spe\u0142niaj\u0105ce warunek <em>HAVING<\/em> powinny pojawi\u0107 si\u0119 w wyniku.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">W poni\u017cszym zapytaniu OQL funkcja COUNT jest stosowana do atrybutu count obiektu biznesowego Boxy. Klauzula HAVING definiuje, \u017ce tylko te grupy powinny pojawi\u0107 si\u0119 w wyniku, dla kt\u00f3rych spe\u0142niony jest warunek, \u017ce liczba kwot w odpowiedniej grupie jest wi\u0119ksza ni\u017c 10.<\/p>\n<p><code>SELECT bo:number,COUNT(bo:amount) <\/code><\/p>\n<p><code>FROM<\/code><code>com.cisag.app.general.obj.Boxy bo <\/code><\/p>\n<p><code>GROUP BY bo:number<\/code><\/p>\n<p><code>HAVING COUNT(bo:amount)&gt;10<\/code><\/div><\/section>\n<p><strong>ORDER BY<\/strong><\/p>\n<p>Podobnie jak w SQL, mo\u017cliwe jest r\u00f3wnie\u017c sortowanie zestawu wynik\u00f3w w OQL.<\/p>\n<figure id=\"attachment_28447\" aria-describedby=\"caption-attachment-28447\" style=\"width: 626px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28447\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2.jpg\" alt=\"\" width=\"626\" height=\"165\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2.jpg 626w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2-300x79.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2-50x13.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2-600x158.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-klauzuli-ORDER-BY_2-320x84.jpg 320w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/a><figcaption id=\"caption-attachment-28447\" class=\"wp-caption-text\">Struktura klauzuli ORDER BY<\/figcaption><\/figure>\n<p>Po s\u0142owach kluczowych ORDER BY, s\u0105 wymieniane atrybuty do posortowania, oddzielone przecinkami. Alternatywnie mo\u017cna sortowa\u0107 wed\u0142ug kolumny wyboru atrybutu zamiast odwo\u0142ania do atrybutu. Kolumna z wyboru atrybut\u00f3w jest identyfikowana przez jej pozycj\u0119 (od 1 do n). Mo\u017cna u\u017cy\u0107 ASC i DESC jak w przypadku iteratora obiekt\u00f3w.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017csze wyra\u017cenie zwraca list\u0119 wszystkich obiekt\u00f3w biznesowych typu Item, posortowanych rosn\u0105co wed\u0142ug atrybutu description:<\/p>\n<p><code>SELECT item:guid, item:description<\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Item item<\/code><\/p>\n<p><code>ORDER BY item:description<\/code><\/p>\n<p>Poni\u017csze wyra\u017cenie ma takie samo znaczenie:<\/p>\n<p><code>SELECT item:guid, item:description<\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Item item<\/code><\/p>\n<p><code>ORDER BY 2<\/code><\/div><\/section>\n<h4 id=\"modyfikacje\" ><span class=\"ez-toc-section\" id=\"Modyfikacje\"><\/span>Modyfikacje<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Metoda getUpdateStatement klasy CisObjectManager zwraca obiekt typu CisUpdateStatement i akceptuje wyra\u017cenia DELETE, UPDATE i INSERT.<\/p>\n<p>Podczas korzystania z aktualizacji (UPDATE) nale\u017cy pami\u0119ta\u0107 o wp\u0142ywie na wydajno\u015b\u0107 i sp\u00f3jno\u015b\u0107 danych, kt\u00f3re opisano <span style=\"color: #000000;\">w artykule <em>Persistence service<\/em>.<\/span><\/p>\n<h5 id=\"usuwanie-obiektow-biznesowych-za-pomoca-delete\" ><span class=\"ez-toc-section\" id=\"Usuwanie_obiektow_biznesowych_za_pomoca_DELETE\"><\/span>Usuwanie obiekt\u00f3w biznesowych za pomoc\u0105 DELETE<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Wyra\u017cenie DELETE usuwa wszystkie instancje obiektu biznesowego lub tylko te instancje, kt\u00f3re spe\u0142niaj\u0105 okre\u015blony warunek.<\/p>\n<figure id=\"attachment_28450\" aria-describedby=\"caption-attachment-28450\" style=\"width: 759px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28450\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE.jpg\" alt=\"\" width=\"759\" height=\"72\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE.jpg 759w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE-300x28.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE-50x5.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE-600x57.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-DELETE-320x30.jpg 320w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/a><figcaption id=\"caption-attachment-28450\" class=\"wp-caption-text\">Sk\u0142adnia wyra\u017cenia DELETE<\/figcaption><\/figure>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017csze wyra\u017cenie usuwa wszystkie instancje obiektu biznesowego Item:<\/p>\n<p><code>DELETE FROM com.cisag.app.general.obj.Item item<\/code><\/p>\n<p>Nast\u0119pne zapytanie usuwa tylko instancje, dla kt\u00f3rych atrybut originalItem zawiera wpis:<\/p>\n<p><code>DELETE FROM com.cisag.app.general.obj.Item item <\/code><\/p>\n<p><code>WHERE item:originalItem IS NOT NULL<\/code><\/div><\/section>\n<h5 id=\"zmiana-obiektow-biznesowych-za-pomoca-update\" ><span class=\"ez-toc-section\" id=\"Zmiana_obiektow_biznesowych_za_pomoca_UPDATE\"><\/span>Zmiana obiekt\u00f3w biznesowych za pomoc\u0105 UPDATE<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Wyra\u017cenie UPDATE s\u0142u\u017cy do zmiany warto\u015bci atrybut\u00f3w instancji obiekt\u00f3w biznesowych. Mo\u017cliwa jest zmiana wszystkich instancji lub ograniczenie liczby instancji do zmiany za pomoc\u0105 warunku WHERE.<\/p>\n<figure id=\"attachment_28452\" aria-describedby=\"caption-attachment-28452\" style=\"width: 741px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28452\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE.jpg\" alt=\"\" width=\"741\" height=\"187\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE.jpg 741w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE-300x76.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE-50x13.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE-600x151.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-UPDATE-320x81.jpg 320w\" sizes=\"auto, (max-width: 741px) 100vw, 741px\" \/><\/a><figcaption id=\"caption-attachment-28452\" class=\"wp-caption-text\">Sk\u0142adnia wyra\u017cenia UPDATE<\/figcaption><\/figure>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Poni\u017cszy fragment kodu \u017ar\u00f3d\u0142owego zmienia atrybut name instancji obiektu biznesowego Item o podanym identyfikatorze GUID.<\/p>\n<p><code>CisUpdateStatement up=om.getUpdateStatement(\"<\/code><\/p>\n<p><code>UPDATE com.cisag.app.general.obj.Partner partner <\/code><\/p>\n<p><code>SET part-ner:name=? <\/code><\/p>\n<p><code>WHERE partner:guid=?\");<\/code><\/p>\n<p><code>up.setString(1,...);<\/code><\/p>\n<p><code>up.setGuid(2,...);<\/code><\/div><\/section>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Zabroniona jest zmiana atrybut\u00f3w klucza unikalnego za pomoc\u0105 wyra\u017cenia UPDATE.<\/div><\/section>\n<h5 id=\"tworzenie-nowych-obiektow-biznesowych-za-pomoca-insert\" ><span class=\"ez-toc-section\" id=\"Tworzenie_nowych_obiektow_biznesowych_za_pomoca_INSERT\"><\/span>Tworzenie nowych obiekt\u00f3w biznesowych za pomoc\u0105 INSERT<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Nowe instancje obiekt\u00f3w biznesowych mo\u017cna tworzy\u0107 za pomoc\u0105 wyra\u017cenia INSERT.<\/p>\n<figure id=\"attachment_28454\" aria-describedby=\"caption-attachment-28454\" style=\"width: 758px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28454\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert.jpg\" alt=\"\" width=\"758\" height=\"120\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert.jpg 758w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert-300x47.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert-50x8.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert-600x95.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Skladnia-wyrazenia-Insert-320x51.jpg 320w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption id=\"caption-attachment-28454\" class=\"wp-caption-text\">Sk\u0142adnia wyra\u017cenia INSERT<\/figcaption><\/figure>\n<p>Po s\u0142owach kluczowych INSERT INTO nale\u017cy poda\u0107 wybrany obiekt biznesowy dla PATH. Atrybuty, kt\u00f3re maj\u0105 zosta\u0107 wype\u0142nione warto\u015bciami, s\u0105 nast\u0119pnie podawane w nawiasach. Istniej\u0105 dwie opcje okre\u015blania warto\u015bci, kt\u00f3re maj\u0105 zosta\u0107 przypisane do atrybut\u00f3w:<\/p>\n<ul>\n<li>po s\u0142owie kluczowym VALUES w nawiasach nast\u0119puje lista warto\u015bci, z kt\u00f3rych ka\u017cda jest oddzielona przecinkiem<\/li>\n<li>warto\u015bci s\u0105 okre\u015blane za pomoc\u0105 SubSelect.<\/li>\n<\/ul>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Nie jest zalecanym u\u017cywanie wyra\u017cenia INSERT.<\/div><\/section>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><code>CisUpdateStatement up=om.getUpdateStatement(\"<\/code><\/p>\n<p><code>INSERT INTO com.cisag.app.general.obj.Partner<\/code><\/p>\n<p><code>(guid, number,type,name) VALUES(?,?,?,?)\");<\/code><\/p>\n<p><code>up.setGuid(1,...);<\/code><\/p>\n<p><code>up.setString(2,...);<\/code><\/p>\n<p><code>...<\/code><\/div><\/section>\n<h4 id=\"funkcje-znacznika-czasu-i-daty\" ><span class=\"ez-toc-section\" id=\"Funkcje_znacznika_czasu_i_daty\"><\/span><a id=\"funkcja\"><\/a>Funkcje znacznika czasu i daty<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Wyra\u017cenie SYSTEMTIME zwraca bie\u017c\u0105cy czas serwera bazy danych.<\/p>\n<p>Mo\u017cliwe jest okre\u015blenie sta\u0142ych znacznika czasu lub daty za pomoc\u0105 funkcji toTimeStamp(). Mo\u017cna to wykorzysta\u0107 na przyk\u0142ad do klasyfikacji danych.<\/p>\n<p>Aby m\u00f3c okre\u015bli\u0107 prawid\u0142ow\u0105 warto\u015b\u0107 sta\u0142ej, nale\u017cy wzi\u0105\u0107 pod uwag\u0119 typ danych odpowiedniego atrybutu (logiczny typ danych atrybutu). Typy danych znacznika czasu i daty pochodz\u0105 ze specjalnie oznaczonych logicznych typ\u00f3w danych, kt\u00f3re okre\u015blaj\u0105 konkretny typ danych atrybutu. Warto\u015bci instancji obiekt\u00f3w biznesowych przechowywane dla atrybutu mog\u0105 odnosi\u0107 si\u0119 do r\u00f3\u017cnych stref czasowych. Nale\u017cy to r\u00f3wnie\u017c wzi\u0105\u0107 pod uwag\u0119 podczas tworzenia zapytania OQL. <span style=\"color: #33cccc;\"><span style=\"color: #000000;\">Informacje na temat typ\u00f3w danych mozna znale\u017a\u0107 w artykule<\/span> <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/typy-danych-w-comarch-erp-enterprise\/\"><em>Typy danych w Comarch ERP Enterprise<\/em>.<\/a><br \/>\n<\/span>Strefa czasowa musi by\u0107 okre\u015blona poprzez jej identyfikacj\u0119, a nie poprzez skr\u00f3t zale\u017cny od j\u0119zyka. W aplikacji <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/strefy-czasowe\/\"><em>Strefy czasowe<\/em><\/a> znajduje si\u0119 tabela stref czasowych z nazwami technicznymi i ich opisem. W przypadku strefy czasowej u\u017cywanej w bie\u017c\u0105cej sesji identyfikacja strefy czasowej jest wy\u015bwietlana na pasku stanu.<\/p>\n<h5 id=\"systemtime\" ><span class=\"ez-toc-section\" id=\"SYSTEMTIME\"><\/span><span style=\"color: #000000;\">SYSTEMTIME<\/span><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Wyra\u017cenie SYSTEMTIME umo\u017cliwia por\u00f3wnywanie kolumn typu <em>Timestamp<\/em> z bie\u017c\u0105cym czasem serwera bazy danych. Na przyk\u0142ad mo\u017cna wyszukiwa\u0107 rekordy danych z dat\u0105 przed lub po bie\u017c\u0105cym czasie. Poni\u017csze zapytanie OQL okre\u015bla wersje artyku\u0142\u00f3w, kt\u00f3re stan\u0105 si\u0119 wa\u017cne dopiero w przysz\u0142o\u015bci.<\/p>\n<p><code>SELECT o: \"number\", o: \"validFrom\" <\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Item o <\/code><\/p>\n<p><code>WHERE o: \"validFrom\" &gt; SYSTEMTIME<\/code><\/p>\n<h5 id=\"funkcja-totimestamp\" ><span class=\"ez-toc-section\" id=\"Funkcja_toTimeStamp\"><\/span>Funkcja toTimeStamp()<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Funkcja toTimeStamp() mo\u017ce by\u0107 u\u017cyta do okre\u015blenia sta\u0142ej znacznika czasu.<\/p>\n<p>Typy danych daty w Comarch ERP Enterprise s\u0105 r\u00f3wnie\u017c mapowane na znaczniki czasu w bazie danych. W zwi\u0105zku z tym mo\u017cna r\u00f3wnie\u017c okre\u015bli\u0107 sta\u0142e daty za pomoc\u0105 tej funkcji.<\/p>\n<p>Funkcja ma nast\u0119puj\u0105c\u0105 sygnatur\u0119:<\/p>\n<p>toTimeStamp(&#8217;Timezone ID&#8217;, rok, miesi\u0105c, dzie\u0144, godziny, minuty, sekundy, milisekundy)<\/p>\n<p>Parametr <em>Timezone ID <\/em>(ID strefy czasowej) okre\u015bla, do kt\u00f3rej strefy czasowej odnosi si\u0119 okre\u015blona data i godzina. Okre\u015blona warto\u015b\u0107 jest konwertowana na odpowiedni\u0105 warto\u015b\u0107 w strefie czasowej <em>GMT<\/em> dla wyniku zapytania SQL. Wszystkie znaczniki czasu w bazie danych s\u0105 przechowywane w strefie czasowej <em>GMT<\/em>. Dlatego nale\u017cy upewni\u0107 si\u0119, \u017ce u\u017cywana jest prawid\u0142owa strefa czasowa dla okre\u015blonej warto\u015bci, tak aby \u017c\u0105dana warto\u015b\u0107 odnosz\u0105ca si\u0119 do strefy czasowej <em>GMT<\/em> by\u0142a faktycznie u\u017cywana w instrukcji SQL. W przeciwnym razie w instrukcji SQL zostanie u\u017cyty nieprawid\u0142owy znacznik czasu, co mo\u017ce prowadzi\u0107 do nieoczekiwanych wynik\u00f3w.<\/p>\n<h6 id=\"okreslanie-stalych-znacznika-czasu\" ><span class=\"ez-toc-section\" id=\"Okreslanie_stalych_znacznika_czasu\"><\/span>Okre\u015blanie sta\u0142ych znacznika czasu<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Mo\u017cna okre\u015bli\u0107 \u017c\u0105dan\u0105 warto\u015b\u0107 bezpo\u015brednio dla typ\u00f3w danych znacznika czasu Comarch ERP Enterprise.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Znacznik czasu 12.08.2024 08:21:06.233 dotycz\u0105cy strefy czasowej <em>CET<\/em> jest okre\u015blony w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<p>toTimeStamp(&#8217;CET&#8217;, 2024, 8, 12, 8, 21,6, 233)<\/div><\/section>\n<h6 id=\"okreslanie-stalych-daty\" ><span class=\"ez-toc-section\" id=\"Okreslanie_stalych_daty\"><\/span>Okre\u015blanie sta\u0142ych daty<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Aby okre\u015bli\u0107 sta\u0142e daty, musz\u0105 by\u0107 spe\u0142nione pewne warunki systemu typu daty. Warto\u015b\u0107 daty zawsze ma znormalizowany czas &#8222;00:00:00.000&#8221; i jest przechowywana w bazie danych jako znacznik czasu. Godzina nie jest zwykle wy\u015bwietlana. Aby okre\u015bli\u0107 sta\u0142\u0105 daty, nale\u017cy u\u017cy\u0107 tego znormalizowanego czasu.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Data 09.11.2024 odnosi si\u0119 do strefy czasowej <em>CET<\/em> jest okre\u015blona w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<p>toTimeStamp(&#8217;CET&#8217;, 2024, 11, 9, 0, 0, 0)<\/div><\/section>\n<p>Je\u015bli typem danych Comarch ERP Enterprise odpowiedniego atrybutu jest data lokalna, nale\u017cy pami\u0119ta\u0107, \u017ce warto\u015b\u0107 faktycznie przechowywana w bazie danych jest przesuni\u0119ta o jeden dzie\u0144 kalendarzowy. Nale\u017cy zatem doda\u0107 dzie\u0144 kalendarzowy do \u017c\u0105danej warto\u015bci.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Data 09.11.2024 w odniesieniu do strefy czasowej <em>CET<\/em> jest okre\u015blona w nast\u0119puj\u0105cy spos\u00f3b dla typu danych l<em>ocal to-date<\/em>:<\/p>\n<p>toTimeStamp(&#8217;CET&#8217;, 2024, 11, 10, 0, 0, 0, 0)<\/div><\/section>\n<h6 id=\"odtwarzanie-wyszukiwania\" ><span class=\"ez-toc-section\" id=\"Odtwarzanie_wyszukiwania\"><\/span>Odtwarzanie wyszukiwania<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Aby odtworzy\u0107 takie samo zachowanie, jak w przypadku wyszukiwania na atrybucie typu &#8222;data lokalna&#8221;, nale\u017cy okre\u015bli\u0107 przedzia\u0142, w kt\u00f3rym mog\u0105 znajdowa\u0107 si\u0119 znaczniki czasu dla wybranej daty. Wyszukiwanie wykorzystuje przedzia\u0142 od poprzedniego dnia kalendarzowego z czasem &#8222;12:00:00.000&#8221; do okre\u015blonej daty z czasem &#8222;11:59:59.999&#8221;. Spowoduje to znalezienie dowolnej warto\u015bci daty, kt\u00f3ra pokrywa si\u0119 z okre\u015blonym zakresem dat o co najmniej 12 godzin.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Uwzgl\u0119dnione zostan\u0105 wszystkie rekordy, kt\u00f3rych data to 09.11.2024:<\/p>\n<p><code>...<\/code><\/p>\n<p><code>WHERE ... dateAttr &gt;= toTimeStamp('CET', 2024, 11, 8, 12, 0, 0, 0) <\/code><\/p>\n<p><code>AND dateAttr &lt; toTimeStamp('CET', 2024, 11, 9, 12, 0, 0, 0) ....<\/code><\/p>\n<p><\/div><\/section>\n<p>W przypadku atrybutu typu <em>local to-date<\/em> podczas tworzenia przedzia\u0142u nale\u017cy uwzgl\u0119dni\u0107 przesuni\u0119cie o jeden dzie\u0144 kalendarzowy.<\/p>\n<h5 id=\"stale-znacznika-czasu\" ><span class=\"ez-toc-section\" id=\"Stale_znacznika_czasu\"><\/span><span style=\"color: #000000;\">Sta\u0142e znacznika czasu<\/span><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Istotne sta\u0142e znacznik\u00f3w czasu s\u0105 udost\u0119pniane za pomoc\u0105 nast\u0119puj\u0105cych sta\u0142ych OQL:<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"border-style: outset;\" width=\"205\"><strong>Nazwa sta\u0142ej OQL<\/strong><\/td>\n<td style=\"border-style: outset;\" width=\"337\"><strong>Znaczenie<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"205\">UNDEFINED_TIME_STAMP<\/td>\n<td style=\"border-style: outset;\" width=\"337\">Znacznik czasu zapisywany na bazie danych dla niezdefiniowanej warto\u015bci.<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"205\">MIN_TIME_STAMP<\/td>\n<td style=\"border-style: outset;\" width=\"337\">Najmniejszy znacznik czasu, kt\u00f3ry mo\u017ce by\u0107 zapisany na bazie danych<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"205\">MAX_TIME_STAMP<\/td>\n<td style=\"border-style: outset;\" width=\"337\">Najwi\u0119kszy znacznik czasu, kt\u00f3ry mo\u017ce by\u0107 zapisany na bazie danych<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5 id=\"funkcja-totimezoneguid\" ><span class=\"ez-toc-section\" id=\"Funkcja_toTimeZoneGuid\"><\/span>Funkcja toTimeZoneGuid()<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Funkcji pozwala na okre\u015blenie identyfikatora GUID strefy czasowej w celu identyfikacji strefy czasowej. Umo\u017cliwia to na przyk\u0142ad wybranie warto\u015bci znacznika czasu lub daty z okre\u015blonych stref czasowych.<\/p>\n<p>Funkcja ma nast\u0119puj\u0105c\u0105 sygnatur\u0119:<\/p>\n<p>toTimeZoneGuid(&#8217;Identyfikator strefy czasowej&#8217;)<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Okre\u015blenie identyfikatora GUID strefy czasowej <em>CET<\/em>:<\/p>\n<p><code>toTimeZoneGuid('CET')<\/code><\/p>\n<p><\/div><\/section>\n<h4 id=\"rozszerzenia-skladni-oql-dla-obiektu-deweloperskiego-search\" ><span class=\"ez-toc-section\" id=\"Rozszerzenia_skladni_OQL_dla_obiektu_deweloperskiego_Search\"><\/span><strong>Rozszerzenia sk\u0142adni OQL dla obiektu deweloperskiego <\/strong>Search<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Za pomoc\u0105 obiektu deweloperskiego <em>Search<\/em> mo\u017cna zdefiniowa\u0107 wyszukiwanie do zastosowania na modyfikowalnych listach. Cz\u0119\u015bci zapytania OQL, takie jak klauzula FROM, musz\u0105 by\u0107 okre\u015blone w celu opisania wyniku zapytania. W tym celu mo\u017cna u\u017cy\u0107 specjalnych element\u00f3w sk\u0142adni OQL, kt\u00f3re s\u0105 dozwolone tylko w definicji wyszukiwania.<\/p>\n<p><strong>Optymalizacja z\u0142\u0105cze\u0144 (Join) zapytania OQL<\/strong><\/p>\n<p>W zapytaniu OQL zwykle definiuje si\u0119 kilka po\u0142\u0105cze\u0144 z obiektami biznesowymi, kt\u00f3rych jedynym celem jest rozszerzenie zestawu kolumn do wyboru, wy\u015bwietlania i sortowania. W zale\u017cno\u015bci od konkretnego zapytania wyszukiwania, niekt\u00f3re z tych \u0142\u0105cze\u0144 (join) mog\u0105 nie mie\u0107 wp\u0142ywu na wynik wyszukiwania. Takie join s\u0105 automatycznie rozpoznawane i usuwane przed wykonaniem instrukcji OQL w celu zwi\u0119kszenia wydajno\u015bci wykonania.<\/p>\n<p>Je\u015bli atrybuty &#8222;po\u0142\u0105czonego&#8221; obiektu biznesowego s\u0105 u\u017cywane tylko w klauzuli SELECT, po\u0142\u0105czenie to mo\u017cna r\u00f3wnie\u017c usun\u0105\u0107 z zapytania OQL pod pewnymi warunkami. W takim przypadku wymagane warto\u015bci atrybut\u00f3w s\u0105 okre\u015blane za po\u015brednictwem Persistence service przy u\u017cyciu wsp\u00f3\u0142dzielonej pami\u0119ci podr\u0119cznej. Jednak warto\u015bci okre\u015blone w ten spos\u00f3b nie musz\u0105 ju\u017c odpowiada\u0107 warto\u015bciom w bazie danych, np. zawarto\u015b\u0107 pami\u0119ci podr\u0119cznej by\u0142a nieaktualna w momencie zapytania. Oznaczaj\u0105c po\u0142\u0105czenie s\u0142owem kluczowym <em>REMOVABLE<\/em>, nast\u0119puje okre\u015blenie, ze po\u0142\u0105czenie mo\u017ce zosta\u0107 usuni\u0119te przez system podczas wyszukiwania w celu zwi\u0119kszenia wydajno\u015bci, ale tak\u017ce, \u017ce dane okre\u015blone za po\u015brednictwem Persistence service mog\u0105 by\u0107 niezgodne z rzeczywist\u0105 zawarto\u015bci\u0105 bazy danych (nie s\u0105 bezpieczne dla transakcji). Bezpiecze\u0144stwo transakcji nie jest jednak zasadniczo wymagane do wy\u015bwietlania danych na listach lub wyszukiwaniach.<\/p>\n<p>Do\u0142\u0105czony obiekt biznesowy musi spe\u0142nia\u0107 nast\u0119puj\u0105ce warunki, aby mo\u017cna go by\u0142o usun\u0105\u0107 z instrukcji OQL:<\/p>\n<ul>\n<li>typ z\u0142\u0105czenia to <em>LEFT OUTER<\/em> lub <em>RIGHT OUTER<\/em><\/li>\n<li>\u017cadne atrybuty po\u0142\u0105czonego obiektu biznesowego nie s\u0105 u\u017cywane w klauzulach <em>WHERE<\/em>, <em>ORDER<\/em> <em>BY<\/em>, <em>GROUP<\/em> <em>BY<\/em> lub <em>HAVING<\/em>. Je\u015bli atrybuty po\u0142\u0105czonego obiektu biznesowego s\u0105 u\u017cywane w klauzuli <em>SELECT<\/em>, po\u0142\u0105czenie musi by\u0107 wyra\u017anie oznaczone s\u0142owem kluczowym <em>REMOVABLE<\/em>.<\/li>\n<li>warunek join musi by\u0107 zdefiniowany dla wszystkich atrybut\u00f3w klucza po\u0142\u0105czonego obiektu biznesowego w postaci &#8222;atrybut klucza obcego1 = atrybut klucza1 AND atrybut klucza obcego2 = atrybut klucza2 AND &#8230;&#8221; i nie mo\u017ce zawiera\u0107 \u017cadnych innych warunk\u00f3w. Je\u015bli atrybut <em>validFrom<\/em> nie zosta\u0142 okre\u015blony w klauzuli ON dla obiektu biznesowego zale\u017cnego od czasu, jest on domy\u015blnie brany pod uwag\u0119 tak jak poprzednio.<\/li>\n<li>inne join, kt\u00f3re odnosz\u0105 si\u0119 do innego po\u0142\u0105czenia (join), kt\u00f3re ma zosta\u0107 usuni\u0119te w ich klauzuli ON, r\u00f3wnie\u017c musz\u0105 by\u0107 mo\u017cliwe do usuni\u0119cia.<\/li>\n<\/ul>\n<figure id=\"attachment_28480\" aria-describedby=\"caption-attachment-28480\" style=\"width: 827px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow-.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-28480\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow-.jpg\" alt=\"\" width=\"827\" height=\"116\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow-.jpg 827w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow--300x42.jpg 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow--768x108.jpg 768w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow--50x7.jpg 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow--600x84.jpg 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2025\/04\/Struktura-elementu-skladni-mozliwych-do-usuwalnie-polaczen-obiektow--320x45.jpg 320w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/a><figcaption id=\"caption-attachment-28480\" class=\"wp-caption-text\">Struktura elementu sk\u0142adni mo\u017cliwych do usuni\u0119cia po\u0142\u0105cze\u0144 obiekt\u00f3w<\/figcaption><\/figure>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Zapytanie OQL<\/p>\n<p><code>SELECT p:number, l:isoCode<\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Partner p <\/code><\/p>\n<p><code>REMOVABLE LEFT OUTER JOIN com.cisag.app.general.obj.Language l on p:language = l:guid<\/code><\/p>\n<p>staje si\u0119 wewn\u0119trznym zapytaniem OQL<\/p>\n<p><code>SELECT p:number, p:language<\/code><\/p>\n<p><code>FROM com.cisag.app.general.obj.Partner p<\/code><\/p>\n<p>kt\u00f3ra jest wykonywana w bazie danych. W przypadku zapytania <em>l:isoCode<\/em> z zestawu wynik\u00f3w, klucz Persistence service jest generowany za po\u015brednictwem warto\u015bci atrybutu <em>p:language<\/em>, powi\u0105zana instancja j\u0119zyka jest \u0142adowana za po\u015brednictwem Persistence service i zwracana jest warto\u015b\u0107 atrybutu <em>isoCode<\/em>.<\/div><\/section>\n","protected":false},"author":27,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-9267","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-persistence-service"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/comments?post=9267"}],"version-history":[{"count":18,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9267\/revisions"}],"predecessor-version":[{"id":29408,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9267\/revisions\/29408"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/media?parent=9267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}