„Jak mohu zjistit dataClass entity? Potřebuji ji, abych mohl psát obecné metody.“„Potřebuji informace o poli v dataClass: jaký je jeho typ? Je indexované? Je unikátní?„. To jsou typy otázek, které jsme od vás slyšeli na fóru. 4D v17 R5 poskytuje odpovědi: zavádí nové členské metody ORDA, které poskytují užitečné informace o vaší databázi. Čtěte dál, protože oceníte výhody, které přináší snížení velikosti vašeho kódu a jeho opakované použití a snadná údržba!
HDI: Příklad získávání informací o struktuře databáze pomocí ORDA
Nyní můžete získat informace související se strukturou, například číslo tabulky nebo pole. To může být užitečné při postupné integraci ORDA do vašeho klasického 4D kódu. Hlavním účelem těchto členských metod je však poskytnout vám způsob, jak psát obecný kód, který je použitelný bez ohledu na strukturu databáze.
Získání třídy dataClass entity nebo výběru entity
datová třída entity
Jaká radost mít chytrou entitu, která zná svou vlastní dataClass!
Na adrese . getDataClass() Členská metoda vrací objekt dataClass odpovídající entitě. Poté můžete zavolat libovolnou členskou metodu dostupnou na objektu dataClass.
V níže uvedeném příkladu voláme new() členskou metodu. Ta vytvoří novou entitu z poskytnuté entity a zkopíruje údaje o adrese. Obdržíme také objekt obsahující název vlastnosti a její hodnotu pro nově vytvořenou entitu.
C_OBJECT($1;$entity;$entityContent;$newEntity;$status)
C_OBJECT ($2;$attribute)
$entity :=$1
$attribute :=$2
$newEntity :=$entity.getDataClass().new()
$entityContent :=$entity.toObject("adresa.*")
//We copy address from the received entity
$newEntity.fromObject($entityContent)
//We fill the created entity with received property name and value
$newEntity [$attribute.name]:=$attribute.value
$status :=$newEntity.save()
datová třída pro výběr entit
Adresa getDataClass() member vrátí objekt dataClass odpovídající výběru entity. Níže uvedená metoda přijímá výběr entity a vytváří nové entity se stejnými údaji o adrese.
C_OBJECT($1;$inputSelection;$newEntitySelection)
C_COLLECTION ($esContent)
$inputSelection :=$1
alert (String($inputSelection.length) + " entity budou duplikovány")
$esContent :=$inputSelection.toCollection("adresa")
$newEntitySelection :=$inputSelection.getDataClass().fromCollection($esContent)
alert (String($newEntitySelection.length) + " entity byly vytvořeny")
získání informací o datové třídě
Adresa getInfo() member dostupná na objektu dataClass, vrací také užitečné informace. V níže uvedeném příkladu získáme ID odpovídající primárnímu klíči třídy Persons dataClass, a poté načteme odpovídající entity.
C_OBJECT($es;$settings)
$settings :=New object
$settings .parameters:=New object("receivedIds";getIds ())
// The getIds() method returns a collection of IDs
$settings .attributes:=New object("pk";ds.Persons.getInfo().primaryKey)
$es :=ds.Persons.query(":pk in :receivedIds";$settings)
atribut datové třídy
Ve verzi 4D V17.0 jste se naučili, že každý atribut dataClass je objekt. Nyní byly rozšířeny o konceptuální a strukturální informace.
Zde je rychlý příklad.
C_TEXT($text)
$text :=JSON Stringify(ds.Cats.ID)
//$text =
//{"name":"ID","kind":"storage","type":"number","indexed":true,
//"keywordIndexed":false,"autoFilled":true,"mandatory":true,"unique":true,
//"fieldNumber":1,"fieldType":9}
Stáhněte si výše uvedený HDI a dozvíte se více! A nezapomeňte se podívat do centra dokumentů.