{"id":9661,"date":"2025-10-23T13:41:40","date_gmt":"2025-10-23T11:41:40","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/?post_type=ht_kb&#038;p=9661"},"modified":"2025-10-23T13:45:07","modified_gmt":"2025-10-23T11:45:07","slug":"dynamiczne-obiekty-biznesowe","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/","title":{"rendered":"Dynamiczne obiekty biznesowe"},"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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#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-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Obslugiwane_typy_danych\" >Obs\u0142ugiwane typy danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Przechowywanie\" >Przechowywanie<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Przechowywanie_jako_tabela_bazy_danych\" >Przechowywanie jako tabela bazy danych<\/a><ul class='ez-toc-list-level-6' ><li class='ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Zalety_zapisywania_w_postaci_tabeli_bazy_danych\" >Zalety zapisywania w postaci tabeli bazy danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Wady_zapisywania_jako_tabela_bazy_danych\" >Wady zapisywania jako tabela bazy danych<\/a><\/li><\/ul><\/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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Przechowywanie_jako_BLOB\" >Przechowywanie jako BLOB<\/a><ul class='ez-toc-list-level-6' ><li class='ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Zalety_zapisywania_jako_BLOB\" >Zalety zapisywania jako BLOB<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Wady_zapisu_jako_tabela_bazy_danych\" >Wady zapisu jako tabela bazy danych<\/a><\/li><\/ul><\/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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Wybor_sposobu_przechowywania_danych\" >Wyb\u00f3r sposobu przechowywania danych<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Integracja_z_systemem\" >Integracja z systemem<\/a><\/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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Programowanie_w_aplikacjach\" >Programowanie w aplikacjach<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Interfejs_Persistence_service\" >Interfejs Persistence service<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Tworzenie_zmiana_i_usuwanie_schematow\" >Tworzenie, zmiana i usuwanie schemat\u00f3w<\/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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Instrukcja_zmiany_schematu\" >Instrukcja zmiany schematu<\/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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Przyklad_tworzenia_nowego_schematu\" >Przyk\u0142ad tworzenia nowego schematu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Dostep_do_instancji\" >Dost\u0119p do instancji<\/a><\/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\/index.php\/documentation\/dynamiczne-obiekty-biznesowe\/#Dostep_za_pomoca_OQL\" >Dost\u0119p za pomoc\u0105 OQL<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3 id=\"wprowadzenie\" ><span class=\"ez-toc-section\" id=\"Wprowadzenie\"><\/span>Wprowadzenie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"first-token\"><span class=\"\">Obiekty biznesowe s\u0105 <\/span>tworzone i modyfikowane wy\u0142\u0105cznie w systemie deweloperskim<span class=\"\">.<\/span><span class=\"\"> Zmiany w nich musz\u0105 zosta\u0107 przeniesione z systemu deweloperskiego,<\/span><span class=\"\"> poprzez system testowy,<\/span><span class=\"\"> do systemu produkcyjnego za pomoc\u0105 <\/span>aktualizacji oprogramowania<span class=\"\">.<\/span><\/p>\n<p><span class=\"\">Procedura ta jest <\/span>zbyt statyczna<span class=\"\"> dla nast\u0119puj\u0105cych przypadk\u00f3w:<\/span><\/p>\n<ul>\n<li><span class=\"\">Dodatkowe pola w obiektach biznesowych<\/span><\/li>\n<li><span class=\"\">Charakterystyka artyku\u0142u<\/span><\/li>\n<li><span class=\"\">Parametry produkcyjne<\/span><\/li>\n<\/ul>\n<p>Wszystkie te przypadki wymagaj\u0105, aby nowe pola zosta\u0142y dodane do schematu obiektu biznesowego w trakcie pracy systemu lub aby zosta\u0142y utworzone nowe obiekty biznesowe.<\/p>\n<p>W tym celu w systemie s\u0105 obs\u0142ugiwane dynamiczne obiekty biznesowe. Schemat dynamicznego obiektu biznesowego mo\u017ce by\u0107 tworzony i zmieniany przez Persistence service w dowolnym systemie w dowolnym momencie. Dost\u0119p do odczytu i zapisu zawarto\u015bci dynamicznego obiektu biznesowego odbywa si\u0119 w taki sam spos\u00f3b, jak dost\u0119p do zwyk\u0142ych obiekt\u00f3w biznesowych \u2013 za po\u015brednictwem Persistence service. Wydajno\u015b\u0107 dost\u0119pu do dynamicznych obiekt\u00f3w biznesowych jest podobna do wydajno\u015bci dost\u0119pu do zwyk\u0142ych obiekt\u00f3w biznesowych.<\/p>\n<p>System mo\u017ce zapisywa\u0107 dynamiczne obiekty biznesowe na dwa sposoby:<\/p>\n<ol start=\"1\">\n<li><b>Przechowywanie jako tabela bazy danych &#8211;<\/b> dla ka\u017cdego schematu dynamicznego obiektu biznesowego tworzona jest jedna lub wi\u0119cej tabel bazy danych, w kt\u00f3rych przechowywane s\u0105 instancje.<\/li>\n<li><b>Przechowywanie jako BLOB <\/b>&#8211; instancje dynamicznego obiektu biznesowego s\u0105 przechowywane w obiektach BLOB.<\/li>\n<\/ol>\n<p>Typy te r\u00f3\u017cni\u0105 si\u0119 w szczeg\u00f3lno\u015bci pod wzgl\u0119dem opcji wyszukiwania i wymaga\u0144 dotycz\u0105cych pami\u0119ci. Decyzj\u0119 o bardziej korzystnym typie przechowywania nale\u017cy podj\u0105\u0107 w zale\u017cno\u015bci od przypadku u\u017cycia.<\/p>\n<p>Je\u015bli dynamiczne obiekty biznesowe s\u0105 przechowywane w tabelach bazy danych, mo\u017cna u\u017cy\u0107 atrybut\u00f3w w konfigurowalnych wyszukiwaniach i indywidualnych indeksach.<\/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>Programi\u015bci<\/li>\n<li>Konsultanci techniczni<\/li>\n<\/ul>\n<p>3 Definicja<br \/>\nDynamiczny obiekt biznesowy<br \/>\nDynamiczny obiekt biznesowy odpowiada obiektowi biznesowemu, ale mo\u017ce by\u0107 tworzony i zmieniany w dowolnym systemie w dowolnym czasie.<br \/>\nKa\u017cdy dynamiczny obiekt biznesowy jest opisany przez sw\u00f3j schemat. Schemat zawiera mi\u0119dzy innymi informacje o tym, jakie atrybuty ma dynamiczny obiekt biznesowy i jaki ma typ danych. Schemat odpowiada opisowi obiektu biznesowego jako obiektu programistycznego.<br \/>\nInstancja dynamicznego obiektu biznesowego jest cech\u0105 powi\u0105zanego schematu. Persistence service mo\u017ce odczytywa\u0107, zapisywa\u0107 i usuwa\u0107 instancje dynamicznych obiekt\u00f3w biznesowych. Dla schematu mo\u017ce istnie\u0107 dowolna liczba instancji. Instancje dynamicznych obiekt\u00f3w biznesowych mog\u0105 by\u0107 zapisywane w tabelach bazy danych utworzonych zgodnie ze schematem lub jako obiekty BLOB.<\/p>\n<h3 id=\"opis\" ><span class=\"ez-toc-section\" id=\"Opis\"><\/span>Opis<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aplikacje korzystaj\u0105ce z dynamicznych obiekt\u00f3w biznesowych zarz\u0105dzaj\u0105 ich schematem i instancjami.<\/p>\n<p>W przeciwie\u0144stwie do standardowych obiekt\u00f3w biznesowych, schemat dynamicznego obiektu biznesowego nie jest zarz\u0105dzany przez centraln\u0105 aplikacj\u0119 (tak\u0105 jak aplikacja <em>Obiekty deweloperskie<\/em>). Ka\u017cda aplikacja, kt\u00f3ra korzysta z dynamicznych obiekt\u00f3w biznesowych, mo\u017ce r\u00f3wnie\u017c zarz\u0105dza\u0107 ich schematem.<\/p>\n<p>Schemat dynamicznego obiektu biznesowego jest specyficzny dla OLTP. Oznacza to, \u017ce schemat ten istnieje tylko w dok\u0142adnie jednej bazie danych OLTP. Schemat dynamicznego obiektu biznesowego nie mo\u017ce by\u0107 dostarczany do innych system\u00f3w za pomoc\u0105 aktualizacji oprogramowania ani kopiowany do innych baz danych.<\/p>\n<h4 id=\"obslugiwane-typy-danych\" ><span class=\"ez-toc-section\" id=\"Obslugiwane_typy_danych\"><\/span>Obs\u0142ugiwane typy danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Dynamiczne obiekty biznesowe obs\u0142uguj\u0105 nast\u0119puj\u0105ce typy danych jako atrybuty:<\/p>\n<table style=\"width: 100%; height: 299px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><strong>Typ Danych Java<\/strong><\/td>\n<td style=\"border-style: outset; height: 23px;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\"><code>com.cisag.pgm.datatype.CisDecimal<\/code><\/td>\n<td style=\"border-style: outset; height: 46px;\">Liczba dziesi\u0119tna sk\u0142adaj\u0105ca si\u0119 z 21 cyfr, w tym 6 miejsc po przecinku.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>com.cisag.app.general.obj.Quantity<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Specyfikacja ilo\u015bci.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>com.cisag.app.general.obj.DomesticAmount<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Waluta kraju.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>com.cisag.app.general.obj.ForeignAmount<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Waluta obca.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>java.util.Date<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Timestamp (znacznik czasu).<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>com.cisag.pgm.datatype.CisDate<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Data ze stref\u0105 czasow\u0105.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>short<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Warto\u015b\u0107 sta\u0142ej <code>ValueSet<\/code><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>byte[]<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\"><code>Guid<\/code><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><code>String<\/code><\/td>\n<td style=\"border-style: outset; height: 23px;\">Ci\u0105g znak\u00f3w.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\"><code>byte[]<\/code><\/td>\n<td style=\"border-style: outset; height: 46px;\">Klucz g\u0142\u00f3wny dowolnego obiektu biznesowego. Ten typ danych przechowuje relacje z innymi jednostkami biznesowymi.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ka\u017cdy atrybut mo\u017ce by\u0107 utworzony jako pojedyncza warto\u015b\u0107 lub jako lista warto\u015bci.<\/p>\n<table style=\"width: 100%;\">\n<thead>\n<tr>\n<td style=\"width: 11.4286%; border-style: outset;\"><strong>Typ<\/strong><\/td>\n<td style=\"width: 42.0238%; border-style: outset;\"><strong>Opis<\/strong><\/td>\n<td style=\"width: 45.8333%; border-style: outset;\"><strong>Przyk\u0142ad<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"width: 11.4286%; border-style: outset;\"><b>Warto\u015b\u0107<\/b><\/td>\n<td style=\"width: 42.0238%; border-style: outset;\">Atrybut mo\u017ce mie\u0107 <b>dok\u0142adnie jedn\u0105 warto\u015b\u0107<\/b> w instancji.<\/td>\n<td style=\"width: 45.8333%; border-style: outset;\">Atrybut <em>waga<\/em> mo\u017ce mie\u0107 warto\u015b\u0107 <em>3 kg<\/em> w instancji.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 11.4286%; border-style: outset;\"><b>Lista warto\u015bci<\/b><\/td>\n<td style=\"width: 42.0238%; border-style: outset;\">Atrybut mo\u017ce mie\u0107 <b>kilka warto\u015bci<\/b> w instancji. Warto\u015bci te s\u0105 sortowane.<\/td>\n<td style=\"width: 45.8333%; border-style: outset;\">Atrybut <em>smak<\/em> mo\u017ce mie\u0107 warto\u015bci <em>s\u0142odki<\/em>, <em>kwa\u015bny<\/em>, <em>pikantny<\/em> w jednej instancji.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 id=\"przechowywanie\" ><span class=\"ez-toc-section\" id=\"Przechowywanie\"><\/span>Przechowywanie<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Spos\u00f3b przechowywania dynamicznych obiekt\u00f3w biznesowych okre\u015bla opcje dost\u0119pu do dynamicznego obiektu biznesowego.<\/p>\n<h5 id=\"przechowywanie-jako-tabela-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Przechowywanie_jako_tabela_bazy_danych\"><\/span>Przechowywanie jako tabela bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Je\u017celi dynamiczny obiekt biznesowy ma zosta\u0107 zapisany jako tabela bazy danych, dla ka\u017cdego schematu tworzy si\u0119 jedn\u0105 lub wi\u0119cej tabel bazy danych. Instancje s\u0105 zapisywane w tych tabelach bazy danych. Liczba tabel bazy danych zale\u017cy od liczby i rozmiaru atrybut\u00f3w w schemacie.<\/p>\n<p>Aby za\u0142adowa\u0107 dynamiczny obiekt biznesowy, wykonuje si\u0119 dost\u0119p do odczytu do ka\u017cdej powi\u0105zanej tabeli bazy danych. Je\u015bli dynamiczny obiekt biznesowy ma du\u017c\u0105 liczb\u0119 atrybut\u00f3w lub list warto\u015bci, nale\u017cy do niego odpowiednio du\u017ca liczba tabel bazy danych. Aby przyspieszy\u0107 dost\u0119p do odczytu do instancji dynamicznego obiektu biznesowego, dynamiczny obiekt biznesowy jest przechowywany redundantnie jako BLOB w pewnej liczby tabel. Nadmiarowe przechowywanie jako BLOB umo\u017cliwia za\u0142adowanie dynamicznego obiektu biznesowego z dost\u0119pem do bazy danych. Podczas zapisu dynamicznego obiektu biznesowego wymagany jest jednak jeszcze jeden dost\u0119p do bazy danych.<\/p>\n<p>Rozmieszczenie atrybut\u00f3w w tabelach bazy danych ma du\u017cy wp\u0142yw na czasy odpowiedzi dla zapyta\u0144 wyszukiwania. Wszystkie tabele, kt\u00f3re zawieraj\u0105 atrybuty wymagane dla zapytania wyszukiwania, musz\u0105 by\u0107 po\u0142\u0105czone z zapytaniem wyszukiwania. Aby zmniejszy\u0107 liczb\u0119 po\u0142\u0105cze\u0144, warto zminimalizowa\u0107 liczb\u0119 tabel bazy danych wymaganych dla zapytania wyszukiwania.<\/p>\n<p>Ka\u017cdemu atrybutowi mo\u017cna opcjonalnie przypisa\u0107 \u015bcie\u017ck\u0119 klasyfikacji (np. &#8222;x-y-01&#8221;). Atrybuty z t\u0105 sam\u0105 klasyfikacj\u0105 s\u0105 najlepiej przechowywane w tej samej tabeli bazy danych. Oznacza to, \u017ce je\u015bli w momencie generowania dynamicznego obiektu biznesowego wiadomo, kt\u00f3re atrybuty b\u0119d\u0105 prawdopodobnie wsp\u00f3\u0142dzielone, w\u00f3wczas tym wsp\u00f3\u0142dzielonym atrybutom powinna zosta\u0107 przypisana ta sama klasyfikacja.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Cechy artyku\u0142u s\u0105 przechowywane w dynamicznych obiektach biznesowych, a ka\u017cda cecha jest przypisana do klasyfikacji z klasyfikacji cech artyku\u0142u. Podczas wyszukiwania artyku\u0142\u00f3w wed\u0142ug cech artyku\u0142u nale\u017cy najpierw wybra\u0107 klasyfikacj\u0119. Nast\u0119pnie mo\u017cna wyszukiwa\u0107 tylko te cechy, kt\u00f3re s\u0105 przypisane do wybranej klasyfikacji lub jej przedrostka (np. je\u015bli wybrano &#8222;x-y-01&#8221;, uwzgl\u0119dniane s\u0105 r\u00f3wnie\u017c cechy klasyfikacji &#8222;x-y&#8221; i &#8222;x&#8221;).<\/div><\/section>\n<h6 id=\"zalety-zapisywania-w-postaci-tabeli-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Zalety_zapisywania_w_postaci_tabeli_bazy_danych\"><\/span>Zalety zapisywania w postaci tabeli bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<ul>\n<li>Instancje mog\u0105 by\u0107 przeszukiwane. Atrybuty mog\u0105 by\u0107 u\u017cywane w konfigurowalnych wyszukiwaniach.<\/li>\n<li>Indeksy mog\u0105 by\u0107 tworzone w celu optymalizacji dost\u0119pu.<\/li>\n<li>Dynamiczny obiekt biznesowy mo\u017ce by\u0107 powi\u0105zany z istniej\u0105cymi obiektami biznesowymi, na przyk\u0142ad jako rozszerzenie &#8222;p\u00f3l dodatkowych&#8221;.<\/li>\n<li>Dost\u0119p do zawarto\u015bci dynamicznego obiektu biznesowego mo\u017cna uzyska\u0107 za pomoc\u0105 j\u0119zyka OQL.<\/li>\n<\/ul>\n<h6 id=\"wady-zapisywania-jako-tabela-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Wady_zapisywania_jako_tabela_bazy_danych\"><\/span>Wady zapisywania jako tabela bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<ul>\n<li>Zwi\u0119kszone zapotrzebowanie na miejsce w bazie danych.<\/li>\n<li>Zwi\u0119kszony czas do wygenerowania tabel bazy danych.<\/li>\n<\/ul>\n<h5 id=\"przechowywanie-jako-blob\" ><span class=\"ez-toc-section\" id=\"Przechowywanie_jako_BLOB\"><\/span>Przechowywanie jako BLOB<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Je\u015bli dynamiczny obiekt biznesowy ma zosta\u0107 zapisany jako BLOB, w\u00f3wczas wszystkie instancje dynamicznego obiektu biznesowego s\u0105 zapisywane w tabeli z BLOB.<\/p>\n<h6 id=\"zalety-zapisywania-jako-blob\" ><span class=\"ez-toc-section\" id=\"Zalety_zapisywania_jako_BLOB\"><\/span>Zalety zapisywania jako BLOB<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<ul>\n<li>Niskie zapotrzebowanie na pami\u0119\u0107 w bazie danych.<\/li>\n<li>Kr\u00f3tszy czas wymagany do utworzenia lub zmiany schematu.<\/li>\n<\/ul>\n<h6 id=\"wady-zapisu-jako-tabela-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Wady_zapisu_jako_tabela_bazy_danych\"><\/span>Wady zapisu jako tabela bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<ul>\n<li>Brak opcji wyszukiwania w instancjach.<\/li>\n<li>Dynamiczny obiekt biznesowy nie mo\u017ce by\u0107 powi\u0105zany z istniej\u0105cymi obiektami biznesowymi jako rozszerzenie.<\/li>\n<li>Zawarto\u015b\u0107 dynamicznego obiektu biznesowego nie mo\u017ce by\u0107 dost\u0119pna za pomoc\u0105 OQL.<\/li>\n<\/ul>\n<h5 id=\"wybor-sposobu-przechowywania-danych\" ><span class=\"ez-toc-section\" id=\"Wybor_sposobu_przechowywania_danych\"><\/span>Wyb\u00f3r sposobu przechowywania danych<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Decyzja o sposobie przechowywania dynamicznego obiektu biznesowego zale\u017cy od konkretnego przypadku u\u017cycia. Z tego powodu odpowiednie przypadki u\u017cycia w standardzie s\u0105 klasyfikowane wed\u0142ug nast\u0119puj\u0105cych kryteri\u00f3w:<\/p>\n<table style=\"width: 100%; height: 184px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><strong>Kryterium<\/strong><\/td>\n<td style=\"border-style: outset; height: 23px;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Wyszukiwanie<\/td>\n<td style=\"border-style: outset; height: 23px;\">Czy dynamiczne obiekty biznesowe powinny by\u0107 przeszukiwane.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Liczba schemat\u00f3w<\/td>\n<td style=\"border-style: outset; height: 46px;\">Oczekiwana liczba r\u00f3\u017cnych schemat\u00f3w dynamicznych obiekt\u00f3w biznesowych w danym przypadku u\u017cycia.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Liczba atrybut\u00f3w<\/td>\n<td style=\"border-style: outset; height: 23px;\">Oczekiwana liczba atrybut\u00f3w w schemacie.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Liczba wyst\u0105pie\u0144<\/td>\n<td style=\"border-style: outset; height: 23px;\">Oczekiwana liczba wyst\u0105pie\u0144 (instancji) dla schematu.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">\u015arednia proporcja<\/td>\n<td style=\"border-style: outset; height: 46px;\">\u015arednia proporcja atrybut\u00f3w schematu, do kt\u00f3rych faktycznie przypisano warto\u015b\u0107 w instancjach.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Klasyfikacja przypadk\u00f3w u\u017cycia wed\u0142ug powy\u017cszych kryteri\u00f3w:<\/p>\n<table style=\"width: 100%; height: 138px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\"><strong>Kryterium<\/strong><\/td>\n<td style=\"height: 23px; border-style: outset;\"><strong>Produkcja<\/strong><\/td>\n<td style=\"height: 23px; border-style: outset;\"><strong>Inne pola<\/strong><\/td>\n<td style=\"height: 23px; border-style: outset;\"><strong>Cechy artyku\u0142u<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\">Wyszukiwanie<\/td>\n<td style=\"height: 23px; border-style: outset;\">Tak<\/td>\n<td style=\"height: 23px; border-style: outset;\">Nie<\/td>\n<td style=\"height: 23px; border-style: outset;\">Tak<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\">Liczba schemat\u00f3w<\/td>\n<td style=\"height: 23px; border-style: outset;\">Niska<\/td>\n<td style=\"height: 23px; border-style: outset;\">Wysoka<\/td>\n<td style=\"height: 23px; border-style: outset;\">Bardzo niska<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\">Liczba atrybut\u00f3w<\/td>\n<td style=\"height: 23px; border-style: outset;\">Niska<\/td>\n<td style=\"height: 23px; border-style: outset;\">\u015arednia<\/td>\n<td style=\"height: 23px; border-style: outset;\">Wysoka<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\">Liczba instancji<\/td>\n<td style=\"height: 23px; border-style: outset;\">Wysoka<\/td>\n<td style=\"height: 23px; border-style: outset;\">Niska<\/td>\n<td style=\"height: 23px; border-style: outset;\">Wysoka<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\">G\u0119sto\u015b\u0107 cech<\/td>\n<td style=\"height: 23px; border-style: outset;\">Wysoka<\/td>\n<td style=\"height: 23px; border-style: outset;\">\u015arednia<\/td>\n<td style=\"height: 23px; border-style: outset;\">Niska<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Kryteria te wykorzystuje si\u0119 do okre\u015blenia, czy dynamiczny obiekt biznesowy powinien zosta\u0107 zapisany jako tabela bazy danych, czy jako BLOB. W szczeg\u00f3lno\u015bci, decyduj\u0105ce znaczenie ma to, czy na instancjach ma by\u0107 wykonywane wyszukiwanie. Wyszukiwanie jest mo\u017cliwe tylko wtedy, gdy dynamiczny obiekt biznesowy jest zapisany w tabelach bazy danych.<\/p>\n<p>Liczba schemat\u00f3w, w po\u0142\u0105czeniu z liczb\u0105 atrybut\u00f3w i instancji, pozwala oszacowa\u0107 maksymaln\u0105 wymagan\u0105 przestrze\u0144 dyskow\u0105. W przypadku przechowywania jako tabela bazy danych, pami\u0119\u0107 ta nie jest optymalnie wykorzystywana, zw\u0142aszcza przy niskiej g\u0119sto\u015bci atrybut\u00f3w, poniewa\u017c przestrze\u0144 dyskowa jest r\u00f3wnie\u017c wymagana dla niezdefiniowanych atrybut\u00f3w instancji. W przypadku zapisu jako BLOB, atrybuty, kt\u00f3re nie s\u0105 scharakteryzowane, nie wymagaj\u0105 miejsca w pami\u0119ci.<\/p>\n<p>Przypadki u\u017cycia takie jak Inne pola i Cechy artyku\u0142u s\u0105 zapisywane jako tabela bazy danych, natomiast Parametry produkcji jako BLOB.<\/p>\n<h4 id=\"integracja-z-systemem\" ><span class=\"ez-toc-section\" id=\"Integracja_z_systemem\"><\/span>Integracja z systemem<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Dynamiczne obiekty biznesowe s\u0105 cz\u0119\u015bci\u0105 silnika systemu i s\u0105 obs\u0142ugiwane przez ca\u0142y czas:<\/p>\n<table style=\"width: 100%; height: 231px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><strong>Obszar<\/strong><\/td>\n<td style=\"border-style: outset; height: 23px;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"border-style: outset; height: 70px;\">Sterownik ODBC<\/td>\n<td style=\"border-style: outset; height: 70px;\">Zawarto\u015b\u0107 dynamicznych obiekt\u00f3w biznesowych mo\u017ce by\u0107 wy\u015bwietlana w raportach i dokumentach. Dynamiczne obiekty biznesowe zapisane jako tabele bazy danych mog\u0105 by\u0107 u\u017cywane w wyszukiwaniach za pomoc\u0105 konfigurowalnych wyszukiwa\u0144.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Indeksy indywidualne<\/td>\n<td style=\"border-style: outset; height: 46px;\">Indeksy mo\u017cna tworzy\u0107 dla dynamicznych obiekt\u00f3w biznesowych zapisanych jako tabele bazy danych w celu poprawy wydajno\u015bci wyszukiwania lub dost\u0119pu ODBC.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Eksport\/Import<\/td>\n<td style=\"border-style: outset; height: 46px;\">Zawarto\u015b\u0107 dynamicznych obiekt\u00f3w biznesowych mo\u017ce by\u0107 eksportowana lub importowana.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">OQL\/Konsola OQL<\/td>\n<td style=\"border-style: outset; height: 46px;\">Konsola OQL mo\u017ce by\u0107 u\u017cywana do odczytu zawarto\u015bci dynamicznych obiekt\u00f3w biznesowych.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Wi\u0119cej informacji na temat obs\u0142ugi dynamicznych obiekt\u00f3w biznesowych mo\u017cna znale\u017a\u0107 w dokumentacji dla tych obszar\u00f3w.<\/p>\n<h4 id=\"programowanie-w-aplikacjach\" ><span class=\"ez-toc-section\" id=\"Programowanie_w_aplikacjach\"><\/span>Programowanie w aplikacjach<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div id=\"model-response-message-contentr_64671a40a47743e6\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\">\n<p>Schemat dynamicznego obiektu biznesowego zawiera tylko dane wymagane dla Persistence service. Do programowania w aplikacjach biznesowych konieczne s\u0105 dalsze informacje, takie jak te wymagane do wy\u015bwietlania w interfejsie oraz do sprawdzania sp\u00f3jno\u015bci wpis\u00f3w.<\/p>\n<p>Klasy wymagane do uzyskania dost\u0119pu do dynamicznych obiekt\u00f3w biznesowych znajduj\u0105 si\u0119 w przestrzeni nazw <em>com.cisag.app.general.extension<\/em>.<\/p>\n<p>Nazwa schematu dynamicznego obiektu biznesowego, kt\u00f3ry przechowuje dodatkowe pola, jest generowana na podstawie nazwy obiektu biznesowego:<\/p>\n<ol start=\"1\">\n<li>Nazwa schematu zaczyna si\u0119 od <em>EXT<\/em>.<\/li>\n<li>Nast\u0119puje po niej nazwa obiektu biznesowego <em>bez jego przestrzeni nazw<\/em>.<\/li>\n<li>Je\u015bli obiekt biznesowy znajduje si\u0119 w przestrzeni nazw innej ni\u017c <code>com.cisag<\/code>, druga cz\u0119\u015b\u0107 tej przestrzeni nazw jest wstawiana wielkimi literami pomi\u0119dzy <em>EXT<\/em> a nazw\u0119 obiektu biznesowego.<\/li>\n<\/ol>\n<\/div>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/p>\n<table style=\"width: 100%; height: 92px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; width: 24.4048%; border-style: outset;\"><strong>Schemat<\/strong><\/td>\n<td style=\"height: 23px; width: 75%; border-style: outset;\"><strong>Business object<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; width: 24.4048%; border-style: outset;\"><code>EXTItem<\/code><\/td>\n<td style=\"height: 23px; width: 75%; border-style: outset;\"><code>com.cisag.app.general.obj.Item<\/code><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; width: 24.4048%; border-style: outset;\"><code>EXTPartner<\/code><\/td>\n<td style=\"height: 23px; width: 75%; border-style: outset;\"><code>com.cisag.app.general.obj.Partner<\/code><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; width: 24.4048%; border-style: outset;\"><code>EXTXYZBook<\/code><\/td>\n<td style=\"height: 23px; width: 75%; border-style: outset;\"><code>com.xyz.app.general.obj.Book<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/div><\/section>\n<h4 id=\"interfejs-persistence-service\" ><span class=\"ez-toc-section\" id=\"Interfejs_Persistence_service\"><\/span>Interfejs Persistence service<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Interfejs programistyczny Persistence service jest podzielony na zarz\u0105dzanie schematami dynamicznych obiekt\u00f3w biznesowych i dost\u0119p do instancji. W wi\u0119kszo\u015bci aplikacji interfejs Persistence service nie jest u\u017cywany bezpo\u015brednio, lecz interfejs w przestrzeni nazw <em>com.cisag.app.general.extension<\/em>. Chocia\u017c bezpo\u015bredni dost\u0119p do Persistence service zapewnia lepsz\u0105 wydajno\u015b\u0107 ze wzgl\u0119du na brak warstwy po\u015bredniej, ma t\u0119 wad\u0119, \u017ce nie mo\u017cna przechowywa\u0107 \u017cadnych informacji do wy\u015bwietlania lub sprawdzania atrybut\u00f3w.<\/p>\n<h5 id=\"tworzenie-zmiana-i-usuwanie-schematow\" ><span class=\"ez-toc-section\" id=\"Tworzenie_zmiana_i_usuwanie_schematow\"><\/span>Tworzenie, zmiana i usuwanie schemat\u00f3w<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Nast\u0119puj\u0105ce klasy w przestrzeni nazw <em>com.cisag.pgm.appserver<\/em> s\u0105 u\u017cywane do zarz\u0105dzania schematami:<\/p>\n<div id=\"model-response-message-contentr_a7e426bc09ce5a95\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\">\n<table>\n<thead>\n<tr>\n<td style=\"border-style: outset;\"><strong>Klasa<\/strong><\/td>\n<td style=\"border-style: outset;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border-style: outset;\"><b><code>com.cisag.pgm.appserver.CisDynamicObjectSchemaManager<\/code><\/b><\/td>\n<td style=\"border-style: outset;\">Mened\u017cer schemat\u00f3w zarz\u0105dza schematem dynamicznych obiekt\u00f3w biznesowych. Umo\u017cliwia tworzenie nowych dynamicznych obiekt\u00f3w biznesowych oraz zmian\u0119 lub usuwanie schemat\u00f3w istniej\u0105cych dynamicznych obiekt\u00f3w biznesowych. Zapytania do mened\u017cera schemat\u00f3w mo\u017cna wysy\u0142a\u0107 w \u015brodowisku <code>CisEnvironment<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\"><b><code>com.cisag.pgm.appserver.CisDynamicObjectSchema<\/code><\/b><\/td>\n<td style=\"border-style: outset;\">Schemat zawiera wszystkie metadane opisuj\u0105ce dynamiczny obiekt biznesowy. Obejmuje nast\u0119puj\u0105ce informacje:<\/p>\n<ul>\n<li>Nazwa<\/li>\n<li>W\u0142a\u015bciwo\u015bci (np. Przechowywanie, Ustawienia buforowania)<\/li>\n<li>Kluczowe informacje<\/li>\n<li>Atrybuty<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\"><b><code>com.cisag.pgm.appserver.CisDynamicObjectSchemaColumn<\/code><\/b><\/td>\n<td style=\"border-style: outset;\">Kolumna zawiera metadane dla atrybutu dynamicznego obiektu biznesowego w schemacie.<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\"><b><code>com.cisag.pgm.appserver.CisDynamicObjectSchemaKeyColumn<\/code><\/b><\/td>\n<td style=\"border-style: outset;\">Kolumna klucza zawiera metadane dla atrybutu klucza dynamicznego obiektu biznesowego w schemacie.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Podczas zmiany i usuwania schematu, pe\u0142na wersja schematu jest zablokowana. Wszystkie inne sesje, kt\u00f3re chc\u0105 uzyska\u0107 dost\u0119p do odczytu lub zapisu do instancji dynamicznego obiektu biznesowego podczas zmiany, czekaj\u0105 na blokad\u0119. Poniewa\u017c zmiana schematu mo\u017ce by\u0107 czasoch\u0142onna w zale\u017cno\u015bci od systemu i rozmiaru obiektu dynamicznego, sesje oczekuj\u0105ce mog\u0105 otrzyma\u0107 wyj\u0105tek przekroczenia limitu czasu.<br \/>\nW zale\u017cno\u015bci od liczby instancji, dodawanie nowych atrybut\u00f3w do schematu trwa znacznie d\u0142u\u017cej, je\u015bli dla nowego atrybutu zosta\u0142a zapisana warto\u015b\u0107 domy\u015blna. Zmiany schematu trwaj\u0105 d\u0142u\u017cej, gdy s\u0105 zapisywane jako tabela bazy danych ni\u017c gdy s\u0105 zapisywane jako BLOB.<br \/>\nIstniej\u0105 nast\u0119puj\u0105ce typy dynamicznych obiekt\u00f3w biznesowych:<\/p>\n<table style=\"width: 100%; height: 535px;\">\n<thead>\n<tr style=\"height: 46px;\">\n<td style=\"height: 46px; border-style: outset;\"><strong>Typ Dynamicznego Obiektu Biznesowego<\/strong><\/td>\n<td style=\"height: 46px; border-style: outset;\"><strong>Opis i Charakterystyka<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 46px;\">\n<td style=\"height: 46px; border-style: outset;\"><b>Rozszerzenie obiektu<\/b><\/td>\n<td style=\"height: 46px; border-style: outset;\">Dynamiczne Obiekty Biznesowe typu Rozszerzenie Obiektu \u00a0s\u0105 przypisane dok\u0142adnie jednemu Obiektowi Biznesowemu (<i>Business Object<\/i>).Rozszerzenia Obiekt\u00f3w maj\u0105 ten sam klucz podstawowy co Obiekt Biznesowy, w\u0142\u0105czaj\u0105c w to <code>validFrom<\/code> (data obowi\u0105zywania), je\u015bli Obiekt Biznesowy jest zale\u017cny od czasu. Dla ka\u017cdej instancji Obiektu Biznesowego mo\u017ce istnie\u0107 maksymalnie jedna instancja dynamicznego Obiektu Biznesowego. Rozszerzenia Obiekt\u00f3w musz\u0105 by\u0107 zawsze przechowywane jako tabele bazy danych i mo\u017cna je \u0142atwo do\u0142\u0105cza\u0107 (<i>join<\/i>) do Obiektu Biznesowego w j\u0119zyku OQL za pomoc\u0105 klauzuli <code>DYNAMIC_OBJECT JOIN<\/code>.Rozszerzenia Obiekt\u00f3w s\u0105 wykorzystywane na przyk\u0142ad dla \u201einnych p\u00f3l\u201d i cech artyku\u0142\u00f3w. Rozszerzenia Obiekt\u00f3w utworzone za pomoc\u0105 interfejs\u00f3w w przestrzeni nazw <code>com.cisag.app.general.extension<\/code> maj\u0105 zazwyczaj tak\u0105 sam\u0105 nazw\u0119 (bez przestrzeni nazw) jak Obiekt Biznesowy, ale rozszerzon\u0105 o prefiks <code>EXT<\/code>. Na przyk\u0142ad <code>EXTItem<\/code> dla <code>com.cisag.app.general.obj.Item<\/code>.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"height: 46px; border-style: outset;\"><b>Obiekt dynamiczny<\/b><\/td>\n<td style=\"height: 46px; border-style: outset;\">Dynamiczne Obiekty Biznesowe typu<em> Obiekt dynamiczny<\/em>\u00a0s\u0105 samodzielne (stoj\u0105 same dla siebie).Obiekty dynamiczne nie s\u0105 przypisane \u017cadnemu Obiektowi Biznesowemu (<i>Business Object<\/i>) i maj\u0105 Guid jako klucz podstawowy. Obiekty dynamiczne mog\u0105 by\u0107 \u0142adowane za pomoc\u0105 tego Guid.Obiekty dynamiczne, kt\u00f3re s\u0105 przechowywane jako BLOB\u00a0s\u0105 wykorzystywane do przechowywania parametr\u00f3w w produkcji.<span style=\"font-size: revert; color: initial;\">Je\u015bli schemat jest zapisany w tabelach bazy danych i wymaganych jest zbyt wiele tabel bazy danych, zawarto\u015b\u0107 dynamicznego obiektu biznesowego jest kopiowana do nadmiarowego obiektu BLOB raz dla ka\u017cdego schematu podczas jego generowania.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Je\u015bli dla atrybut\u00f3w okre\u015blono klasyfikacje, a dynamiczny obiekt biznesowy jest przechowywany nadmiarowo w BLOB, system sprawdza, do ilu tabel bazy danych s\u0105 dystrybuowane atrybuty z t\u0105 sam\u0105 klasyfikacj\u0105 podczas generowania schematu. Je\u015bli atrybuty zosta\u0142y niepotrzebnie rozmieszczone w zbyt wielu tabelach bazy danych, tabele bazy danych s\u0105 usuwane, atrybuty s\u0105 redystrybuowane, a zawarto\u015b\u0107 tabel bazy danych jest odbudowywana z nadmiarowego BLOB.<br \/>\nArtyku\u0142 W\u0142a\u015bciwo\u015bci ERP opisuje w\u0142a\u015bciwo\u015bci, za pomoc\u0105 kt\u00f3rych mo\u017cna ustawi\u0107 warto\u015bci progowe dla korzystania z nadmiarowego BLOB i regeneracji w oparciu o dystrybucj\u0119 atrybut\u00f3w.<\/p>\n<h6 id=\"instrukcja-zmiany-schematu\" ><span class=\"ez-toc-section\" id=\"Instrukcja_zmiany_schematu\"><\/span>Instrukcja zmiany schematu<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Instrukcja zmiany schematu:<\/p>\n<ol>\n<li>Za\u0142adowa\u0107 schemat z mened\u017cera schemat\u00f3w w celu jego modyfikacji lub utworzenie nowego schematu. Nale\u017cy u\u017cy\u0107 jednej z metod getSchema, createSchema lub createExtensionSchema aby za\u0142adowa\u0107 lub utworzy\u0107 nowy schemat.<\/li>\n<li>Zmodyfikowa\u0107 lub rozszerzy\u0107 schemat. Schemat mo\u017cna modyfikowa\u0107 bezpo\u015brednio. Modyfikacja schematu staje si\u0119 trwa\u0142a dopiero po jego wygenerowaniu.<\/li>\n<li>Wygenerowa\u0107 schemat za pomoc\u0105 mened\u017cera schemat\u00f3w. Schemat jest generowany przy u\u017cyciu metody aktualizacji w mened\u017cerze schemat\u00f3w. Schemat jest generowany w oddzielnej transakcji najwy\u017cszego poziomu. Po jego wygenerowaniu mo\u017cna tylko tworzy\u0107 lub zmienia\u0107 instancje z nowym schematem.<\/li>\n<\/ol>\n<h6 id=\"przyklad-tworzenia-nowego-schematu\" ><span class=\"ez-toc-section\" id=\"Przyklad_tworzenia_nowego_schematu\"><\/span>Przyk\u0142ad tworzenia nowego schematu<span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Przyk\u0142ad tworzenia nowego schematu dla obiektu dynamicznego z atrybutem NAME typu <em>String bez warto\u015bci domy\u015blnej<\/em>:<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisEnvironment env =<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> CisEnvironment.getInstance();<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisDynamicObjectSchemaManager dosm =<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> env.getDynamicObjectSchemaManager();<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ create schema<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisDynamicObjectSchema schema = dosm.createSchema(<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> \"TestSchema\",<br \/>\nCisDynamicObjectSchema.DataKind.MASTER_DATA,<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> CisDynamicObjectSchema.StorageType.STORAGE_BLOB,<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> CisDynamicObjectSchema.CacheStrategy.LRU);<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ add attribute<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">schema.addColumn(<br \/>\n\"NAME\",<br \/>\nCisDynamicObjectSchema.DataType.STRING,<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> CisDynamicObjectSchema.Cardinality.VALUE,<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> (short)20,<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"> null);<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ generate schema<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">dosm.updateSchema(schema);<\/code><\/p>\n<p><\/div><\/section>\n<h5 id=\"dostep-do-instancji\" ><span class=\"ez-toc-section\" id=\"Dostep_do_instancji\"><\/span>Dost\u0119p do instancji<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Instancje dynamicznych obiekt\u00f3w biznesowych mog\u0105 by\u0107 \u0142adowane poprzez CisObjectManager za pomoc\u0105 metod getObject lub getObjectArray, zapisywane za pomoc\u0105 putObject i usuwane za pomoc\u0105 deleteObject, w taki sam spos\u00f3b jak instancje obiekt\u00f3w biznesowych.<br \/>\nNast\u0119puj\u0105ce klasy w przestrzeni nazw <em>com.cisag.pgm.datatype<\/em> s\u0142u\u017c\u0105 do uzyskiwania dost\u0119pu do instancji dynamicznych obiekt\u00f3w biznesowych:<\/p>\n<table style=\"width: 100%; height: 116px;\">\n<thead>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px; border-style: outset;\"><strong>Klasa<\/strong><\/td>\n<td style=\"height: 24px; border-style: outset;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 46px;\">\n<td style=\"height: 46px; border-style: outset;\"><b><code>com.cisag.pgm.datatype.CisDynamicObject<\/code><\/b><\/td>\n<td style=\"height: 46px; border-style: outset;\">Klasa <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisDynamicObject<\/code> reprezentuje instancj\u0119 dynamicznego Obiektu Biznesowego.Klasa ta posiada metody <span style=\"color: #1e1e1e; font-family: Menlo, Consolas, monaco, monospace;\"><span style=\"font-size: 14px; background-color: #dddddd;\">Get <\/span><\/span>i <span style=\"color: #1e1e1e; font-family: Menlo, Consolas, monaco, monospace;\"><span style=\"font-size: 14px; background-color: #dddddd;\">Set <\/span><\/span>dla ka\u017cdego typu danych, umo\u017cliwiaj\u0105ce dost\u0119p do atrybut\u00f3w dynamicznego Obiektu Biznesowego. Atrybut jest identyfikowany przez sw\u00f3j Guid. Guid atrybutu powi\u0105zany z jego nazw\u0105 mo\u017cna sprawdzi\u0107 (odpyta\u0107) na poziomie Schematu.Analogicznie do standardowych Obiekt\u00f3w Biznesowych, klasa <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisDynamicObject<\/code> posiada metody statyczne s\u0142u\u017c\u0105ce do:<\/p>\n<ul>\n<li>Generowania kluczy dla Persistence service (metody <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Build...Key<\/code>).<\/li>\n<li>Odpytywania wszystkich instancji powi\u0105zanych z danym schematem (metoda <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">retrieveInstances<\/code>).<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"height: 46px; border-style: outset;\"><b><code>com.cisag.pgm.datatype.CisDynamicObjectCodeValue<\/code><\/b><\/td>\n<td style=\"height: 46px; border-style: outset;\">Atrybuty o typie lista warto\u015bci s\u0105 zarz\u0105dzane jako lista obiekt\u00f3w <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisDynamicObjectCodeValue. <\/code><b><\/b>Elementy takiej listy warto\u015bci sk\u0142adaj\u0105 si\u0119 z 10-znakowego kodu oraz z warto\u015bci zgodnej z okre\u015blonym typem danych. Za pomoc\u0105 kodu mo\u017cna m.in. organizowa\u0107 (lub strukturyzowa\u0107) elementy listy warto\u015bci.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div id=\"model-response-message-contentr_32978dfa17394b81\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\">\n<p>Aby zmiany w Dynamicznych Obiektach Biznesowych mog\u0142y by\u0107 rejestrowane w dzienniku zmian, zmieniona instancja dynamicznego Obiektu Biznesowego musi m\u00f3c zosta\u0107 przypisana do instancji Jednostki Biznesowej (<i>Business Entity<\/i>).<\/p>\n<p>W przypadku Rozszerze\u0144 Obiekt\u00f3w do jednostek biznesowych, relacja ta mo\u017ce zosta\u0107 automatycznie utworzona. We wszystkich innych przypadkach relacja musi zosta\u0107 jawnie ustawiona podczas modyfikacji dynamicznego Obiektu Biznesowego.<\/p>\n<p>Relacja jest ustanawiana za pomoc\u0105 metody:<\/p>\n<div class=\"code-block ng-tns-c932493545-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c932493545-88\">\n<div class=\"animated-opacity ng-tns-c932493545-88\">\n<pre class=\"ng-tns-c932493545-88\"><code class=\"code-container formatted ng-tns-c932493545-88\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">set_entityKey<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">byte<\/span>[] entityTimeDependentKey)<\/span>\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p>Je\u015bli Jednostka (<i>Entity<\/i>) jest zale\u017cna od czasu, nale\u017cy ustawi\u0107 klucz podstawowy zale\u017cny od czasu; w przeciwnym razie \u2014 normalny klucz podstawowy na dynamicznym Obiekcie Biznesowym.<\/p>\n<p>W dynamicznym Obiekcie Biznesowym mo\u017cna r\u00f3wnie\u017c ustawi\u0107 Ci\u0105g Instancji (<i>InstanzString<\/i>) za pomoc\u0105:<\/p>\n<div class=\"code-block ng-tns-c932493545-89 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c932493545-89\">\n<div class=\"animated-opacity ng-tns-c932493545-89\">\n<pre class=\"ng-tns-c932493545-89\"><code class=\"code-container formatted ng-tns-c932493545-89\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">set_instanceString<\/span><span class=\"hljs-params\">(String instanceString)<\/span>\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p>Klucz Jednostki (<i>Entity-Key<\/i>) i Ci\u0105g Instancji musz\u0105 zosta\u0107 ustawione na instancji dynamicznego Obiektu Biznesowego zanim instancja zostanie przekazana do Mened\u017cera Transakcji za pomoc\u0105 metody <code>putObject<\/code>.<\/p>\n<\/div>\n<h5 id=\"dostep-za-pomoca-oql\" ><span class=\"ez-toc-section\" id=\"Dostep_za_pomoca_OQL\"><\/span>Dost\u0119p za pomoc\u0105 OQL<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Dost\u0119p do rozszerze\u0144 obiekt\u00f3w mo\u017cna uzyska\u0107 za po\u015brednictwem Persistence service i za pomoc\u0105 OQL. Je\u017celi jest mowa o dynamicznych obiektach biznesowych w tym rozdziale, odnosi si\u0119 to do rozszerze\u0144 obiekt\u00f3w.<br \/>\nDynamiczne obiekty biznesowe s\u0105 traktowane podobnie do zwyk\u0142ych obiekt\u00f3w biznesowych w OQL. Mo\u017cna utworzy\u0107 po\u0142\u0105czenie typu Left Outer Join mi\u0119dzy Obiektem Biznesowym a Dynamicznym Obiektem Biznesowym za pomoc\u0105 s\u0142owa kluczowego OQL:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">DYNAMIC_OBJECT<\/code><\/p>\n<p>W klauzuli <em>ON<\/em> por\u00f3wnywane s\u0105 tylko aliasy.<br \/>\nObiekt biznesowy mo\u017cna po\u0142\u0105czy\u0107 tylko z rozszerzeniem obiektu nale\u017c\u0105cym do tego obiektu biznesowego za pomoc\u0105 sprz\u0119\u017cenia. Na przyk\u0142ad mo\u017cna po\u0142\u0105czy\u0107 <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.app.general.obj.Partner <\/code>z rozszerzeniem obiektu EXTPartner, ale nie z rozszerzeniem obiektu EXTCustomer, kt\u00f3re nale\u017cy do obiektu biznesowego <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.app.sales.obj.Customer<\/code>.<\/p>\n<p>Techniczne nazwy atrybut\u00f3w dynamicznego Obiektu Biznesowego mog\u0105 by\u0107 u\u017cywane bezpo\u015brednio w OQL.<\/p>\n<ul>\n<li>Je\u015bli atrybut dynamicznego Obiektu Biznesowego jest typu Klucz Podstawowy,\u00a0mo\u017cna uzyska\u0107 dost\u0119p do atrybut\u00f3w klucza podstawowego referencyjnej Jednostki Biznesowej (<i>Business Entity<\/i>) za pomoc\u0105 kropki (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">.<\/code>), np. <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">PARTNER.guid<\/code>Je\u015bli atrybut ma typ danych <i>Part<\/i>, np. Ilo\u015b\u0107, Kwota, to do atrybut\u00f3w tej Parts mo\u017cna uzyska\u0107 dost\u0119p jak zwykle, r\u00f3wnie\u017c za pomoc\u0105 kropki (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">.<\/code><span style=\"color: initial;\">)<\/span>, np. <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">QUANTITY.amount<\/code>.<\/li>\n<\/ul>\n<p>W przypadku List Warto\u015bci mo\u017cna u\u017cy\u0107 nazwy pola listy warto\u015bci w nawiasach za nazw\u0105 dynamicznego Obiektu Biznesowego podczas operacji <i>join<\/i> (po\u0142\u0105czenia). W takim przypadku to nie tabela dynamicznego Obiektu Biznesowego, lecz tabela Listy Warto\u015bci jest \u0142\u0105czona z Jednostk\u0105 Biznesow\u0105 (<i>Business Entity<\/i>).<\/p>\n<p>Atrybut <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">_code<\/code> zawiera kod z listy warto\u015bci. Za pomoc\u0105 kodu mo\u017cna na przyk\u0142ad sortowa\u0107. Warto\u015bci Listy Warto\u015bci mo\u017cna odpytywa\u0107 tak samo jak w przypadku atrybut\u00f3w typu Warto\u015b\u0107, jednak atrybut <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">_code<\/code> musi by\u0107 uj\u0119ty w cudzys\u0142owy.<\/p>\n<p>Wi\u0119cej informacji mo\u017cna znale\u017a\u0107 w artykule:<a title=\"Sk\u0142adnia OQL\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/skladnia-oql\/\"><em> Sk\u0142adnia OQL.<\/em><\/a><\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Dynamiczny obiekt biznesowy EXTPartner zawiera pozosta\u0142e pola podmiotu biznesowego Partner. EXTPartner ma nast\u0119puj\u0105ce pola:<\/p>\n<table style=\"width: 99.2849%;\">\n<thead>\n<tr>\n<td style=\"width: 131px; border-style: outset;\"><strong>Pole<\/strong><\/td>\n<td style=\"width: 703px; border-style: outset;\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"width: 131px; border-style: outset;\"><code>MY_STR<\/code><\/td>\n<td style=\"width: 703px; border-style: outset;\">Pole przechowuj\u0105ce pojedyncz\u0105 warto\u015b\u0107 typu <em>Tekst<\/em>.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 131px; border-style: outset;\"><code>MY_PARTNER<\/code><\/td>\n<td style=\"width: 703px; border-style: outset;\">Pole przechowuj\u0105ce pojedyncz\u0105 warto\u015b\u0107 typu <em>Jednostka Biznesowa <\/em>(referencja do obiektu biznesowego).<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 131px; border-style: outset;\"><code>MY_QUANTITY<\/code><\/td>\n<td style=\"width: 703px; border-style: outset;\">Pole przechowuj\u0105ce pojedyncz\u0105 warto\u015b\u0107 typu <em>Ilo\u015b\u0107 <\/em>(warto\u015b\u0107 numeryczna z jednostk\u0105).<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 131px; border-style: outset;\"><code>MY_STR_LIST<\/code><\/td>\n<td style=\"width: 703px; border-style: outset;\">Pole przechowuj\u0105ce list\u0119 warto\u015bci typu <em>Tekst<\/em>.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 131px; border-style: outset;\"><code>MY_PARTNER_LIST<\/code><\/td>\n<td style=\"width: 703px; border-style: outset;\">Pole przechowuj\u0105ce list\u0119 warto\u015bci typu <em>Jednostka Biznesowa <\/em>(lista referencji).<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 131px;\"><code>MY_QUANTITY_LIST<\/code><\/td>\n<td style=\"width: 703px;\">Pole przechowuj\u0105ce list\u0119 warto\u015bci typu <em>Ilo\u015b\u0107<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Dost\u0119p do atrybut\u00f3w typu value mo\u017cna uzyska\u0107 w nast\u0119puj\u0105cy spos\u00f3b:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">SELECT p:guid, pe:MY_STR, pe:MY_PARTNER.guid, pe:MY_QUANTITY.amount<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">EXTPartner pe ON p=pe<\/code><\/p>\n<p>Dost\u0119p do atrybut\u00f3w typu listy warto\u015bci mo\u017cna uzyska\u0107 w nast\u0119puj\u0105cy spos\u00f3b:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">SELECT p:guid, pe:\"_code\", ep:MY_STR_LIST<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">EXTPartner(MY_STR_LIST) pe ON p=pe<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">SELECT p:guid, pe:\"_code\", pe:MY_PARTNER_LIST.guid<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">EXTPartner(MY_PARTNER_LIST) pe ON p=pe<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">SELECT p:guid, pe:\"_code\",<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pe:MY_QUANTITY_LIST.uom, pe:MY_QUANTITY_LIST.amount<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN<br \/>\n<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">EXTPartner(MY_QUANTITY_LIST) pe ON p=pe<\/code><\/p>\n<p><\/div><\/section>\n","protected":false},"author":28,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-9661","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-interfejsy-techniczne"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/comments?post=9661"}],"version-history":[{"count":15,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9661\/revisions"}],"predecessor-version":[{"id":39266,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9661\/revisions\/39266"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/media?parent=9661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}